Brevet FR3094527A1 — publié le 20201002

Description Titre de l'invention : Traitement informatisé d'un enchaînement d'agents de calcul mis en oeuvre par un ensemble de technologies distinctes [pool La présente invention concerne l'enchaînement automatisé de traitements infor- matiques 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 platcformes de traitement distinctes. [0002] Contexte de l'invention [0003] 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. [0004] Ainsi, par exemple, un processus de traitement et d'analyse d'images d'origine biologique peut consister en un ensemble de traitements consistant à [0005] - visualiser des images de cellule par le biais de logiciels propriétaires des mi- croscopes. Chaque image est enregistrée indépendamment sur le système de l'utilisateur ; 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.) ; 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. [0006] 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. [0007] Si des outils existent pour certaines étapes de la chaire 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....) [0008] 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 2 sortie...). [0009] Ainsi, différents outils de traitement d'image existent (OpenCV, lmageJ, ITK...), niais 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.) [0010] Par nature, ces outils ne sont pas nativement interopérables. Bien que l'utilisation de solutions dites de "hindings" 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. Résumé de l'invention [0011] Le but de la présente invention est de fournir une solution palliant au moins par- tiellement les inconvénients précités. [0012] 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. [0013] 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 [0014] - 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 noeud correspondant à un desdits agents de calcul ; une étape de décomposition dudit squelette en un graphe exhaustif dans laquelle on détermine l'ensemble des modules logiciels pouvant mettre en oeuvre chacun desdits agents, et on remplace le cas échéant chaque noeud par un groupe de noeuds, chaque noeud dudit groupe correspondant à un module logiciel pouvant mettre en oeuvre l'agent correspondant au noeud remplacé ; une étape d'affectation de coûts à chaque noeud dudit graphe exhaustif, et à chaque transition entre noeuds ; une étape de détermination d'un graphe optimal en conservant un chemin dudit graphe minimisant lesdits coûts ; 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. [0015] 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 : 3 [0016] - les couts affectés à chaque noeud 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 noeuds concernés, et un temps de transfert des données ; à chaque noeud dudit squelette est associé un exécuteur instanciant lesdites modalités d'exécution associé à l'agent correspondant audit noeud ; [0017] ledit squelette comporte des noeuds génériques correspondant chacun à un agent de calcul pouvant être mis en oeuvre par au moins deux modules logiciels, et des noeuds spécifiques correspondant chacun à un agent de calcul pouvant être mis en oeuvre par un unique module logiciel. [0018] 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 multitechnologique comprenant des moyens pour [0019] - fournir une représentation dudit traitement informatique sous la forme d'un squelette composé d'un ensemble orienté de noeuds, chaque noeud correspondant à un desdits agents de calcul; décomposer ledit squelette en un graphe exhaustif en déterminant l'ensemble des modules logiciels pouvant mettre en oeuvre chacune desdits agents, et remplaçant, le cas échéant, chaque noeud par un groupe de noeuds, chaque noeud dudit groupe correspondant à un module logiciel pouvant mettre en oeuvre l'agent correspondant au noeud remplacé ; affecter des coûts à chaque noeud dudit graphe exhaustif, et à chaque transition entre noeuds ; déterminer un graphe optimal en conservant un chemin dudit graphe minimisant lesdits coûts ; 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. [0020] 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 : [0021] les couts affectés à chaque noeud 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 noeuds concernés, et un temps de transfert des données ; le dispositif comprends des moyens pour, à chaque noeud dudit squelette, associer un exécuteur instanciant lesdites modalités d'exécution associé à l'agent correspondant audit noeud. ledit squelette comporte des noeuds génériques correspondant chacun à un agent de calcul pouvant être mis en oeuvre par au moins deux modules logiciels, et des noeuds spécifiques correspondant chacun à un agent de calcul pouvant être mis en oeuvre par un unique module logiciel. [0022] 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. [0023] 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 [0024] La figure 1 représente schématiquement un organigramme fonctionnel selon un mode de réalisation de l'invention. [0025] 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. [0026] Les figures 3a, 3h, 3c représentent schématiquement des exemples de squelettes selon un mode de réalisation de l'invention. Description détaillée de l'invention 100271 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. 100281 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. 100291 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 "%vo rkflow" 100301 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 "nuaee" (ou "cloud" selon la terminologie en langue anglaise plus habituelle). 100311 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. [0032] Un traitement peut se définir par un ensemble d'agents logiciels, ou agents de calcul, chacun représentant un "sous-traitement". [0033] 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. [0034] L'ouvrage de Jacques Perlier, « 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. [0035] 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 coeur de l'application. [0036] La figure 1 schématise un organigramme fonctionnel d'une mise en oeuvre du procédé selon l'invention. [0037] Ce procédé peut être décomposé en deux phases PI, P2. Une première phase PI 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. [0038] La première phase PI comprend une première étape SI, consistant à fournir une re- présentation de cette chaîne de traitement sous la forme d'un squelette composé d'un ensemble orienté de noeuds, chaque noeud correspondant à un agent de la chaîne de traitement. [0039] Cette étape SI 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. [0040] En particulier, cette étape SI 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. 6 [0041] Un squelette algorithmique, ou simplement "squelette", est un concept qui a été introduit dans Cole M. « Algorithmic skeletons: A structured approach in the management of parallel computation », PhD Thesis, University of Edinhurgh, Computer Science Dpt, Edinhurgh 1988 ; ainsi que dans Cole M. « Algorithtnic Skeletons: Structured Management of Parallel Computation ». Research Monographs in Parallel and Distributed Computing », Pitman/MIT Press: London, 1989 [0042] 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. [0043] Un squelette peut être considéré, et construit, comme la composition de motifs par- ticuliers 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 », « spin » et « reduce ». [0044] 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. [0045] 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). [0046] 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 & GonzalezVelez, Horacio. (2018). "Design Patterns and Algorithmic Skeletons.- A Brief Concordance". 10.1007/978-3-319-73767-6_3. [0047] Selon un mode de réalisation de l'invention, un squelette peut être vu comme une ar- borescence, dont chaque noeud correspond à un agent, et chaque agent représentant un sous traitement". [0048] Les liens entre les noeuds correspondent aux interfaces d'entrée et de sortie qui ca- ractérise chaque agent. Chaque noeud 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. [0049] 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. [0050] Dans une étape S2, on décompose ce squelette en un graphe exhaustif, c'est-à-dire in- corporant les implémentations possibles d'un agent donné par des modules logiciels 7 disponibles. [0051] 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. [0052] 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....). [0053] Dès lors, on peut différentier des noeuds génériques et des noeuds spécifiques. Un noeud spécifique ne peut être implémenté que par une unique technologie (c'est-à-dire par un unique module logiciel), tandis qu'un noeud générique peut être implémenté par au moins deux technologies (ou modules logiciels). Pour ces noeuds 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 noeud générique. [0054] 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 noeud générique, déterminer l'ensemble des implémentations possibles. [0055] 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 noeud du squelette par un groupe de noeud, dans lequel chaque noeud correspond à un module logiciel pouvant mettre en oeuvre l'agent correspondant au noeud remplacé. Bien sûr, dans le cas d'un noeud 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). [0056] 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. [0057] Le noeud 31 est un noeud spécifique, c'est-à-dire qu'un seul module logiciel disponible permet de l'implémenter. Ce noeud est donc conservé dans le graphe exhaustif tel quel. [0058] Le noeud 32 est un noeud générique, il est donc remplacé par un groupe 32a, 32b, chacun de ces deux noeuds correspondant aux deux modules logiciels permettant de mettre en oeuvre l'agent du noeud 32. [0059] Le noeud 33 est un noeud spécifique ; il est donc conservé dans le graphe exhaustif tel 8 quel. Le noeud 34 est un noeud générique, il est donc remplacé par un groupe 34a, 34h, chacun de ces deux noeuds correspondant aux deux modules logiciels permettant de mettre en oeuvre l'agent du noeud 34. [0060] Ainsi, le graphe exhaustif est un graphe orienté allant de la donnée à traiter vers le résultat final. Chaque noeud correspond à une routine de calcul. Les noeuds 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. [0061] Dans une étape S3, on affecte des coûts à chaque noeud et à chaque transition entre les noeuds. [0062] Les coûts affectés à un noeud peuvent comprendre notamment un temps d'exécution. Les coûts affectés aux transitions entre noeuds 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. [0063] 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. [0064] Toutefois, d'autres coûts, et d'autres combinaisons de coûts sont également possibles. [0065] Dans une étape S4, on détermine un graphe optimal en choisissant un chemin mi- nimisant 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 noeud pour chaque groupe de noeuds 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. [0066] 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. [0067] 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 noeud en assurant les traductions et synchronisation entre chaque appel. 9 [0068] Ainsi quand deux agents successifs du traitement sont mis en oeuvre 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 noeuds 31 et 32h 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 noeud 31 en tant qu'entrée du noeud 32h. [0069] 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 (« nzernory 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. [0070] 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écs 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 multiproccssus sur des ressources d'exécution. [0071] 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.. [0072] 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. [0073] 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). [0074] 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. [0075] 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. [0076] Les agents correspondent aux unités fondamentales d'exécution d'un calcul, tel qu'un thrcad (ou fil d'exécution). Chaque agent exécute une tâche. [0077] En outre, la stratégie d'exécution d'un exécuteur peut être paramétréc 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-noeuds d'un motif du squelette. [0078] 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. [0079] 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. [0080] 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. [0081] Lors de l'étape S2 de décomposition du squelette en un graphe exhaustif, on associe à chaque noeud un exécuteur. Si celui-ci n'a pas été préalablement déterminé (ce qui est le cas lorsqu'un noeud générique est décomposé en un groupe de noeuds), Par défaut, un noeud hérite de l'exécuteur issu de son noeud parent. [0082] 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. [0083] Ainsi, chaque noeud du graphe optimal est nécessairement lié à un exécuteur. Lorsqu'un noeud soumet une tâche, dans l'étape d'exécution S5, il le soumet à l'exécuteur associé. [0084] Bien entendu, la présente invention n'est pas limitée aux exemples et au mode de réa- lisation décrits et représentés, mais elle est susceptible de nombreuses variantes accessibles à l'homme de l'art. 11 [Revendication I] REVENDICATIONSProcé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 une étape de fourniture (S I) d'une représentation dudit traitement informatique sous la forme d'un squelette composé d'un ensemble orienté de noeuds, chaque noeud correspondant à un desdits agents de calcul ; 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 oeuvre chacun desdits agents, et on remplace le cas échéant chaque noeud par un groupe de noeuds, chaque noeud dudit groupe correspondant à un module logiciel pouvant mettre en oeuvre l'agent correspondant au noeud remplacé ; une étape d'affectation (S3) de coûts à chaque noeud dudit graphe exhaustif, et à chaque transition entre noeuds ; une étape de détermination (S4) d'un graphe optimal en conservant un chemin dudit graphe minimisant lesdits coûts ; 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. [Revendication 2] [Revendication 3] [Revendication 4] Procédé selon la revendication précédente, dans laquelle les couts affectés à chaque noeud 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 noeuds concernés, et un temps de transfert des données. Procédé selon l'une des revendications précédentes, dans lequel à chaque noeud dudit squelette est associé un exécuteur instanciant lesdites modalités d'exécution associé à l'agent. correspondant audit noeud. Procédé selon l'une des revendications précédentes dans lequel ledit 12 [Revendication 5] squelette comporte des noeuds génériques correspondant chacun à un agent de calcul pouvant être mis en oeuvre par au moins deux modules logiciels, et des noeuds spécifiques correspondant chacun à un agent de calcul pouvant être mis en oeuvre par un unique module logiciel. Dispositif pour l'exécution d'un traitement informatique composé d'un ensemble de routines sur une plateforme multi-technologique comprenant des moyens pour fournir une représentation dudit traitement informatique sous la forme d'un squelette composé d'un ensemble orienté de noeuds, chaque noeud correspondant à un desdits agents de calcul; décomposer ledit squelette en un graphe exhaustif en déterminant l'ensemble des modules logiciels pouvant mettre en oeuvre chacune desdits agents, et remplaçant, le cas échéant, chaque noeud par un groupe de noeuds, chaque noeud dudit groupe correspondant à un module logiciel pouvant mettre en oeuvre l'agent correspondant au noeud remplacé ; affecter des coûts à chaque noeud dudit graphe exhaustif, et à chaque transition entre noeuds ; déterminer un graphe optimal en conservant un chemin dudit graphe minimisant lesdits coûts ; 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. [Revendication 6] [Revendication 7] [Revendication 8] Dispositif selon la revendication précédente, dans laquelle les couts affectés à chaque noeud 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 noeuds concernés, et un temps de transfert des données. Dispositif selon l'une des revendications 5 ou 6, comprenant des moyens pour, à chaque noeud dudit squelette, associer un exécuteur instanciant lesdites modalités d'exécution associé à l'agent correspondant audit noeud. Dispositif selon l'une des revendications 5 à7, dans lequel ledit squelette 13 [Revendication 9] comporte des noeuds génériques correspondant chacun à un agent de calcul pouvant être mis en oeuvre par au moins deux modules logiciels, et des noeuds spécifiques correspondant chacun à un agent de calcul pouvant être mis en oeuvre par un unique module logiciel. 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.