[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

WO2020193351A1 - Computerised processing of a sequence of computing agents implemented by a set of different technologies - Google Patents

Computerised processing of a sequence of computing agents implemented by a set of different technologies Download PDF

Info

Publication number
WO2020193351A1
WO2020193351A1 PCT/EP2020/057572 EP2020057572W WO2020193351A1 WO 2020193351 A1 WO2020193351 A1 WO 2020193351A1 EP 2020057572 W EP2020057572 W EP 2020057572W WO 2020193351 A1 WO2020193351 A1 WO 2020193351A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
nodes
graph
agent
skeleton
Prior art date
Application number
PCT/EP2020/057572
Other languages
French (fr)
Inventor
Cédric CHARIERE FIEDLER
Rémy MALGOUYRES
Original Assignee
Universite Clermont Auvergne
Centre National De La Recherche Scientifique
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Universite Clermont Auvergne, Centre National De La Recherche Scientifique filed Critical Universite Clermont Auvergne
Publication of WO2020193351A1 publication Critical patent/WO2020193351A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Definitions

  • the present invention relates to the automated sequencing of computer processing on data such as, for example, digital imaging data. It relates more particularly to the sequence of treatments resulting from different technologies, that is to say, in particular, from separate processing platforms.
  • the automated processing of digital data generally involves the linking of a number of sub-processes in order to achieve a desired result.
  • These sub-processing can be very specific or more general, and, essentially in the latter case, they can be offered by different technologies as so many implementations.
  • a process for processing and analyzing images of biological origin may consist of a set of processing consisting of
  • each step of the process can be implemented by an existing technology (an analysis or image processing tool or software, etc.), but each tool is associated with particular modalities, coming from its field of expertise. normal operation, and having implications in particular on its interfaces (input and output data formats, etc.).
  • the aim of the present invention is to provide a solution at least partially overcoming the aforementioned drawbacks.
  • the present invention therefore aims to improve the situation by proposing a solution making it possible to make various tools interoperate, by automating the interfaces between these tools as well as the selection of the technology making it possible to implement a step of a complex processing.
  • the present invention proposes a method for the execution of a processing composed of a set of calculation agents on a data processing platform, each agent associating a routine with methods of execution of said routine. , and said method comprising
  • an execution step consisting in orderly calling the software modules corresponding to said optimal graph and ensuring the translations and synchronization of data between each call.
  • the invention comprises one or more of the following features which can be used separately or in partial combination with one another or in total combination with one another:
  • the costs assigned to each node of said exhaustive graph include an execution time, and the costs assigned to each transition include a data translation time between the technology environments of the software modules associated with the nodes concerned, and a data transfer time ;
  • each node of said skeleton is associated an executor instantiating said execution modalities associated with the agent corresponding to said node;
  • said skeleton comprises generic nodes each corresponding to a calculation agent that can be implemented by at least two software modules, and specific nodes each corresponding to a calculation agent that can be implemented by a single software module.
  • Another aspect of the invention relates to a device for the execution of a computer processing composed of a set of routines on a multi-technological platform comprising means for
  • the invention comprises one or more of the following features which can be used separately or in partial combination with one another or in total combination with one another:
  • the costs assigned to each node of said exhaustive graph include an execution time, and the costs assigned to each transition include a data translation time between the technology environments of the software modules associated with the nodes concerned, and a data transfer time ;
  • the device comprises means for, with each node of said skeleton, associate an executor instantiating said execution modalities associated with the agent corresponding to said node.
  • said skeleton comprises generic nodes each corresponding to a calculation agent that can be implemented by at least two software modules, and specific nodes each corresponding to a calculation agent that can be implemented by a single software module.
  • Another aspect of the invention relates to a system for the execution of computer processing composed of a set of calculation agents, comprising a device as defined above, as well as software applications making said software modules available to said software. device.
  • Figure 1 schematically shows a functional flowchart according to one embodiment of the invention.
  • Figure 2 schematically shows examples of patterns for the formation of skeletons according to one embodiment of the invention.
  • Figures 3a, 3b, 3c schematically show examples of skeletons according to one embodiment of the invention.
  • the invention can be applied to the processing of digital images, for example medical images or images of organic tissues in order to establish information on cell composition.
  • the invention relates to a method and a device for executing such a processing chain on an information processing platform.
  • This platform can be a server or a set of computer servers, of the “server farm” type, optionally virtualized and abstract in the form of a “cloud” (or “cloud” according to the more usual English terminology).
  • the device can form a "core" of a more complete software tool chain offering different services to help the developer of the processing chain to put it in place in practice on the platform.
  • this core and these ancillary tools, as well as the process make the technological aspects transparent for these developers in order to allow people specializing in a field of application (medical imaging, biological imagery, etc.) to use tools originating from third-party technologies without resorting to specific knowledge of these technologies, and without using advanced computer skills.
  • a processing can be defined by a set of software agents, or calculation agents, each representing a "sub-processing".
  • An agent can be defined, in general, by an association between one or more software routines, and the methods of execution of these routines. These modalities define the technical needs for executing the routine (s): CPU resources, memory resources, communication resources, etc.
  • agent as a technological instance dedicated to the execution of a specific routine, itself being the specialization of a so-called generic (or semantic) routine.
  • An agent thus has a processing objective, execution resources and the ability to communicate with the core of the application.
  • FIG. 1 schematically shows a functional flowchart of an implementation of the method according to the invention.
  • phase P1 corresponds to the generation of an execution sequence corresponding to the processing chain
  • P2 corresponds to the orchestration of the actual execution of the execution sequence
  • the first phase P1 comprises a first step S1, consisting in providing a representation of this processing chain in the form of a skeleton made up of an oriented set of nodes, each node corresponding to an agent of the processing chain.
  • This step S1 therefore takes as input a first representation of the processing which may be dependent on any formalization technology and aims to transform it into a second representation in the form of a skeleton.
  • this step S1 can comprise a "deserialization", according to which the execution model is translated by the kernel from a descriptive language (xml, yaml, json ...) to a representation object of our approach of the algorithmic skeleton.
  • the execution model thus describes the executors, the routines to be applied and the sequences of processes.
  • a skeleton as a high-level model of representations of a processing particularly suited to the description of the aspects of high-level parallelizations and distribution of calculations.
  • a skeleton can be considered, and constructed, as the composition of particular patterns, each of which can itself be a sub-skeleton, and this in a recursive manner.
  • Terminal patterns fit as a minimal skeletal element. These are the “map”, “split” and “reduce” patterns.
  • Figure 2 illustrates 4 patterns: "map”, “pipe”, “farm” and “reduce”. This list is not exhaustive. Thus, for example, the “split” pattern can be added, which makes it possible to transform a data flow into several outgoing flows.
  • the "map” pattern describes the application of a particular algorithm to each element of a collection.
  • the "pipe” motif is a succession of “map” motifs.
  • the "farm” pattern designates the parallel application of several “map” patterns.
  • the “reduce” pattern synthesizes several data to return only one (the sum of terms, for example).
  • a skeleton can be seen as a tree structure, each node of which corresponds to an agent, and each agent representing an "under treatment".
  • FIG. 3a shows schematically an example of a backbone for a treatment consisting of a chain of sub-treatments, or agents, 31, 32, 33, 34.
  • this skeleton is broken down into an exhaustive graph, that is to say incorporating the possible implementations of a given agent by available software modules.
  • a rebalancing of the white balance in an image can be an agent that can be implemented by software modules offered by various digital image processing applications. These software modules correspond to distinct "technologies”, characterized by specific operating methods (data structures, calculation time, performance, etc.).
  • a specific node can only be implemented by a single technology (ie by a single software module), while a generic node can be implemented by at least two technologies (or software modules).
  • a choice must therefore be made, and one of the advantages of the invention is to allow an automatic and transparent choice of the implementation of a generic node.
  • the different implementations of an agent can be stored in a data structure in order to be able, from a generic node, to determine the set of possible implementations.
  • an exhaustive graph can be constructed by replacing, if necessary, each node of the skeleton by a group of nodes, in which each node corresponds to a software module that can implement the corresponding agent. to the replaced node.
  • each node corresponds to a software module that can implement the corresponding agent.
  • the replaced node corresponds directly to the (unique) software module implementing the agent in question, there is no sense in replacing it (or else, we can consider that it is replaced by a group formed by a singleton).
  • this notion of skeleton introduces a notion of recursion: each element, or pattern, of a skeleton can form a sub-skeleton which can itself also be broken down into sub-skeleton. skeletons and so on up to elementary patterns, forming leaves of the global tree.
  • This skeleton can therefore be considered as a multi-level descriptive model, integrating within them the model relating to the execution environment.
  • an execution agent can be the aggregation of a set of sub-agents dedicated to tasks which are specific to them.
  • FIG. 3b illustrates such an exhaustive graph based on the example of FIG. 3a.
  • the “textures” inside the nodes correspond to the technologies.
  • the nodes 31 and 33 thus correspond to distinct technologies (that is to say which must be implemented by distinct modules) while the nodes 32 and 34 are generic nodes (in white). In this example, it is assumed that two software modules are available.
  • Node 31 is a specific node, that is to say that only one software module available makes it possible to implement it. This node is therefore kept in the exhaustive graph as it is.
  • Node 32 is a generic node, it is therefore replaced by a group 32a, 32b, each of these two nodes corresponding to the two software modules making it possible to implement the agent of node 32.
  • Node 33 is a specific node; it is therefore kept in the exhaustive graph as it is.
  • Node 34 is a generic node, it is therefore replaced by a group 34a, 34b, each of these two nodes corresponding to the two software modules making it possible to implement the agent of node 34.
  • the exhaustive graph is a directed graph going from the data to be processed towards the final result.
  • Each node corresponds to a calculation routine.
  • the nodes of the same level correspond to a technological alternative.
  • Each generic agent generates as many alternative paths as there are technologies implementing a solution to this routine.
  • a step S3 costs are assigned to each node and to each transition between the nodes.
  • the costs assigned to a node can include, in particular, an execution time. Costs allocated to transitions between nodes may include data transfer times between the kernel and software modules as well as the translation times of data to and from these software modules. Indeed, each software module (technology) is associated with data formats particular and format changes necessarily imply specific computing times.
  • a step S4 an optimal graph is determined by choosing a path minimizing these costs.
  • FIG. 3c illustrates such an optimal graph in the case of the example of FIGS. 3a and 3b.
  • the choice of a path passes through the selection of a single node for each group of nodes of the same level, that is to say corresponding to the same calculation agent.
  • this step consists in selecting, for each agent, a software module making it possible to implement it.
  • a step S5 the processing composed of all the calculation agents can be executed on the processing platform by orchestrating the calls to the different software modules. More precisely, it is a question of traversing the optimal graph and of calling sequentially the software modules of each node while ensuring the translations and synchronization between each call.
  • the kernel ensures the translations of the data from the format associated with the upstream module to the format associated with the downstream module.
  • the nodes 31 and 32b correspond to distinct software modules, a data translation is therefore necessarily set up by the kernel to translate the result of the execution of the node 31 as input node 32b.
  • the kernel also provides synchronization, that is, the transmission of data to and from each software module.
  • the implementation of these transmissions depends on the underlying processing platform and on the software applications making available the software modules implementing the calculation agents. For example, the transmissions can be ensured by mechanisms of shared memory spaces ("memory mapping"), or of a file, or of a data stream in the case of a distributed topology of the processing platform under - underlying.
  • the agents represent associations between one or more routines and the execution modalities instantiated by executors (or “executors” in the English language). These executors are abstractions of several elements dedicated to the execution of a routine. Standardization works (RFC C ++ 20/23) propose a formalization of this notion of executor. The approach described here is generalized in order to take into account multiprocess distribution on runtime resources.
  • the Java standard library also provides interpretation and implementation of executors, differing in particular in the options configurable at runtime.
  • An executor can contain a set of models, metadata describing the execution resources, the context the agents performing the calculations.
  • the execution resources are the calculation units that can be used by the program.
  • a CPU or a GPU is thus a resource.
  • the execution resource model thus describes the fundamental functionalities of this resource: its ability to vectorize calculations, its fundamental performance measurement operations, its memorization skills, etc.
  • the execution context and an aggregation of a resource and a set of agents are described how to execute routines with a resource, through agents.
  • Agents correspond to the fundamental units of execution of a computation, such as a thread (or thread of execution). Each agent performs a task.
  • execution strategy of an executor can be configured by defining strategies. The latter make it possible to characterize the prioritization of the execution of the tasks (first arrival, first executed, for example) and the way of aggregating the subnodes of a pattern of the skeleton.
  • the data synchronization is thus managed by the skeleton without any possible parameterization and is made implicit for the developer. If the implicit approach makes it possible to facilitate the writing of a source code for the developer, the opportunity of clarification allows optimizations in the writing of the source code and a choice in the distribution of calculation.
  • the determination of the real resources allocated to the resources expressed by the executors is made at the time of the execution of the kernel, that is to say according to the resources actually available.
  • step S2 of decomposing the skeleton into an exhaustive graph an executor is associated with each node. If this has not been previously determined (which is the case when a generic node is broken down into a group of nodes), By default, a node inherits from the executor from its parent node.
  • the executors can be used to define the data synchronization steps.
  • each node of the optimal graph is necessarily linked to an executor.
  • a node submits a task, in the execution step S5, it submits it to the associated executor.
  • An example of applications can be a string data processing allowing the automatic generation of the thumbnail of an image.
  • This thumbnail smaller in size than the original image, is a miniature representing the significant part of the original image.
  • This chain can include a user interface and a set of algorithmic processing.
  • the user interface can be implemented via a web service, using an http request.
  • the user can transmit the image in two ways: by specifying a valid link (or URL) to download it, or by indicating the content of the image in base64 format.
  • the set of algorithmic processing then includes:
  • the reusability of a source code here defines its potential for reuse in different contexts. This makes it possible to capitalize on elements already designed upstream of an IT project and to reduce its development costs.
  • Interoperability of a program refers to its ability to communicate with other programs. We use the term native interoperability to classify two computer programs communicating with the same data formats and not requiring translation of said data to be used.
  • the strong interoperability of a system (program, library, service) makes it possible to make it reusable, and therefore to reduce subsequent development costs.
  • Distributing a program is the act of running all or part of a program multiple times, potentially on multiple machines. Thus, all of these instances of these distributed elements can simultaneously perform similar operations. Like parallelization, distribution can increase software performance by increasing the number of similar tasks performed at the same time.
  • a- a first approach consists in writing the program in a single language
  • the developer uses a unique language to write the source code for this program, he can draw on already existing libraries for each of these parts (if they exist) and make them work together.
  • OpenCV allows to translate the image from a format into a format usable for computation, by relying on other libraries such as libpng, libjpeg, libtiff ...
  • the standard C ++ library is used to generate a link to an image -
  • the dedicated Amazon Web Services tool (AWS SDK) allows the result to be uploaded to a remote storage space so that the user can download it
  • the developer can separate each step of his process, thanks to libraries. This allows the writing of another image processing product to reuse these pieces of software without having to rewrite them. This approach allows reusability but absolutely does not take into account the acceleration character of the calculation by distributing it.
  • SLURM provides services to distribute a process across a set of computers
  • OpenMPI provides functionality to make them communicate with each other. Thus, several instances of the same program are executed simultaneously.
  • the interoperability is thus local, since two processes made communicating in this way act like a program integrating a library.
  • the particular advantage is the performance obtained by the absence of the need to translate a data format a into data format b. However, it is necessary to perform this native binding step for each technology association.
  • the main advantage is the certain time savings.
  • the developer can design reusable modules in different technologies (C ++, Java, C # %) and describe the sequences of each step from a macro point of view. If he wishes, he can explain the detailed way in which each step will be executed by specifying the type of task (generic or specific task) and the type of computation resource used (which machine will be used). Otherwise, the inventive solution proposes to resolve this question by using heuristics dedicated to optimizing the calculations according to the types of data, the required process steps and the machine infrastructure made available.
  • the following table makes it possible to put in correspondence the approaches of the state of the art described (a, b, c, d, e) and that based on an embodiment of the invention, according to the three evaluation criteria ( reusability, interoperability, distribution) and development time.
  • a score is assigned to each approach and for each criterion ranging from 0 to 3 for the first three and from 1 to 5 for the estimated development time (1 being the shortest).

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

Disclosed is a method for executing a processing operation consisting of a set of computing agents on a data processing platform, each agent associating a routine with methods for executing the routine, and the method comprising - a step (S1) of providing a representation of the computer processing operation in the form of a skeleton composed of an oriented set of nodes, each node corresponding to one of the computing agents; - a step (S2) of decomposing the skeleton in an exhaustive graph in which the set of software modules that can implement each of the agents is determined, and, if applicable, each node is replaced by a group of nodes, each node of the group corresponding to a software module that can implement the agent corresponding to the replaced node; - a step (S3) of assigning costs to each node in the exhaustive graph, and to each transition between nodes; - a step (S4) of determining an optimal graph by maintaining a path of the graph minimising the costs; - an execution step (S5) consisting in calling, in an ordered manner, the software modules corresponding to the optimal graph, and ensuring the translations and synchronisation of data between each call.

Description

Description Description
Titre de l'invention : Traitement informatisé d’un enchaînement d’agents de calcul mis en œuvre par un ensemble de technologies distinctes Title of the invention: Computerized processing of a chain of computational agents implemented by a set of distinct technologies
La présente invention concerne l'enchaînement automatisé de traitements informatiques sur des données telles que, par exemple, des données d'imagerie numérique. Elle concerne plus particulièrement l’enchaînement de traitements issus de technologies différentes, c'est-à-dire, notamment, de plateformes de traitement distinctes. The present invention relates to the automated sequencing of computer processing on data such as, for example, digital imaging data. It relates more particularly to the sequence of treatments resulting from different technologies, that is to say, in particular, from separate processing platforms.
Contexte de l’invention Background of the invention
Le traitement automatisé de données numériques implique généralement l’enchaînement d'un certain nombre de sous-traitements afin d'aboutir à un résultat recherché. Ces sous-traitements peuvent être très spécifiques ou plus généraux, et, essentiellement dans ce dernier cas, ils peuvent être offerts par des technologies différentes comme autant d'implémentations. The automated processing of digital data generally involves the linking of a number of sub-processes in order to achieve a desired result. These sub-processing can be very specific or more general, and, essentially in the latter case, they can be offered by different technologies as so many implementations.
Ainsi, par exemple, un processus de traitement et d'analyse d'images d'origine biologique peut consister en un ensemble de traitements consistant à Thus, for example, a process for processing and analyzing images of biological origin may consist of a set of processing consisting of
-visualiser des images de cellule par le biais de logiciels propriétaires des microscopes. Chaque image est enregistrée indépendamment sur le système de l'utilisateur ; -visualize images of cells using proprietary software for microscopes. Each image is saved independently on the user's system;
-puis, sur chaque image est appliquée un ensemble d'algorithme de traitement afin d'extraire des informations particulières (position des noyaux de cellule, indicateurs de la forme des cellules, etc.) ; then, on each image is applied a set of processing algorithms in order to extract particular information (position of the cell nuclei, indicators of the shape of the cells, etc.);
-ces données sont ensuite stockées sur un tableau. Leur analyse statistique est réalisée par la composition de macro-fonctions du tableau (par exemple, le logiciel Excel) et de scripts en langage Python par exemple. -this data is then stored on an array. Their statistical analysis is carried out by the composition of macro-functions of the table (for example, the Excel software) and of scripts in Python language for example.
La durée d'un tel processus pour être de plusieurs heures. En outre, un besoin d'automatisation existe afin de libérer les opérateurs humains (chercheurs, techniciens...) de tâches longues et fastidieuses, et de diminuer le coût du processus. The duration of such a process to be several hours. In addition, there is a need for automation in order to free human operators (researchers, technicians, etc.) from long and tedious tasks, and to reduce the cost of the process.
Si des outils existent pour certaines étapes de la chaîne de traitement, d'autres ne sont pas automatisés, comme notamment la liaison entre les étapes qui reste essentiellement manuelle dans les solutions de l'état de l'art (copie des images, formatage des données....) While tools exist for certain stages of the processing chain, others are not automated, such as the link between the stages which remains essentially manual in state-of-the-art solutions (copying images, formatting data, etc.)
En outre, chaque étape du processus peut être mise en oeuvre par une technologie existante (un outil ou logiciel d'analyse ou de traitement d'image...), mais chaque outil est associé à des modalités particulières, issues de son domaine d'opération normal, et ayant des implications notamment sur ses interfaces (formats des données d'entrée, de sortie...). In addition, each step of the process can be implemented by an existing technology (an analysis or image processing tool or software, etc.), but each tool is associated with particular modalities, coming from its field of expertise. normal operation, and having implications in particular on its interfaces (input and output data formats, etc.).
Ainsi, différents outils de traitement d'image existent (OpenCV, ImageJ, ITK...), mais chacun possède des spécificités car issus d'un domaine distinct et répondant aux exigences de métiers différents (imagerie médicale, imagerie spatiale, etc.) Thus, different image processing tools exist (OpenCV, ImageJ, ITK ...), but each has specificities because it comes from a separate field and meets the requirements of different professions (medical imaging, spatial imaging, etc.)
Par nature, ces outils ne sont pas nativement interopérables. Bien que l'utilisation de solutions dites de "bindings" permette d'utiliser OpenCV en langage Java, la traduction entre les structures de données n'est pas fournie et l'utilisateur doit donc développer les éléments nécessaires. By nature, these tools are not natively interoperable. Although the use of so-called "bindings" solutions makes it possible to use OpenCV in Java language, the translation between the data structures is not provided and the user must therefore develop the necessary elements.
Résumé de l’invention Summary of the invention
Le but de la présente invention est de fournir une solution palliant au moins partiellement les inconvénients précités. The aim of the present invention is to provide a solution at least partially overcoming the aforementioned drawbacks.
Plus particulièrement, la présente invention vise donc à améliorer la situation en proposant une solution permettant de faire interopérer des outils variés, en automatisant les interfaçages entre ces outils ainsi que la sélection de la technologie permettant d'implémenter une étape d'un traitement complexe. More particularly, the present invention therefore aims to improve the situation by proposing a solution making it possible to make various tools interoperate, by automating the interfaces between these tools as well as the selection of the technology making it possible to implement a step of a complex processing.
A cette fin, la présente invention propose un procédé pour l’exécution d’un traitement composé d’un ensemble d’agents de calcul sur une plateforme de traitement de données, chaque agent associant une routine à des modalités d’exécution de ladite routine, et ledit procédé comprenant To this end, the present invention proposes a method for the execution of a processing composed of a set of calculation agents on a data processing platform, each agent associating a routine with methods of execution of said routine. , and said method comprising
une étape de fourniture d’une représentation dudit traitement informatique sous la forme d’un squelette composé d’un ensemble orienté de noeuds, chaque nœud correspondant à un desdits agents de calcul ; a step of providing a representation of said computer processing in the form of a skeleton composed of an oriented set of nodes, each node corresponding to one of said calculation agents;
une étape de décomposition dudit squelette en un graphe exhaustif dans laquelle on détermine l’ensemble des modules logiciels pouvant mettre en œuvre chacun desdits agents, et on remplace le cas échéant chaque nœud par un groupe de nœuds, chaque nœud dudit groupe correspondant à un module logiciel pouvant mettre en oeuvre l’agent correspondant au nœud remplacé ; a step of decomposing said skeleton into an exhaustive graph in which all the software modules that can implement each of said agents are determined, and each node is replaced, where appropriate, by a group of nodes, each node of said group corresponding to a software module capable of implementing the agent corresponding to the replaced node;
une étape d’affectation de coûts à chaque nœud dudit graphe exhaustif, et à chaque transition entre nœuds ; a step of assigning costs to each node of said exhaustive graph, and to each transition between nodes;
une étape de détermination d’un graphe optimal en conservant un chemin dudit graphe minimisant lesdits coûts ; a step of determining an optimal graph by keeping a path of said graph minimizing said costs;
une étape d’exécution consistant à appeler de façon ordonnée les modules logiciels correspondant audit graphe optimal et à assurer les traductions et synchronisation de données entre chaque appel. an execution step consisting in orderly calling the software modules corresponding to said optimal graph and ensuring the translations and synchronization of data between each call.
Suivant des modes de réalisation préférés, l’invention comprend une ou plusieurs des caractéristiques suivantes qui peuvent être utilisées séparément ou en combinaison partielle entre elles ou en combinaison totale entre elles : According to preferred embodiments, the invention comprises one or more of the following features which can be used separately or in partial combination with one another or in total combination with one another:
- les coûts affectés à chaque nœud dudit graphe exhaustif comprennent un temps d’exécution, et les coûts affectés à chaque transition comprennent un temps de traduction des données entre les environnements technologies des modules logiciels associés aux nœuds concernés, et un temps de transfert des données ; the costs assigned to each node of said exhaustive graph include an execution time, and the costs assigned to each transition include a data translation time between the technology environments of the software modules associated with the nodes concerned, and a data transfer time ;
- à chaque nœud dudit squelette est associé un exécuteur instanciant lesdites modalités d’exécution associé à l’agent correspondant audit nœud ; ledit squelette comporte des nœuds génériques correspondant chacun à un agent de calcul pouvant être mis en œuvre par au moins deux modules logiciels, et des nœuds spécifiques correspondant chacun à un agent de calcul pouvant être mis en œuvre par un unique module logiciel. - with each node of said skeleton is associated an executor instantiating said execution modalities associated with the agent corresponding to said node; said skeleton comprises generic nodes each corresponding to a calculation agent that can be implemented by at least two software modules, and specific nodes each corresponding to a calculation agent that can be implemented by a single software module.
Un autre aspect de l’invention concerne un dispositif pour l’exécution d’un traitement informatique composé d’un ensemble de routines sur une plateforme multi- technologique comprenant des moyens pour Another aspect of the invention relates to a device for the execution of a computer processing composed of a set of routines on a multi-technological platform comprising means for
- fournir une représentation dudit traitement informatique sous la forme d’un squelette composé d’un ensemble orienté de nœuds, chaque nœud correspondant à un desdits agents de calcul; - provide a representation of said computer processing in the form of a skeleton made up of an oriented set of nodes, each node corresponding to one of said calculation agents;
- décomposer ledit squelette en un graphe exhaustif en déterminant l’ensemble des modules logiciels pouvant mettre en œuvre chacune desdits agents, et remplaçant, le cas échéant, chaque nœud par un groupe de nœuds, chaque nœud dudit groupe correspondant à un module logiciel pouvant mettre en œuvre l’agent correspondant au nœud remplacé ; - breaking down said skeleton into an exhaustive graph by determining the set of software modules that can implement each of said agents, and replacing, if necessary, each node by a group of nodes, each node of said group corresponding to a software module capable of implementing the agent corresponding to the replaced node;
- affecter des coûts à chaque nœud dudit graphe exhaustif, et à chaque transition entre nœuds ; - assigning costs to each node of said exhaustive graph, and to each transition between nodes;
- déterminer un graphe optimal en conservant un chemin dudit graphe minimisant lesdits coûts ; - determining an optimal graph by keeping a path of said graph minimizing said costs;
- exécuter ledit traitement en appelant de façon ordonnée les modules logiciels correspondant audit graphe optimal et à assurer les traductions et synchronisation de données entre chaque appel. executing said processing by calling in an orderly fashion the software modules corresponding to said optimal graph and ensuring the translations and synchronization of data between each call.
Suivant des modes de réalisation préférés, l’invention comprend une ou plusieurs des caractéristiques suivantes qui peuvent être utilisées séparément ou en combinaison partielle entre elles ou en combinaison totale entre elles : According to preferred embodiments, the invention comprises one or more of the following features which can be used separately or in partial combination with one another or in total combination with one another:
- les coûts affectés à chaque nœud dudit graphe exhaustif comprennent un temps d’exécution, et les coûts affectés à chaque transition comprennent un temps de traduction des données entre les environnements technologies des modules logiciels associés aux nœuds concernés, et un temps de transfert des données ; the costs assigned to each node of said exhaustive graph include an execution time, and the costs assigned to each transition include a data translation time between the technology environments of the software modules associated with the nodes concerned, and a data transfer time ;
- le dispositif comprend des moyens pour, à chaque nœud dudit squelette, associer un exécuteur instanciant lesdites modalités d’exécution associé à l’agent correspondant audit nœud. - The device comprises means for, with each node of said skeleton, associate an executor instantiating said execution modalities associated with the agent corresponding to said node.
- ledit squelette comporte des nœuds génériques correspondant chacun à un agent de calcul pouvant être mis en œuvre par au moins deux modules logiciels, et des nœuds spécifiques correspondant chacun à un agent de calcul pouvant être mis en œuvre par un unique module logiciel. said skeleton comprises generic nodes each corresponding to a calculation agent that can be implemented by at least two software modules, and specific nodes each corresponding to a calculation agent that can be implemented by a single software module.
Un autre aspect de l’invention concerne un système pour l’exécution d’un traitement informatique composé d’un ensemble d’agents de calcul, comportant un dispositif tel que précédemment défini, ainsi que des applications logicielles mettant à disposition lesdits modules logiciels audit dispositif. Another aspect of the invention relates to a system for the execution of computer processing composed of a set of calculation agents, comprising a device as defined above, as well as software applications making said software modules available to said software. device.
D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description qui suit d’un mode de réalisation préféré de l'invention, donnée à titre d'exemple et en référence aux dessins annexés. Brève description des dessins Other characteristics and advantages of the invention will become apparent on reading the following description of a preferred embodiment of the invention, given by way of example and with reference to the accompanying drawings. Brief description of the drawings
La figure 1 représente schématiquement un organigramme fonctionnel selon un mode de réalisation de l’invention. Figure 1 schematically shows a functional flowchart according to one embodiment of the invention.
La figure 2 représente schématiquement des exemples de motifs pour la formation de squelettes selon un mode de réalisation de l’invention. Figure 2 schematically shows examples of patterns for the formation of skeletons according to one embodiment of the invention.
Les figures 3a, 3b, 3c représentent schématiquement des exemples de squelettes selon un mode de réalisation de l’invention. Figures 3a, 3b, 3c schematically show examples of skeletons according to one embodiment of the invention.
Description détaillée de l’invention Detailed description of the invention
L'invention peut s'appliquer aux traitements d'images numériques, par exemple des images médicales ou de tissus organiques afin d'établir des informations sur la composition cellulaire. The invention can be applied to the processing of digital images, for example medical images or images of organic tissues in order to establish information on cell composition.
Mais elle peut s'appliquer également à toute chaîne complexe de traitement de données numériques (traitement du signal, etc.) et tout champ d'application. But it can also be applied to any complex chain of digital data processing (signal processing, etc.) and any field of application.
D'une façon générale, ces traitements peuvent se décrire comme un ensemble de sous-traitements, organisés sous la forme d'une chaîne ou d'autres types d'arrangement ou "workflow". In general, these processes can be described as a set of sub-processes, organized in the form of a chain or other types of arrangement or "workflow".
Selon différents mode de réalisation, l'invention concerne un procédé et un dispositif pour l'exécution d'une telle chaîne de traitement sur une plateforme de traitement de l'information. Cette plateforme peut être un serveur ou un ensemble de serveurs informatiques, de type "ferme de serveurs", éventuellement virtualisé et abstraites sous la forme d'un "nuage" (ou "cloud" selon la terminologie en langue anglaise plus habituelle). According to various embodiments, the invention relates to a method and a device for executing such a processing chain on an information processing platform. This platform can be a server or a set of computer servers, of the “server farm” type, optionally virtualized and abstract in the form of a “cloud” (or “cloud” according to the more usual English terminology).
Le dispositif peut former un "noyau" d'une chaîne d'outils logiciels plus complète offrant différents services pour aider le développeur de la chaîne de traitement à la mettre concrètement en place sur la plateforme. Préférentiellement, ce noyau et ces outils annexes, ainsi que le procédé, rendent les aspects technologiques transparents pour ces développeurs afin de permettre aux personnes spécialisés dans un champ d'application (imagerie médicale, imagine biologique...) d'utiliser des outils provenant de technologies tierces sans recourt à des connaissances spécifiques à ces technologies, et sans utiliser non plus de connaissances pointues en informatique. The device can form a "core" of a more complete software tool chain offering different services to help the developer of the processing chain to put it in place in practice on the platform. Preferably, this core and these ancillary tools, as well as the process, make the technological aspects transparent for these developers in order to allow people specializing in a field of application (medical imaging, biological imagery, etc.) to use tools originating from third-party technologies without resorting to specific knowledge of these technologies, and without using advanced computer skills.
Un traitement peut se définir par un ensemble d'agents logiciels, ou agents de calcul, chacun représentant un "sous-traitement". Un agent peut se définir, d'une façon générale, par une association entre une ou plusieurs routines logicielles, et des modalités d'exécution de ces routines. Ces modalités définissent des besoins techniques pour exécuter la ou les routines : ressources du CPU, ressources mémoires, ressources en communication, etc. A processing can be defined by a set of software agents, or calculation agents, each representing a "sub-processing". An agent can be defined, in general, by an association between one or more software routines, and the methods of execution of these routines. These modalities define the technical needs for executing the routine (s): CPU resources, memory resources, communication resources, etc.
L’ouvrage de Jacques Ferber, « Les systèmes multi-agents. Vers une intelligence collective », InterEditions, 1995, proposent des définitions formelles des notions de systèmes multi-agents et d’agents de calcul, pages 14-16. Jacques Ferber's book, "Multi-agent systems. Towards a collective intelligence ”, InterEditions, 1995, propose formal definitions of the notions of multi-agent systems and computational agents, pages 14-16.
On peut par ailleurs ici considérer un agent comme une instance technologique dédiée à l’exécution d’une routine spécifique, elle-même étant la spécialisation d’une routine dite générique (ou sémantique). Un agent possède ainsi un objectif de traitement, des ressources d’exécution et une capacité de communiquer avec le cœur de l’application. We can also consider here an agent as a technological instance dedicated to the execution of a specific routine, itself being the specialization of a so-called generic (or semantic) routine. An agent thus has a processing objective, execution resources and the ability to communicate with the core of the application.
La figure 1 schématise un organigramme fonctionnel d'une mise en œuvre du procédé selon l'invention. FIG. 1 schematically shows a functional flowchart of an implementation of the method according to the invention.
Ce procédé peut être décomposé en deux phases P1 , P2. Une première phase P1 correspond à la génération d'une séquence d'exécution correspondant à la chaîne de traitement, et une seconde phase, P2, correspond à l'orchestration de l'exécution proprement dite de la séquence d'exécution. This process can be broken down into two phases P1, P2. A first phase P1 corresponds to the generation of an execution sequence corresponding to the processing chain, and a second phase, P2, corresponds to the orchestration of the actual execution of the execution sequence.
La première phase P1 comprend une première étape S1 , consistant à fournir une représentation de cette chaîne de traitement sous la forme d'un squelette composé d'un ensemble orienté de nœuds, chaque nœud correspondant à un agent de la chaîne de traitement. The first phase P1 comprises a first step S1, consisting in providing a representation of this processing chain in the form of a skeleton made up of an oriented set of nodes, each node corresponding to an agent of the processing chain.
Cette étape S1 prend donc en entrée une première représentation du traitement qui peut être dépendant d'une technologie de formalisation quelconque et a pour but de la transformer dans une seconde représentation sous la forme d'un squelette. This step S1 therefore takes as input a first representation of the processing which may be dependent on any formalization technology and aims to transform it into a second representation in the form of a skeleton.
En particulier, cette étape S1 peut comprendre une « désérialisation », selon laquelle le modèle d’exécution est traduit par le noyau depuis un langage descriptif (xml, yaml, json...) vers une représentation objet de notre approche du squelette algorithmique. Comme on le verra plus loin, le modèle d’exécution décrit ainsi les exécuteurs, les routines à appliquer et les enchaînements des processus. In particular, this step S1 can comprise a "deserialization", according to which the execution model is translated by the kernel from a descriptive language (xml, yaml, json ...) to a representation object of our approach of the algorithmic skeleton. As will be seen later, the execution model thus describes the executors, the routines to be applied and the sequences of processes.
Un squelette algorithmique, ou simplement "squelette", est un concept qui a été introduit dans Cole M. « Algorithmic skeletons: A structured approach to the management of parallel computation », PhD Thesis, University of Edinburgh, Computer Science Dpt, Edinburgh 1988 ; ainsi que dans Cole M. « Algorithmic Skeletons: Structurée! Management of Parallel Computation ». Research Monographs in Parallel and Distributed Computing », Pitman/MIT Press: London, 1989 An algorithmic skeletons, or simply "skeleton", is a concept that was introduced in Cole M. "Algorithmic skeletons: A structured approach to the management of parallel computation ”, PhD Thesis, University of Edinburgh, Computer Science Dpt, Edinburgh 1988; as well as in Cole M. “Algorithmic Skeletons: Structured! Management of Parallel Computation ”. Research Monographs in Parallel and Distributed Computing ”, Pitman / MIT Press: London, 1989
On peut définir un squelette comme un modèle haut-niveau de représentations d'un traitement particulièrement adapté à la description des aspects de parallélisassions haut-niveau et de distribution des calculs. We can define a skeleton as a high-level model of representations of a processing particularly suited to the description of the aspects of high-level parallelizations and distribution of calculations.
Un squelette peut être considéré, et construit, comme la composition de motifs particuliers dont chacun peut être lui-même un sous-squelette, et ceci de manière récursive. Des motifs terminaux s’inscrivent en tant qu’élément minimaux de squelette. Ce sont les motifs « map », « split » et « reduce ». A skeleton can be considered, and constructed, as the composition of particular patterns, each of which can itself be a sub-skeleton, and this in a recursive manner. Terminal patterns fit as a minimal skeletal element. These are the “map”, “split” and “reduce” patterns.
Différents motifs ont été décrits dans l'état de la technique. La figure 2 illustre 4 motifs : "map", "pipe", "farm" et "reduce ".Cette liste n’est pas exhaustive. Ainsi, on peut ajouter par exemple le motif « split » qui permet de transformer un flux de données en plusieurs flux sortants. Different patterns have been described in the state of the art. Figure 2 illustrates 4 patterns: "map", "pipe", "farm" and "reduce". This list is not exhaustive. Thus, for example, the “split” pattern can be added, which makes it possible to transform a data flow into several outgoing flows.
Le motif "map" décrit l'application d'un algorithme particulier à chaque élément d'une collection. Le motif "pipe" est une succession de motifs "map". Le motif "farm" désigne l'application en parallèle de plusieurs motifs "map". Le motif "reduce" synthétise plusieurs données pour n'en retourner qu'une seule (la somme de termes, par exemple). The "map" pattern describes the application of a particular algorithm to each element of a collection. The "pipe" motif is a succession of "map" motifs. The "farm" pattern designates the parallel application of several "map" patterns. The "reduce" pattern synthesizes several data to return only one (the sum of terms, for example).
Ces motifs sont décrits dans de nombreuses sources de l'état de la technique, par exemple dans « Patterns and Skeletons for Parallel and Distributed Computing », de Fethi A. Rabhi, Sergei Gorlatch ; ou bien encore dans E. Chis, Adriana & Gonzalez- Velez, Horacio. (2018). “Design Patterns and Algorithmic Skeletons: A Brief Concordance". 10.1007/978-3-319-73767-6_3. These patterns are described in numerous sources of the state of the art, for example in “Patterns and Skeletons for Parallel and Distributed Computing”, by Fethi A. Rabhi, Sergei Gorlatch; or even in E. Chis, Adriana & Gonzalez-Velez, Horacio. (2018). “Design Patterns and Algorithmic Skeletons: A Brief Concordance”. 10.1007 / 978-3-319-73767-6_3.
Selon un mode de réalisation de l’invention, un squelette peut être vu comme une arborescence, dont chaque nœud correspond à un agent, et chaque agent représentant un "sous traitement". According to one embodiment of the invention, a skeleton can be seen as a tree structure, each node of which corresponds to an agent, and each agent representing an "under treatment".
Les liens entre les nœuds correspondent aux interfaces d'entrée et de sortie qui caractérise chaque agent. Chaque nœud correspondant à un agent, il peut donc être associé à une ou plusieurs routines (un agrégat de routines) et aux modalités d'exécution de ces routines. La figure 3a schématise un exemple de squelette pour un traitement constitué d'une chaîne de sous-traitements, ou agents, 31 , 32, 33, 34. The links between the nodes correspond to the input and output interfaces which characterize each agent. Each node corresponding to an agent, it can therefore be associated with one or more routines (an aggregate of routines) and with the methods of execution of these routines. FIG. 3a shows schematically an example of a backbone for a treatment consisting of a chain of sub-treatments, or agents, 31, 32, 33, 34.
Dans une étape S2, on décompose ce squelette en un graphe exhaustif, c'est- à-dire incorporant les implémentations possibles d'un agent donné par des modules logiciels disponibles. In a step S2, this skeleton is broken down into an exhaustive graph, that is to say incorporating the possible implementations of a given agent by available software modules.
Ces modules logiciels sont des fonctions offertes de façon autonome par des outils ou applications logicielles. Ainsi un agent est une vue abstraite d'une fonctionnalité qui peut être offerte, ou "instanciée" par un ou plusieurs modules. These software modules are functions offered independently by software tools or applications. Thus an agent is an abstract view of a functionality which can be offered, or "instantiated" by one or more modules.
Par exemple, un rééquilibrage de la balance des blancs dans une image peut être un agent qui peut être implémentés par des modules logiciels offerts par diverses applications de traitement numérique de l'image. Ces modules logiciels correspondent à des "technologies" distinctes, caractérisés par des modalités de fonctionnement spécifiques (structures de données, temps de calcul, performances....). For example, a rebalancing of the white balance in an image can be an agent that can be implemented by software modules offered by various digital image processing applications. These software modules correspond to distinct "technologies", characterized by specific operating methods (data structures, calculation time, performance, etc.).
Dès lors, on peut différentier des noeuds génériques et des noeuds spécifiques. Un nœud spécifique ne peut être implémenté que par une unique technologie (c'est- à-dire par un unique module logiciel), tandis qu'un nœud générique peut être implémenté par au moins deux technologies (ou modules logiciels). Pour ces nœuds génériques, un choix doit donc être effectué, et un des avantages de l'invention est de permettre un choix automatique et transparent de l'implémentation d'un nœud générique. Therefore, it is possible to differentiate between generic nodes and specific nodes. A specific node can only be implemented by a single technology (ie by a single software module), while a generic node can be implemented by at least two technologies (or software modules). For these generic nodes, a choice must therefore be made, and one of the advantages of the invention is to allow an automatic and transparent choice of the implementation of a generic node.
Les différentes implémentations d'un agent peuvent être mémorisées dans une structure de données afin de pouvoir, à partir d'un nœud générique, déterminer l'ensemble des implémentations possibles. The different implementations of an agent can be stored in a data structure in order to be able, from a generic node, to determine the set of possible implementations.
Une fois déterminé l'ensemble des modules implémentant un agent, on peut construire un graphe exhaustif en remplaçant le cas échéant chaque nœud du squelette par un groupe de nœud, dans lequel chaque nœud correspond à un module logiciel pouvant mettre en œuvre l'agent correspondant au nœud remplacé. Bien sûr, dans le cas d'un nœud spécifique, celui-ci correspond directement au module logiciel (unique) implémentant l'agent en question, il n'y a pas de sens à le remplacer (ou bien, on peut considérer qu'il est remplacé par un groupe formé d'un singleton). Once the set of modules implementing an agent has been determined, an exhaustive graph can be constructed by replacing, if necessary, each node of the skeleton by a group of nodes, in which each node corresponds to a software module that can implement the corresponding agent. to the replaced node. Of course, in the case of a specific node, it corresponds directly to the (unique) software module implementing the agent in question, there is no sense in replacing it (or else, we can consider that it is replaced by a group formed by a singleton).
Ainsi, selon un mode de réalisation de l’invention, cette notion de squelette introduit une notion de récursivité : chaque élément, ou motif, d’un squelette peut former un sous-squelette qui peut lui-même se décomposer également en sous- squelettes et ainsi de suite jusqu’à des motifs élémentaires, formant feuilles de l’arborescence globale. Ce squelette peut donc être considéré comme un modèle descriptif multi-niveau, intégrant en leur sein le modèle relatif à l’environnement d’exécution. Ainsi, un agent d’exécution peut être l’agrégation d’un ensemble de sous- agents dédiés à des tâches qui leur sont propres. Thus, according to one embodiment of the invention, this notion of skeleton introduces a notion of recursion: each element, or pattern, of a skeleton can form a sub-skeleton which can itself also be broken down into sub-skeleton. skeletons and so on up to elementary patterns, forming leaves of the global tree. This skeleton can therefore be considered as a multi-level descriptive model, integrating within them the model relating to the execution environment. Thus, an execution agent can be the aggregation of a set of sub-agents dedicated to tasks which are specific to them.
La figure 3b illustre un tel graphe exhaustif basé sur l'exemple de la figure 3a. Sur ces deux figures, les « textures » à l'intérieur des noeuds correspondent aux technologies. Les noeuds 31 et 33 correspondent ainsi à des technologies distinctes (c'est-à-dire qui doivent être implémentés par des modules distincts) tandis que les noeuds 32 et 34 sont des noeuds génériques (en blanc). Dans cet exemple, on suppose que deux modules logiciels sont disponibles. FIG. 3b illustrates such an exhaustive graph based on the example of FIG. 3a. In these two figures, the “textures” inside the nodes correspond to the technologies. The nodes 31 and 33 thus correspond to distinct technologies (that is to say which must be implemented by distinct modules) while the nodes 32 and 34 are generic nodes (in white). In this example, it is assumed that two software modules are available.
Le nœud 31 est un nœud spécifique, c'est-à-dire qu'un seul module logiciel disponible permet de l'implémenter. Ce nœud est donc conservé dans le graphe exhaustif tel quel. Node 31 is a specific node, that is to say that only one software module available makes it possible to implement it. This node is therefore kept in the exhaustive graph as it is.
Le nœud 32 est un nœud générique, il est donc remplacé par un groupe 32a, 32b, chacun de ces deux nœuds correspondant aux deux modules logiciels permettant de mettre en œuvre l'agent du nœud 32. Node 32 is a generic node, it is therefore replaced by a group 32a, 32b, each of these two nodes corresponding to the two software modules making it possible to implement the agent of node 32.
Le nœud 33 est un nœud spécifique ; il est donc conservé dans le graphe exhaustif tel quel. Le nœud 34 est un nœud générique, il est donc remplacé par un groupe 34a, 34b, chacun de ces deux nœuds correspondant aux deux modules logiciels permettant de mettre en œuvre l'agent du nœud 34. Node 33 is a specific node; it is therefore kept in the exhaustive graph as it is. Node 34 is a generic node, it is therefore replaced by a group 34a, 34b, each of these two nodes corresponding to the two software modules making it possible to implement the agent of node 34.
Ainsi, le graphe exhaustif est un graphe orienté allant de la donnée à traiter vers le résultat final. Chaque nœud correspond à une routine de calcul. Les nœuds d'un même niveau correspondent à une alternative technologique. Chaque agent générique génère autant de chemins alternatifs que de technologies implémentent une solution à cette routine. Thus, the exhaustive graph is a directed graph going from the data to be processed towards the final result. Each node corresponds to a calculation routine. The nodes of the same level correspond to a technological alternative. Each generic agent generates as many alternative paths as there are technologies implementing a solution to this routine.
Dans une étape S3, on affecte des coûts à chaque nœud et à chaque transition entre les nœuds. In a step S3, costs are assigned to each node and to each transition between the nodes.
Les coûts affectés à un nœud peuvent comprendre notamment un temps d'exécution. Les coûts affectés aux transitions entre nœuds peuvent comprendre les temps de transfert de données entre le noyau et les modules logiciels ainsi que les temps de traduction des données vers et depuis ces modules logiciels. En effet, chaque module logiciel (technologie) est associé à des formats de données particuliers et les changements de format impliquent nécessairement des temps de calcul propres. The costs assigned to a node can include, in particular, an execution time. Costs allocated to transitions between nodes may include data transfer times between the kernel and software modules as well as the translation times of data to and from these software modules. Indeed, each software module (technology) is associated with data formats particular and format changes necessarily imply specific computing times.
Ces différents temps peuvent être obtenus à partir de modèles théoriques, qui peuvent se baser sur la connaissance des infrastructures de déploiement, mais aussi sur des données empiriques. Par exemple, des benchmarks peuvent être préalablement prévus sur des ensembles de données tests afin de fournir ces différents temps. These different times can be obtained from theoretical models, which can be based on knowledge of deployment infrastructures, but also on empirical data. For example, benchmarks can be previously planned on test data sets in order to provide these different times.
Toutefois, d'autres coûts, et d'autres combinaisons de coûts sont également possibles. However, other costs, and other cost combinations are also possible.
Dans une étape S4, on détermine un graphe optimal en choisissant un chemin minimisant ces coûts. La figure 3c illustre un tel graphe optimal dans le cas de l'exemple des figures 3a et 3b. Le choix d'un chemin passe par la sélection d'un unique nœud pour chaque groupe de nœuds d'un même niveau, c'est-à-dire correspondant à un même agent de calcul. Autrement dit, cette étape consiste à sélectionner, pour chaque agent, un module logiciel permettant de l'implémenter. In a step S4, an optimal graph is determined by choosing a path minimizing these costs. FIG. 3c illustrates such an optimal graph in the case of the example of FIGS. 3a and 3b. The choice of a path passes through the selection of a single node for each group of nodes of the same level, that is to say corresponding to the same calculation agent. In other words, this step consists in selecting, for each agent, a software module making it possible to implement it.
Ce choix, basés sur les coûts, permet de prendre en compte bien sûr les performances des différents modules disponibles (temps d'exécution...), mais aussi les interactions engendrées par chaque choix (temps de traduction...). En effet, il peut par exemple être plus intéressant de sélectionner un module offrant des performances moindres qu'un autre, mais impliquant moins de traduction de données avec les modules amont et/ou aval de la chaîne de traitement. This choice, based on costs, makes it possible to take into account of course the performance of the various available modules (execution time, etc.), but also the interactions generated by each choice (translation time, etc.). Indeed, it may for example be more advantageous to select a module offering lower performance than another, but involving less data translation with the upstream and / or downstream modules of the processing chain.
Dans une étape S5, le traitement composé de l'ensemble des agents de calcul peut être exécuté sur la plateforme de traitement en orchestrant les appels vers les différents modules logiciel. Plus précisément, il s'agit de parcourir le graphe optimal et d'appeler séquentiellement les modules logiciels de chaque nœud en assurant les traductions et synchronisation entre chaque appel. In a step S5, the processing composed of all the calculation agents can be executed on the processing platform by orchestrating the calls to the different software modules. More precisely, it is a question of traversing the optimal graph and of calling sequentially the software modules of each node while ensuring the translations and synchronization between each call.
Ainsi quand deux agents successifs du traitement sont mis en œuvre par des modules logiciels distincts, le noyau assure les traductions des données depuis le format associé au module amont vers le format associé au module aval. Dans l'exemple de la figure 3c, les nœuds 31 et 32b correspondent à des modules logiciels distincts, une traduction de données est donc nécessairement mise en place par le noyau pour traduire le résultat de l'exécution du nœud 31 en tant qu'entrée du nœud 32b. Le noyau assure également la synchronisation, c'est-à-dire à la transmission des données vers et depuis chaque module logiciel. La mise en oeuvre de ces transmissions dépend de la plateforme de traitement sous-jacente et des applications logicielles mettant à disposition les modules logicielles implémentant les agents de calcul. Par exemple, les transmissions peuvent être assurées par des mécanismes d'espaces mémoires partagés (« memory mapping »), ou d'un fichier, ou d'un flux de données dans le cas d'une topologie distribuée de la plateforme de traitement sous- jacente. Thus when two successive processing agents are implemented by distinct software modules, the kernel ensures the translations of the data from the format associated with the upstream module to the format associated with the downstream module. In the example of FIG. 3c, the nodes 31 and 32b correspond to distinct software modules, a data translation is therefore necessarily set up by the kernel to translate the result of the execution of the node 31 as input node 32b. The kernel also provides synchronization, that is, the transmission of data to and from each software module. The implementation of these transmissions depends on the underlying processing platform and on the software applications making available the software modules implementing the calculation agents. For example, the transmissions can be ensured by mechanisms of shared memory spaces ("memory mapping"), or of a file, or of a data stream in the case of a distributed topology of the processing platform under - underlying.
Selon un mode de réalisation, les agents représentent des associations entre une ou plusieurs routines et les modalités d'exécution instanciées par des exécuteurs (ou « executors » en langue anglaise). Ces exécuteurs sont des abstractions de plusieurs éléments dédiés à l'exécution d'une routine. Des travaux de standardisation (RFC C++20/23) proposent une formalisation de cette notion d'exécuteur. L’approche décrite ici est généralisée afin de prendre en compte la distribution multiprocessus sur des ressources d'exécution. According to one embodiment, the agents represent associations between one or more routines and the execution modalities instantiated by executors (or “executors” in the English language). These executors are abstractions of several elements dedicated to the execution of a routine. Standardization works (RFC C ++ 20/23) propose a formalization of this notion of executor. The approach described here is generalized in order to take into account multiprocess distribution on runtime resources.
La bibliothèque standard du Java propose également une interprétation et une implémentation des executors, différant notamment par les options configurables lors de l’exécution. The Java standard library also provides interpretation and implementation of executors, differing in particular in the options configurable at runtime.
Un exécuteur peut contenir un ensemble de modèles, des métadonnées décrivant les ressources d'exécution, le contexte les agents exécutant les calculs. An executor can contain a set of models, metadata describing the execution resources, the context the agents performing the calculations.
Il répond aux questions suivantes : ce qu’il doit exécuter (la routine), comment il doit l’exécuter (en parallélisant les calculs ou non par exemple, il s’agit de la stratégie), et avec quelles ressources (inhérentes aux unités de calcul par exemple). It answers the following questions: what it must execute (the routine), how it must execute it (by parallelizing the calculations or not for example, it is about the strategy), and with what resources (inherent to the units calculation for example).
Les ressources d'exécution sont les unités de calcul utilisables par le programme. Un CPU ou un GPU est ainsi une ressource. Le modèle de ressource d'exécution décrit ainsi les fonctionnalités fondamentales de cette ressources : sa compétence de vectorisation des calculs, ses opérations fondamentales de mesure de performance, ses compétences de mémorisation, etc. The execution resources are the calculation units that can be used by the program. A CPU or a GPU is thus a resource. The execution resource model thus describes the fundamental functionalities of this resource: its ability to vectorize calculations, its fundamental performance measurement operations, its memorization skills, etc.
Le contexte d'exécution et une agrégation d'une ressource et d'un ensemble d'agents. Ainsi, il est possible de spécifier un contexte en tant que multithread partiel d'un seul processeur. Le contexte décrit ainsi la manière d'exécuter les routines avec une ressource, par le biais des agents. Les agents correspondent aux unités fondamentales d'exécution d'un calcul, tel qu'un thread (ou fil d'exécution). Chaque agent exécute une tâche. The execution context and an aggregation of a resource and a set of agents. Thus, it is possible to specify a context as a partial multithreaded of a single processor. The context thus describes how to execute routines with a resource, through agents. Agents correspond to the fundamental units of execution of a computation, such as a thread (or thread of execution). Each agent performs a task.
En outre, la stratégie d'exécution d'un exécuteur peut être paramétrée par la définition de stratégies. Ces dernières permettent de caractériser la mise en priorité de l'exécution des tâches (première arrivée, première exécutée, par exemple) et la manière d'agréger les sous-nœuds d'un motif du squelette. In addition, the execution strategy of an executor can be configured by defining strategies. The latter make it possible to characterize the prioritization of the execution of the tasks (first arrival, first executed, for example) and the way of aggregating the subnodes of a pattern of the skeleton.
Il est à noter que les squelettes algorithmiques présents dans la littérature (tels que Skepu2, ArrayFire, Muesli...) ne considèrent pas du tout la personnalisation du modèle d'exécution par l'explicitation de la ressource. Ainsi, ces outils ne permettent que la rédaction d'un code hétérogène CPU/GPU sans aucune considération de l'approche multiprocessus. Dans certains cas, le choix de l'unité de calcul est défini par implémentation: cela signifie qu'un algorithme particulier n'est accessible que sur une seule ressource. It should be noted that the algorithmic skeletons present in the literature (such as Skepu2, ArrayFire, Muesli ...) do not at all consider the personalization of the execution model by the clarification of the resource. Thus, these tools only allow the writing of a heterogeneous CPU / GPU code without any consideration of the multiprocess approach. In some cases, the choice of the calculation unit is defined by implementation: this means that a particular algorithm is only accessible on a single resource.
La synchronisation des données est ainsi gérée par le squelette sans aucune paramétrisation possible et est rendue implicite pour le développeur. Si l'approche implicite permet de faciliter la rédaction d'un code source pour le développeur, l'opportunité d'explicitation permet des optimisations à la rédaction du code source et un choix dans la distribution de calcul. The data synchronization is thus managed by the skeleton without any possible parameterization and is made implicit for the developer. If the implicit approach makes it possible to facilitate the writing of a source code for the developer, the opportunity of clarification allows optimizations in the writing of the source code and a choice in the distribution of calculation.
La détermination des ressources réelles affectées aux ressources exprimées par les exécuteurs se font au moment de l'exécution du noyau, c'est-à-dire en fonction des ressources effectivement disponibles. The determination of the real resources allocated to the resources expressed by the executors is made at the time of the execution of the kernel, that is to say according to the resources actually available.
Lors de l'étape S2 de décomposition du squelette en un graphe exhaustif, on associe à chaque nœud un exécuteur. Si celui-ci n'a pas été préalablement déterminé (ce qui est le cas lorsqu'un nœud générique est décomposé en un groupe de nœuds), Par défaut, un nœud hérite de l'exécuteur issu de son nœud parent. During step S2 of decomposing the skeleton into an exhaustive graph, an executor is associated with each node. If this has not been previously determined (which is the case when a generic node is broken down into a group of nodes), By default, a node inherits from the executor from its parent node.
Lors de la génération du graphe optimal, les exécuteurs peuvent être utilisés pour définir les étapes de synchronisation des données. When generating the optimal graph, the executors can be used to define the data synchronization steps.
Ainsi, chaque nœud du graphe optimal est nécessairement lié à un exécuteur. Lorsqu’un nœud soumet une tâche, dans l'étape d'exécution S5, il le soumet à l'exécuteur associé. Thus, each node of the optimal graph is necessarily linked to an executor. When a node submits a task, in the execution step S5, it submits it to the associated executor.
Les mécanismes des modes de réalisation décrits peuvent s’appliquer à différents cas pratiques d’utilisation. Un exemple d’applications peut être une chaîne de traitement de données permettant de générer de manière automatique la vignette d’une image. Cette vignette, d’une dimension inférieure à l’image d’origine, est une miniature représentant la partie signifiante de l’image d’origine. The mechanisms of the described embodiments can be applied to different practical use cases. An example of applications can be a string data processing allowing the automatic generation of the thumbnail of an image. This thumbnail, smaller in size than the original image, is a miniature representing the significant part of the original image.
Cette chaîne peut comporter une interface utilisateur et un ensemble de traitements algorithmiques. This chain can include a user interface and a set of algorithmic processing.
L’interface utilisateur peut être mise en oeuvre via un service web, en utilisant une requête http. L’utilisateur peut par exemple transmettre l’image de deux façons : en précisant un lien valide (ou URL) permettant de la télécharger, ou bien en indiquant le contenu de l’image sous format base64. The user interface can be implemented via a web service, using an http request. For example, the user can transmit the image in two ways: by specifying a valid link (or URL) to download it, or by indicating the content of the image in base64 format.
L’ensemble de traitements algorithmiques comprend ensuite : The set of algorithmic processing then includes:
- la traduction du format de l’image en un format générique propice au traitement de données ; - the translation of the image format into a generic format suitable for data processing;
- l’application d’un algorithme de recherche de la partie signifiante de l’image, comportant : - the application of a search algorithm for the significant part of the image, comprising:
o sous-échantillonnage de l’image pour accélérer le calcul ; o downsampling of the image to speed up the calculation;
o préparation des pixels et traitement pour la création d’un score de pertinence ; o pixel preparation and processing to create a relevance score;
o calcul des scores optimaux par l’utilisation de fenêtres glissantes, chaque fenêtre glissante possédant les dimensions de la miniature finale ; o calculation of optimal scores using sliding windows, each sliding window having the dimensions of the final thumbnail;
o sélection de la fenêtre optimale ; o selection of the optimal window;
- extraction de la sous-partie de l’image correspondant à cette fenêtre optimale ; - extraction of the sub-part of the image corresponding to this optimal window;
- transformation de l’image dans un format spécifique (png, jpeg, webp...) et compression ; - transformation of the image into a specific format (png, jpeg, webp ...) and compression;
- enregistrement de l’image dans une zone de téléchargement pour que l’utilisateur puisse la récupérer. - saving the image in a download area so that the user can retrieve it.
Plusieurs critères peuvent permettre d’évaluer les avantages de l’invention par rapport à des solutions selon différentes propositions de l’état de la technique : la réutilisabilité, l’interopérabilité et la distribution. Several criteria can be used to assess the advantages of the invention compared to solutions according to different proposals of the state of the art: reusability, interoperability and distribution.
La réutilisabilité d’un code source définit ici son potentiel de réemploie dans des contextes différents. Cela permet de capitaliser sur des éléments déjà conçue en amont d’un projet informatique et de réduire ses coûts de développement. L’interopérabilité d’un programme désigne sa capacité à pouvoir communiquer avec d’autres programmes. Nous employons le terme d’interopérabilité native pour classifier deux programmes informatiques communiquant avec les mêmes formats de données et ne nécessitant pas de traduction de ces dites données pour être utilisées. L’interopérabilité forte d’un système (programme, bibliothèque, service) permet de le rendre réutilisable, et donc de réduire les coûts ultérieurs de développement. The reusability of a source code here defines its potential for reuse in different contexts. This makes it possible to capitalize on elements already designed upstream of an IT project and to reduce its development costs. Interoperability of a program refers to its ability to communicate with other programs. We use the term native interoperability to classify two computer programs communicating with the same data formats and not requiring translation of said data to be used. The strong interoperability of a system (program, library, service) makes it possible to make it reusable, and therefore to reduce subsequent development costs.
La distribution d’un programme désigne l’action d’exécuter tout ou partie d’un programme plusieurs fois, potentiellement sur plusieurs machines. Ainsi, l’ensemble de ces instances de ces éléments distribués peuvent réaliser de manière simultanée, des opérations similaires. À l’instar de la parallélisation, la distribution permet d’augmenter la performance d’un logiciel en augmentant le nombre de tâches similaires exécutées en même temps. Distributing a program is the act of running all or part of a program multiple times, potentially on multiple machines. Thus, all of these instances of these distributed elements can simultaneously perform similar operations. Like parallelization, distribution can increase software performance by increasing the number of similar tasks performed at the same time.
Différentes approches sont possibles, sans mettre en jeu les mécanismes des modes de réalisation de l’invention. Different approaches are possible, without bringing into play the mechanisms of the embodiments of the invention.
a- une première approche consiste en la rédaction du programme dans un langage unique a- a first approach consists in writing the program in a single language
Le développeur utilise un langage unique pour rédiger le code source de ce programme, il peut s’appuyer sur des bibliothèques déjà existantes pour chacune de ces parties (si elles existent) et les faire travailler ensemble. The developer uses a unique language to write the source code for this program, he can draw on already existing libraries for each of these parts (if they exist) and make them work together.
Exemple Example
Le développeur utilise le langage C++ pour rédiger son programme. Il utilise ainsi les bibliothèques suivantes : The developer uses the C ++ language to write his program. It thus uses the following libraries:
- Libcurl permet d’assurer le téléchargement de l’image depuis une url distante - Libcurl allows downloading of the image from a remote url
- OpenCV permet de traduire l’image depuis un format a en format utilisable pour le calcul, en s’appuyant sur d’autres bibliothèques telles que libpng, libjpeg, libtiff... - OpenCV allows to translate the image from a format into a format usable for computation, by relying on other libraries such as libpng, libjpeg, libtiff ...
- Le développeur utilise le langage C++ pour effectuer le calcul sur les données - The developer uses the C ++ language to perform the calculation on the data
- La bibliothèque standard du C++ est employée pour générer un lien vers une image - L’outil dédié d’Amazon Web Services (AWS SDK) permet de téléverser le résultat au sein d’un espace de stockage distant pour que l’utilisateur puisse la télécharger - The standard C ++ library is used to generate a link to an image - The dedicated Amazon Web Services tool (AWS SDK) allows the result to be uploaded to a remote storage space so that the user can download it
Le résultat final est un exécutable ou une bibliothèque dans un langage particulier, qui n’est pas nativement opérable avec d’autres langages. Le tout est un produit insécable, dont chaque partie doit être dupliquée dans tout autre programme souhaitant réaliser les étapes similaires. The end result is an executable or library in a particular language, which is not natively operable with other languages. The whole is a non-breaking product, each part of which must be duplicated in any other program wishing to carry out similar steps.
b - une autre approche consiste en la séparation des étapes dans des services différents : bibliothèques b - another approach consists in the separation of the stages in different services: libraries
Afin de proposer des éléments réutilisables, le développeur peut séparer chaque étape de son processus, grâce à des bibliothèques. La rédaction d’un autre produit de traitement d’image peut ainsi réutiliser ces parties de logiciel sans avoir à les réécrire. Cette démarche autorise la réutilisabilité mais ne prend absolument pas en compte le caractère d’accélération du calcul en le distribuant. In order to offer reusable elements, the developer can separate each step of his process, thanks to libraries. This allows the writing of another image processing product to reuse these pieces of software without having to rewrite them. This approach allows reusability but absolutely does not take into account the acceleration character of the calculation by distributing it.
c - une autre approche consiste en la séparation et distribution du processus complet c - another approach is to separate and distribute the entire process
Pour fournir une solution réutilisable et distribuée, le développeur peut distribuer l’intégralité de la solution décrite dans la section a, intégrant des bibliothèques dans la section b grâce à des outils tels que SLURM et OpenMPI. SLURM fournit des service pour distribuer un processus sur un ensemble d’ordinateur, tandis qu’OpenMPI propose des fonctionnalités pour les faire communiquer entre eux. Ainsi, plusieurs instances du même programme sont exécutées de manière simultanée. To provide a reusable and distributed solution, the developer can distribute the entire solution described in section a, integrating libraries in section b through tools such as SLURM and OpenMPI. SLURM provides services to distribute a process across a set of computers, while OpenMPI provides functionality to make them communicate with each other. Thus, several instances of the same program are executed simultaneously.
Cette démarche possède une interopérabilité faible puisque le résultat final est propre à une technologie précise. Le processus distribué ne communique qu’avec les images à traiter et avec l’ensemble des processus enfants exécutés simultanément. This approach has low interoperability since the end result is specific to a specific technology. The distributed process communicates only with the images to be processed and with all the child processes running simultaneously.
d - encore une autre approche consiste en la création de services interopérables natifs d - yet another approach is to create native interoperable services
Dans le but de répondre au dernier critère d’évaluation, le développeur peut proposer la création de solutions nativement interopérables. Des extensions des technologies ciblent sont rédigées afin d’étendre leurs compétences. Java par exemple peut utiliser un processus C++, nativement (sans avoir besoin de traduction des données à traiter) grâce à l’utilisation de l’outil JNI. In order to meet the last evaluation criterion, the developer can propose the creation of natively interoperable solutions. Extensions of the target technologies are drafted in order to extend their skills. Java by example can use a C ++ process, natively (without needing to translate the data to be processed) thanks to the use of the JNI tool.
L’interopérabilité est ainsi locale, puisque deux processus rendus communiquant de cette manière agissent comme un programme intégrant une bibliothèque. L’avantage particulier est la performance obtenue par l’absence de besoin de traduction d’un format de donnée a en format de donnée b. Cependant, il est nécessaire de réaliser cette étape de liaison native pour chaque association de technologie. The interoperability is thus local, since two processes made communicating in this way act like a program integrating a library. The particular advantage is the performance obtained by the absence of the need to translate a data format a into data format b. However, it is necessary to perform this native binding step for each technology association.
Cette approche est complexe et longue à mettre en place pour un développeur et est étroitement dépendante de l’évolution technologique des deux langages communiquant. This approach is complex and time consuming for a developer to set up and is closely dependent on the technological evolution of the two communicating languages.
e - une autre approche consiste en la création de services web e - another approach is to create web services
Pour réduire la complexité de mise en oeuvre d’une solution interopérable, le développeur peut s’appuyer sur la formalisation des protocoles de communication, tels que http et gRPC. To reduce the complexity of implementing an interoperable solution, the developer can rely on the formalization of communication protocols, such as http and gRPC.
Ces réponses plus simples à mettre en oeuvre que les services natifs, sont interopérables avec n’importe quelle technologie fournissant une interface compatible avec des protocoles. Cependant, elles nécessitent des étapes de copie de données et de traduction de format qui peuvent être coûteuses en temps de calcul et en bande passante. These responses, which are easier to implement than native services, are interoperable with any technology providing an interface compatible with protocols. However, they require data copying and format translation steps which can be costly in terms of computation time and bandwidth.
Au contraire, selon une réalisation mettant en oeuvre l’invention, on obtient une simplification des étapes décrites précédemment. Cette approche permet, en particulier de réutiliser chacune des parties du programme, en proposant une démarche de distribution du calcul simplifiée, en laissant libre choix à l’utilisateur du caractère natif de l’interopérabilité proposée. On the contrary, according to an embodiment implementing the invention, a simplification of the steps described above is obtained. This approach makes it possible, in particular to reuse each part of the program, by proposing a simplified calculation distribution approach, leaving the user free to choose the native nature of the proposed interoperability.
En outre, l’utilisation des squelettes algorithmiques permet de préciser plusieurs niveaux de distribution du calcul et de parallélisation. In addition, the use of algorithmic skeletons makes it possible to specify several levels of distribution of the calculation and of parallelization.
Ainsi, nous pouvons aller à un niveau de détail plus fin de l’explicitation de la manière dont sera exécuté le processus final. Thus, we can go to a finer level of detail of explaining how the final process will be performed.
Le principal avantage est le gain de temps certains. Le développeur peut concevoir des modules réutilisables dans des technologies différentes (C++, Java, C#...) et décrire les enchaînements de chaque étape d’un point de vue macro. S’il le souhaite, il peut expliciter la manière fine dont sera exécutée chaque étape en précisant le type de tâche (tâche générique ou spécifique) et le type de ressource de calcul mis en oeuvre (quelle machine sera employée). Sinon, la solution inventive propose de résoudre cette question par l’emploi d’heuristiques dédiés à l’optimisation des calculs selon les types de données, des étapes des processus requises et de l’infrastructure machine mise à disposition. The main advantage is the certain time savings. The developer can design reusable modules in different technologies (C ++, Java, C # ...) and describe the sequences of each step from a macro point of view. If he wishes, he can explain the detailed way in which each step will be executed by specifying the type of task (generic or specific task) and the type of computation resource used (which machine will be used). Otherwise, the inventive solution proposes to resolve this question by using heuristics dedicated to optimizing the calculations according to the types of data, the required process steps and the machine infrastructure made available.
Le tableau suivant permet de mettre en correspondance les approches de l’état de la technique décrites (a, b, c, d, e) et celle basée sur un mode de réalisation de l’invention, suivant les trois critères d’évaluation (réutilisabilité, interopérabilité, distribution) et le temps de développement. On attribue une note à chaque approche et pour chaque critère allant de 0 à 3 pour les trois premiers et de 1 à 5 pour le temps de développement estimé (1 étant le plus court). The following table makes it possible to put in correspondence the approaches of the state of the art described (a, b, c, d, e) and that based on an embodiment of the invention, according to the three evaluation criteria ( reusability, interoperability, distribution) and development time. A score is assigned to each approach and for each criterion ranging from 0 to 3 for the first three and from 1 to 5 for the estimated development time (1 being the shortest).
Figure imgf000019_0001
Figure imgf000019_0001
Bien entendu, la présente invention n'est pas limitée aux exemples et au mode de réalisation décrits et représentés, mais elle est susceptible de nombreuses variantes accessibles à l'homme de l'art. Of course, the present invention is not limited to the examples and to the embodiment described and shown, but it is capable of numerous variants accessible to those skilled in the art.

Claims

Revendications Claims
1. Procédé pour l’exécution d’un traitement composé d’un ensemble d’agents de calcul sur une plateforme de traitement de données, chaque agent associant une routine à des modalités d’exécution de ladite routine, et ledit procédé comprenant 1. A method for executing a process consisting of a set of computation agents on a data processing platform, each agent associating a routine with execution modalities of said routine, and said method comprising
- une étape de fourniture (S1 ) d’une représentation dudit traitement informatique sous la forme d’un squelette composé d’un ensemble orienté de noeuds, chaque nœud correspondant à un desdits agents de calcul ; - a step of providing (S1) a representation of said computer processing in the form of a skeleton composed of an oriented set of nodes, each node corresponding to one of said calculation agents;
- une étape de décomposition (S2) dudit squelette en un graphe exhaustif dans laquelle on détermine l’ensemble des modules logiciels pouvant mettre en œuvre chacun desdits agents, et on remplace le cas échéant chaque nœud par un groupe de nœuds, chaque nœud dudit groupe correspondant à un module logiciel pouvant mettre en œuvre l’agent correspondant au nœud remplacé ; - a step of decomposition (S2) of said skeleton into an exhaustive graph in which all the software modules that can implement each of said agents are determined, and each node is replaced, if necessary, by a group of nodes, each node of said group corresponding to a software module that can implement the agent corresponding to the replaced node;
- une étape d’affectation (S3) de coûts à chaque nœud dudit graphe exhaustif, et à chaque transition entre nœuds ; - a cost allocation step (S3) at each node of said exhaustive graph, and at each transition between nodes;
- une étape de détermination (S4) d’un graphe optimal en conservant un chemin dudit graphe minimisant lesdits coûts ; - a step of determining (S4) an optimal graph by keeping a path of said graph minimizing said costs;
- une étape d’exécution (S5) consistant à appeler de façon ordonnée les modules logiciels correspondant audit graphe optimal et à assurer les traductions et synchronisation de données entre chaque appel. - an execution step (S5) consisting in orderly calling the software modules corresponding to said optimal graph and ensuring the translations and synchronization of data between each call.
2. Procédé selon la revendication précédente, dans laquelle les coûts affectés à chaque nœud dudit graphe exhaustif comprennent un temps d’exécution, et les coûts affectés à chaque transition comprennent un temps de traduction des données entre les environnements technologies des modules logiciels associés aux nœuds concernés, et un temps de transfert des données. 2. Method according to the preceding claim, in which the costs assigned to each node of said exhaustive graph include an execution time, and the costs assigned to each transition include a data translation time between the technology environments of the software modules associated with the nodes. concerned, and a data transfer time.
3. Procédé selon l’une des revendications précédentes, dans lequel à chaque nœud dudit squelette est associé un exécuteur instanciant lesdites modalités d’exécution associé à l’agent correspondant audit nœud. 3. Method according to one of the preceding claims, wherein each node of said skeleton is associated with an executor instantiating said execution modalities associated with the agent corresponding to said node.
4. Procédé selon l’une des revendications précédentes dans lequel ledit squelette comporte des nœuds génériques correspondant chacun à un agent de calcul pouvant être mis en œuvre par au moins deux modules logiciels, et des nœuds spécifiques correspondant chacun à un agent de calcul pouvant être mis en œuvre par un unique module logiciel. 4. Method according to one of the preceding claims wherein said skeleton comprises generic nodes each corresponding to a calculation agent that can be implemented by at least two software modules, and specific nodes each corresponding to a calculation agent that can be. implemented by a single software module.
5. Dispositif pour l’exécution d’un traitement informatique composé d’un ensemble de routines sur une plateforme multi-technologique comprenant des moyens pour 5. Device for the execution of a computer processing composed of a set of routines on a multi-technological platform comprising means for
- fournir une représentation dudit traitement informatique sous la forme d’un squelette composé d’un ensemble orienté de nœuds, chaque nœud correspondant à un desdits agents de calcul; - provide a representation of said computer processing in the form of a skeleton made up of an oriented set of nodes, each node corresponding to one of said calculation agents;
- décomposer ledit squelette en un graphe exhaustif en déterminant l’ensemble des modules logiciels pouvant mettre en œuvre chacune desdits agents, et remplaçant, le cas échéant, chaque nœud par un groupe de nœuds, chaque nœud dudit groupe correspondant à un module logiciel pouvant mettre en œuvre l’agent correspondant au nœud remplacé ; - breaking down said skeleton into an exhaustive graph by determining the set of software modules that can implement each of said agents, and replacing, if necessary, each node by a group of nodes, each node of said group corresponding to a software module that can implement implement the agent corresponding to the replaced node;
- affecter des coûts à chaque nœud dudit graphe exhaustif, et à chaque transition entre nœuds ; - assigning costs to each node of said exhaustive graph, and to each transition between nodes;
- déterminer un graphe optimal en conservant un chemin dudit graphe minimisant lesdits coûts ; - determining an optimal graph by keeping a path of said graph minimizing said costs;
- exécuter ledit traitement en appelant de façon ordonnée les modules logiciels correspondant audit graphe optimal et à assurer les traductions et synchronisation de données entre chaque appel. executing said processing by calling in an orderly fashion the software modules corresponding to said optimal graph and ensuring the translations and synchronization of data between each call.
6. Dispositif selon la revendication précédente, dans laquelle les coûts affectés à chaque nœud dudit graphe exhaustif comprennent un temps d’exécution, et les coûts affectés à chaque transition comprennent un temps de traduction des données entre les environnements technologies des modules logiciels associés aux nœuds concernés, et un temps de transfert des données. 6. Device according to the preceding claim, in which the costs assigned to each node of said exhaustive graph include an execution time, and the costs assigned to each transition include a data translation time between the technology environments of the software modules associated with the nodes. concerned, and a data transfer time.
7. Dispositif selon l’une des revendications 5 ou 6, comprenant des moyens pour, à chaque nœud dudit squelette, associer un exécuteur instanciant lesdites modalités d’exécution associé à l’agent correspondant audit nœud. 7. Device according to one of claims 5 or 6, comprising means for, with each node of said skeleton, associating an executor instantiating said execution modalities associated with the agent corresponding to said node.
8. Dispositif selon l’une des revendications 5 à7, dans lequel ledit squelette comporte des nœuds génériques correspondant chacun à un agent de calcul pouvant être mis en œuvre par au moins deux modules logiciels, et des nœuds spécifiques correspondant chacun à un agent de calcul pouvant être mis en œuvre par un unique module logiciel. 8. Device according to one of claims 5 to 7, wherein said skeleton comprises generic nodes each corresponding to a calculation agent that can be implemented by at least two software modules, and specific nodes each corresponding to a calculation agent. that can be implemented by a single software module.
9. Système pour l’exécution d’un traitement informatique composé d’un ensemble d’agents de calcul, comportant un dispositif selon l’une des revendications 5 à 8, ainsi que des applications logicielles mettant à disposition lesdits modules logiciels audit dispositif. 9. System for the execution of a computer processing composed of a set of calculation agents, comprising a device according to one of claims 5 to 8, as well as software applications making said software modules available to said device.
PCT/EP2020/057572 2019-03-25 2020-03-19 Computerised processing of a sequence of computing agents implemented by a set of different technologies WO2020193351A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FRFR1903034 2019-03-25
FR1903034A FR3094527B1 (en) 2019-03-25 2019-03-25 Computerized processing of a chain of calculation agents implemented by a set of distinct technologies

Publications (1)

Publication Number Publication Date
WO2020193351A1 true WO2020193351A1 (en) 2020-10-01

Family

ID=67262675

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2020/057572 WO2020193351A1 (en) 2019-03-25 2020-03-19 Computerised processing of a sequence of computing agents implemented by a set of different technologies

Country Status (2)

Country Link
FR (1) FR3094527B1 (en)
WO (1) WO2020193351A1 (en)

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
COLE M.: "PhD Thesis", 1988, UNIVERSITY OF EDINBURGH, COMPUTER SCIENCE DPT, article "Algorithmic skeletons: A structured approach to the management of parallel computation"
COLE M.: "Research Monographs in Parallel and Distributed Computing", 1989, PITMAN/MIT PRESS, article "Algorithmic Skeletons: Structured Management of Parallel Computation"
DASTGEER USMAN ET AL: "Performance-aware composition framework for GPU-based systems", JOURNAL OF SUPERCOMPUTING, KLUWER ACADEMIC PUBLISHERS, DORDRECHT, NL, vol. 71, no. 12, 30 January 2014 (2014-01-30), pages 4646 - 4662, XP035708648, ISSN: 0920-8542, [retrieved on 20140130], DOI: 10.1007/S11227-014-1105-1 *
E. CHIS, ADRIANAGONZALEZ-VELEZ, HORACIO, DESIGN PATTERNS AND ALGORITHMIC SKELETONS: A BRIEF CONCORDANCE, 2018
FETHI A. RABHISERGEI GORLATCH, PATTERNS AND SKELETONS FOR PARALLEL AND DISTRIBUTED COMPUTING
GEORGIA KOUGKA ET AL: "The Many Faces of Data-centric Workflow Optimization: A Survey", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 26 January 2017 (2017-01-26), XP080751797, DOI: 10.1007/S41060-018-0107-0 *
JACQUES FERBER: "Les systèmes multi-agents. Vers une intelligence collective", INTEREDITIONS, 1995, pages 14 - 16
NATHALIE FURMENTO ET AL: "Optimisation of component-based applications within a grid environment", SUPERCOMPUTING, ACM/IEEE 2001 CONFERENCE 10-16 NOV. 2001, PISCATAWAY, NJ, USA,IEEE, 2 PENN PLAZA, SUITE 701 NEW YORK NY 10121-0701 USA, 10 November 2001 (2001-11-10), pages 30, XP058226316, ISBN: 978-1-58113-293-9, DOI: 10.1145/582034.582064 *

Also Published As

Publication number Publication date
FR3094527B1 (en) 2021-04-23
FR3094527A1 (en) 2020-10-02

Similar Documents

Publication Publication Date Title
US7321897B2 (en) Binary dependency database
EP1387305B1 (en) Method and system for automatically providing a global model of an architectural simulation
EP1739551A1 (en) Method of handling data compatible with an object modeling formalism
FR2557322A1 (en) INTEGRATED CIRCUIT WITH VERY LARGE SCALE SUBDIVISED IN ISOCHRONOUS REGIONS AND METHOD FOR DESIGNING AND CONTROLLING IT USING A MACHINE
EP1387261A1 (en) Application software generation and language for software description
WO2010009996A1 (en) Method for compiling a computer program
Heidrich et al. pyWATTS: Python workflow automation tool for time series
FR3105862A1 (en) METHOD AND SYSTEM FOR SELECTING A LEARNING MODEL WITHIN A PLURALITY OF LEARNING MODELS
FR2679398A1 (en) METHOD FOR AIDING THE DEVELOPMENT OF A SET OF COMMUNICATOR AUTOMATES
EP1290554A1 (en) Modular computer system and related method
WO2020070458A1 (en) Method for generating a binding between a c/c++ library and an interpreted language, and carrying out said method to transform a three-dimensional (3d) model
Chaves et al. The orchestration of Machine Learning frameworks with data streams and GPU acceleration in Kafka‐ML: A deep‐learning performance comparative
WO2020193351A1 (en) Computerised processing of a sequence of computing agents implemented by a set of different technologies
US20230385039A1 (en) Code generation tool for cloud-native high-performance computing
Escrivá et al. Learn OpenCV 4 by Building Projects: Build real-world computer vision and image processing applications with OpenCV and C++
Di Martino et al. A platform for mbdaaas based on patterns and skeletons: The python based algorithms compiler
FR2825491A1 (en) METHOD FOR IMPLEMENTING A PLURALITY OF OBJECT INTERFACES
FR2963125A1 (en) METHOD FOR PARALLEL EXECUTION OF A COMPUTER PROCESS BY AN APPLICATION BUS
EP3874368B1 (en) Executing portions of code on execution resources
Schmelczer et al. Trustworthy and Robust AI Deployment by Design: A framework to inject best practice support into AI deployment pipelines
Dabral et al. Healthcare Data Pipeline
Nanjundappa et al. AWAF: AI Enabled Web Contents Authoring Framework
Chaves García et al. The orchestration of Machine Learning frameworks with datastreams and GPU acceleration in Kafka-ML: A deep-learning performance comparative
WO2019129749A1 (en) Method for developing an ontology for a particular industrial field
FR2963126A1 (en) METHOD OF PARALLEL EXECUTION OF A PLURALITY OF ORDINATED TASKS ACCORDING TO A SCHEDULING TABLE

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20710974

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20710974

Country of ref document: EP

Kind code of ref document: A1