FR 3025334 A1 20160304 FR 1401942 A 20140902 1 Procédé de détermination par optimisation d'une architecture multi-coeurs La présente invention concerne un procédé de détermination par optimisation d'une architecture multi-cceurs et d'une façon d'implémenter une application sur l'architecture pour une application donnée. La présente invention se rapporte également au produit programme d'ordinateur associé. Une architecture multi-coeurs est une plateforme de calcul comprenant plusieurs unités de traitement ou coeurs de traitement. Chaque unité de traitement est notamment apte à exécuter des programmes d'ordinateur et à traiter des données. Un tel traitement se fait en parallèle c'est à dire de façon autonome des autres unités. Selon les cas, une architecture multi-coeur comporte également un ou plusieurs des éléments suivants : un processeur, une mémoire, une connexion pour des périphériques d'entrée et de sortie ou un réseau de communication, par exemple, un NoC (de l'anglais Network on Chip). Les unités centrales CPU (de l'anglais Central Processing Unit) multi-cceurs ou les cartes graphiques GPU (de l'anglais Graphics Processing Unit) sont des exemples d'architectures mu lti-cceurs. Pour concevoir les architectures multi-coeurs susceptibles de convenir à une application donnée, une approche classique consiste à établir un profil de l'application considérée, puis à implémenter cette application sur l'ensemble des architectures candidates et enfin à optimiser conjointement les architectures et l'application. Cependant, une telle approche, implique de nombreuses interventions de l'utilisateur, ce qui est chronophage et génère des erreurs. De nombreux outils visant à explorer de manière automatique les architectures multi-coeurs susceptibles de convenir à une application donnée ont été développés. Ainsi, il est connu d'utiliser des outils HLS (de l'anglais High-Level Synthesis) propres à interpréter une description algorithmique d'un comportement souhaité et à créer l'architecture mettant en oeuvre ce comportement. Toutefois, pour les performances en termes de temps d'exécution de l'application par l'architecture, de surface occupée par l'architecture et d'énergie consommée par l'architecture, une architecture obtenue automatiquement par de tels outils HLS n'atteint pas les performances qui seraient obtenues manuellement. Il existe donc un besoin pour un procédé de détermination par optimisation d'une architecture multi-coeurs pour une application donnée qui soit de mise en oeuvre rapide tout en fournissant une architecture multi-coeur ayant dés performances en termes de temps d'exécution, de surface et d'énergie consommée plus proches des performances d'une technique d'optimisation manuelle. 3025334 2 A cet effet, l'invention a pour objet un procédé de détermination par optimisation d'une architecture multi-coeurs et d'une façon d'implémenter une application sur l'architecture pour une application donnée, le procédé comprenant : - la fourniture d'une application parallélisée, une application parallélisée étant un 5 ensemble de tâches, - la fourniture d'architectures candidates comprenant chacune différents blocs matériels, un bloc matériel présentant une nature spécifique et étant apte à exécuter une ou plusieurs des tâches, - la définition d'un premier espace d'exploration ayant pour éléments les 10 différentes façons d'implémenter l'application sur chacune des architectures candidates; - la sélection dans le premier espace d'exploration des éléments vérifiant un premier critère selon lequel chaque tâche de l'application est apte à être mise en oeuvre sur seulement un ou plusieurs blocs matériels, pour obtenir un deuxième espace d'exploration comprenant les éléments du premier espace d'exploration satisfaisant le 15 premier critère, - la détermination dans le deuxième espace d'exploration des éléments vérifiant un deuxième critère, le deuxième critère étant différent du premier critère et requérant que le nombre de blocs matériels séparant un premier bloc matériel mettant en oeuvre une première tâche et un deuxième bloc matériel mettant en oeuvre une deuxième tâche 20 distincte de la première tâche, soit inférieur ou égal à une valeur propre aux deux tâches considérées, pour obtenir un troisième espace d'exploration comprenant les éléments du deuxième espace d'exploration satisfaisant le deuxième critère, - le calcul du nombre de données échangées entre les blocs matériels pour chacun des éléments du troisième espace d'exploration et la comparaison de chaque 25 nombre calculé à une valeur seuil, pour obtenir un quatrième espace d'exploration comprenant les éléments du troisième espace d'exploration dont le nombre de données échangées est inférieur ou égal à la valeur seuil, et - l'optimisation des éléments du quatrième espace d'exploration selon un troisième critère, le troisième critère étant différent du premier critère et du deuxième critère. 30 Suivant des modes de réalisation particuliers, le procédé de détermination comprend une ou plusieurs des caractéristiques suivantes, prise(s) isolément ou suivant toutes les combinaisons techniquement possibles : - l'étape de sélection comprend la décomposition parcimonieuse des éléments du premier espace d'exploration sur un dictionnaire, le dictionnaire étant une matrice dont les 35 éléments satisfont au premier critère, les éléments résultant de la décomposition parcimonieuse appartenant au deuxième espace d'exploration, 3025334 3 - le procédé comprend, en outre, les étapes suivantes : - la détermination dans l'application des tâches réalisables en même temps par deux blocs matériels distincts d'une même architecture candidate pour obtenir un graphique regroupant l'ensemble des tâches effectuables en parallèle, 5 - l'évaluation des besoins nécessaires à la mise en oeuvre de chacune des tâches de l'application sur des blocs matériels spécifiques des architectures candidates afin d'obtenir un tableau regroupant les besoins de chacune des tâches de l'application lorsque les tâches considérées sont réalisées sur lesdits blocs matériels, 10 - l'optimisation de l'application sur la base du tableau et du graphique pour réduire le volume des tâches ou le volume des données transférées entre les tâches de l'application (App), - le premier critère est défini par un utilisateur sur la base du tableau et sur la base de contraintes propres aux architectures candidates et à l'application, 15 - le procédé comprend, en outre, les étapes suivantes : - la mémorisation dans un cinquième espace d'exploration des éléments du premier espace d'exploration ne satisfaisant pas le premier critère, - la mémorisation dans un sixième espace d'exploration des éléments du deuxième espace d'exploration ne satisfaisant pas le deuxième critère, 20 l'étape de sélection comprenant, en outre, l'ajout des éléments du cinquième espace d'exploration dans le deuxième espace d'exploration et l'étape de détermination comprenant, en outre, l'ajout des éléments du sixième espace d'exploration dans le troisième espace d'exploration, les étapes de mémorisation étant mises en oeuvre lors du procédé uniquement lorsque l'optimisation des 25 éléments du quatrième espace d'exploration ne satisfait pas le troisième critère, - la valeur seuil de l'étape de calcul est inférieure aux contraintes en termes de temps d'exécution de l'utilisateur, - le troisième critère est défini par une fonction dont les paramètres comprennent la taille de l'architecture, le nombre de données transférées entre les différents blocs 30 d'une architecture, la bande-passante et la taille des mémoires de l'architecture, la bande passante des communicateurs de l'architecture, la puissance de calcul des différents blocs matériels, le placement des données et les tâches, - les natures des blocs matériels sont choisies parmi des processeur, mémoire et communicateur, les blocs matériels composant les architectures candidates ayant été 35 préalablement optimisés pour une ou plusieurs fonctionnalités ou des tâches spécifiques, 3025334 4 - l'étape d'optimisation selon le troisième critère utilisateur met en oeuvre au moins un algorithme de recherche évolutionnaire, tel qu'un algorithme génétique ou un algorithme de recherche tabou. L'invention concerne aussi un produit programme d'ordinateur comportant un 5 support lisible d'informations, sur lequel est mémorisé un programme d'ordinateur comprenant des instructions de programme, le programme d'ordinateur étant chargeable sur une unité de traitement de données et adapté pour entraîner la mise en oeuvre du procédé précité lorsque le programme d'ordinateur est mis en oeuvre sur l'unité de traitement des données. 10 D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description qui suit de modes de réalisation de l'invention, donnés à titre d'exemple uniquement et en référence aux dessins qui sont : - figure 1, une représentation schématique d'un exemple de système permettant la mise en oeuvre d'un procédé de détermination selon l'invention, 15 - figure 2, un ordinogramme d'un exemple de mise en oeuvre d'un procédé de détermination selon l'invention, - figure 3, un schéma d'un exemple d'un graphique obtenu lors de la mise en oeuvre du procédé de détermination selon l'invention, et - figure 4, un schéma d'un exemple de fonctionnement d'un algorithme utilisé lors 20 de la mise en oeuvre du procédé de détermination selon l'invention. Un système 10 et un produit programme d'ordinateur 12 sont représentés sur la figure 1. L'interaction du produit programme d'ordinateur 12 avec le système 10 permet de mettre en oeuvre un procédé de détermination par optimisation d'une architecture multi-coeurs et d'une façon d'implémenter une application sur l'architecture pour une 25 application donnée. Le système 10 est un ordinateur. Plus généralement, le système 10 est un calculateur électronique propre à manipuler et/ou transformer des données représentées comme des quantités électroniques ou physiques dans des registres du système 10 et/ou des mémoires en 30 d'autres données similaires correspondant à des données physiques dans des mémoires, des registres ou autres types de dispositifs d'affichage, de transmission ou de mémorisation. Le système 10 comporte un processeur 14 comprenant une unité de traitement de données 16, des mémoires 18 et un lecteur 20 de support d'informations. Le système 10 35 comprend un clavier 22 et une unité d'affichage 24. 3025334 5 Le produit programme d'ordinateur 12 comporte un support lisible d'informations 26. Le support lisible d'informations 26 est un support lisible par le système 10, usuellement par l'unité de traitement de données 14. Le support lisible d'informations 26 5 est un médium adapté à mémoriser des instructions électroniques et capables d'être couplé à un bus d'un système informatique. A titre d'exemple, le support lisible d'informations 26 est une disquette ou disque souple (de la dénomination anglaise floppy disk), un disque optique, un CD-ROM, un disque magnéto-optique, une mémoire ROM, une mémoire RAM, une mémoire EPROM, 10 une mémoire EEPROM, une carte magnétique ou une carte optique. Sur le support lisible d'informations 26 est mémorisé un programme d'ordinateur comprenant des instructions de programme. Le programme d'ordinateur est chargeable sur l'unité de traitement de données 14 et est adapté pour entraîner la mise en oeuvre d'un procédé de détermination par 15 optimisation d'une architecture multi-coeur et d'une façon d'implémenter une application sur l'architecture pour une application donnée lorsque le programme d'ordinateur est mis en oeuvre sur l'unité de traitement des données 14. Le fonctionnement du système 10 en interaction avec le produit programme d'ordinateur 12 est maintenant décrit en référence à la figure 2 qui illustre un exemple de 20 mise en oeuvre d'un procédé de détermination selon l'invention. Le procédé de détermination comprend une étape 100 de fourniture d'une application App parallélisée comportant un ensemble de tâches T1, Tn. Une application App est un ensemble de programmes informatiques conçus de façon à fournir un service à un utilisateur. Une application App est, par exemple, utilisée 25 en vue de remplir une fonction de traitement de texte, de tableur, de bureautique, de gestion de production, de systèmes d'informations, de gestion de projet, de comptabilité ou encore de gestion électronique de documents. Une tâche T1,..., Tr, est une action ou un calcul défini par une application App et se caractérisant généralement par trois états : « à faire », « en cours » ou « fait ». Une 30 tâche -G est apte à générer des instructions ou des séquences d'instructions lors de sa mise en oeuvre sur un système physique, tel qu'une architecture. Une tâche T1, Tn est également apte à consommer des données et à produire des données lors de sa mise en oeuvre. Comme décrit précédemment, une donnée est représentée comme une quantité 35 électronique ou physique. Une telle donnée correspond à une description élémentaire d'une réalité se présentant éventuellement sous forme d'un code informatique. Une 3025334 6 donnée consommée signifie que la donnée est utilisée lors de la mise en oeuvre de la tache T1,..., Ts considérée. Une donnée produite signifie que la donnée est générée par la tâche T1,..., Tn, considérée lors de la mise en oeuvre de la tâche T1,..., Tn. Le concept d'application parallélisée désigne une application App comportant un 5 ensemble de tâches Tn, certaines de ces tâches T1,..., Tn étant réalisables en même temps par un système physique, par exemple une architecture, sur lequel l'application App est implémentée. Le terme « implémentation » désigne la mise en place sur un système tel qu'un ordinateur, une plateforme de calcul ou une architecture d'un programme informatique tel qu'une application. 10 L'étape 100 de fourniture d'une application App est généralement mise en oeuvre par fourniture du code source de l'application App. Le procédé de détermination comprend ensuite une étape 110 de fourniture d'architectures multi-coeurs candidates Ars, comprenant chacune différents blocs matériels B1,..., Bn. Un bloc matériel B1,..., Bn présente une nature spécifique et est apte à 15 exécuter une ou plusieurs des tâches T1,..., Tn. De façon générale, une architecture désigne une structure inhérente à un système informatique, l'organisation des éléments du système et les relations entre ces éléments. Un processeur est un exemple d'architecture. Un bloc matériel B1,..., Bn est, par définition, un élément d'une architecture 20 remplissant une fonction ou fonctionnalité prédéterminée, par exemple une fonction de communication ou une fonction de stockage Une même nature de blocs matériels B1,..., Bn regroupe, par exemple, les blocs matériels B1,..., Bn remplissant une fonction prédéterminée ou comportant des composants spécifiques. 25 Les natures des blocs matériels B1,..., Bn sont choisies parmi un groupe comportant notamment des processeurs, des mémoires et des communicateurs. Un processeur ou CPU est un composant d'un ordinateur qui exécute les instructions machine des programmes informatiques. Une instruction machine est une opération élémentaire qu'un programme 30 informatique demande à un processeur d'effectuer. Un programme informatique est une séquence d'instructions machines spécifiant étape par étape les opérations à effectuer pour obtenir un résultat. Les processeurs sont à titre d'exemple des processeurs COTS (de l'anglais Commercial On The Shelve) ou des accélérateurs dataflow. 35 Les processeurs sont généralement aptes à exécuter des tâches d'une application les unes après les autres selon un ordre prédéterminé. Les General Purpose Processor, 3025334 7 les Domain Oriented Processor et les ASIP (de l'anglais Application Specific Instruction-Set Processor) sont des exemples de processeurs. Les accélérateurs dataflow sont quant à eux généralement aptes à exécuter des tâches d'une application dès lors que les données relatives à chacune des tâches sont 5 disponibles. L'ordre d'exécution des tâches n'est alors pas prédéterminé. Un accélérateur data-flow est, par exemple, une unité de calcul réalisant un filtre ou un calcul de transformée de Fourier rapide ou de FFT (de l'anglais Fast Fourier Transform). Une mémoire est un dispositif servant à mémoriser des informations et apte à être intégré dans un système informatique tel qu'un ordinateur. 10 Les mémoires sont, par exemple, des mémoires partagées aptes à être utilisées par plusieurs programmes simultanément, ces programmes étant implémentés sur un ou plusieurs processeurs. Les mémoires sont, par exemple, des mémoires distribuées dédiées chacune à un processeur. Un communicateur est un système de communication entre les composants d'un 15 système informatique tel qu'un ordinateur. Les communicateurs sont, par exemple, des bus informatiques ou des NoC. Optionnellement, les blocs matériels B1,..., Bn composant les architectures Ar, candidates ont été préalablement optimisés pour une ou plusieurs fonctionnalités, telles que, par exemple, une fonction de traitement de texte ou de tableur, 20 ou des tâches T1,..., Tn Spécifiques. L'optimisation des blocs matériels B1,..., Bn est réalisée antérieurement à la mise en oeuvre du procédé de détermination, par exemple, par un outil de synthèse de haut niveau ou manuellement par un utilisateur. L'étape 110 de fourniture d'architectures Ar, est généralement mise en oeuvre par fourniture d'une librairie d'architectures à l'unité de traitement de données 16. 25 La librairie d'architecture est, par exemple, représentée grâce au standard IP-XACT. Le standard IP-XACT est défini dans le document « Evaluating uml2 modeling of ip-xact objects for automatic mpsoc integration onto fpga » de T. Arpinen et al. publié en 2009. Le procédé de détermination comprend ensuite, optionnellement, une étape 120 30 de détermination dans l'application App des tâches T1,..., T, réalisables en même temps par deux blocs matériels B1,..., Bn distincts d'une même architecture Ar, candidate. De telles tâches Tn réalisables en même temps sont dites « parallèlisables ». L'étape 120 de détermination permet également d'obtenir un graphique G regroupant l'ensemble des tâches Tn effectuables en parallèle. 35 Par exemple, comme visible sur la figure 3, sur un tel graphique G les tâches T, sont reliées les unes aux autres par des flèches modélisant l'ordre d'exécution 3025334 8 des tâches T1,..., Tn. Sur l'exemple de la figure 3, cinq tâches T1, T2, T3, T4, T5 sont représentées, les tâches T3 et T4 étant parallèlisables. Un tel graphique G est visualisable par un utilisateur au moyen de l'unité d'affichage 24. 5 L'étape 120 de détermination des tâches est généralement mise en oeuvre à partir du code source de l'application App et d'un outil de calcul et/ou de compilation ou d'un outil de parallèlisation de code. Par exemple, l'étape 120 est réalisée au moyen du compilateur PIPS (abréviation de Parallélisation Interprocédurale de Programmes Scientifiques). Le compilateur PIPS permet d'analyser et de transformer des programmes 10 en langage C et en langage FORTRAN (de l'anglais Formula Translator). Le procédé de détermination comporte, optionnellement, une étape 130 d'évaluation des besoins nécessaires à l'implémentation des tâches Tn de l'application App sur les blocs matériels B1,..., Bn spécifiques des architectures Ar,,..., Arn candidates. 15 Les blocs matériels B1,..., Bn spécifiques des architectures Ar1,..., Arn candidates sont, par exemple, les blocs matériels B1,..., Bn ayant une nature de processeurs. Plus particulièrement, les blocs matériels B1,..., Bn spécifiques sont des processeurs COTS. Les besoins évalués sont, notamment, le nombre d'instructions nécessaires à l'exécution, c'est-à-dire à la mise en oeuvre, d'une tâche T1,..., Tn sur un bloc matériel 20 B1,..., Bn spécifique. A titre d'exemple, les besoins évalués regroupent également le rapport entre la quantité de données produites par chaque tâche T1,..., Tn et la quantité de données consommées par chaque tâche Tn. Un tel rapport définit ainsi la proportion de données transférées lors de l'exécution d'une tâche T1,..., Tn donnée sur un bloc matériel 25 B1,..., B,, spécifique. En variante, les besoins évalués sont, également, le temps d'exécution de chaque tâche T1,..., T,, sur chacun des blocs matériels B1,..., Bn de nature processeurs. L'étape 130 d'évaluation permet d'obtenir un tableau T regroupant les besoins de chacune des tâches T1,..., Tn de l'application App lorsque les tâches T1,..., Tn considérées 30 sont réalisées sur chacun des blocs matériels B1,..., Bn spécifiques. Un tel tableau T est, par exemple, un tableau regroupant pour chaque tâche T' de l'application App et pour chaque bloc matériel B1,..., Br, spécifique, le nombre d'instructions et le temps d'exécution nécessaires à l'exécution de chacune de ces tâches Tri sur chacun de ces blocs matériels B1,..., Bn spécifiques. 3025334 9 Avantageusement, le tableau T regroupe, également, pour chaque tâche Tn le rapport entre la quantité de données produites et la quantité de données consommées par la tâche T1,..., Tn. Un tableau T est, par exemple, de la forme suivante : Nombre d'instructions Données produites / Données consommées (ko) B1 ... Bn T1 12500 10500 2400/3600 T2 5632 5032 3600/4000 T3 7852 7552 4000/2600 T4 45236 ... 46236 4000/2600 T5 78256 79256 2600/1300 T1 T2 T3 T4 T5 B1 2,2 N/A 1,4 2,1 1,7 B2 1,45 1,6 N/A N/A 1,05 --- - --- --- --- --- ... ... ... ... ... ... B, N/A 1,5 N/A N/A 1,2 Le premier tableau regroupe les besoins en termes de nombres d'instructions et de rapport entre la quantité de données produites et la quantité de données consommées. Le deuxième tableau regroupe les besoins en termes de temps d'exécution. 10 Dans un tel tableau, la mention « NIA » signifie que la tâche T1,..., Tn correspondante n'est pas apte à être mise en oeuvre sur le bloc matériel B1,..., Bn correspondant. Un tel tableau T est visualisable par un utilisateur au moyen de l'unité d'affichage 24. 15 L'étape 130 d'évaluation des besoins est généralement mise en oeuvre en instrumentant le code source de l'application App, c'est-à-dire en rajoutant des instructions au code source originel de l'application App de sorte à mesurer les besoins des tâches T1,..., Tn de l'application App lors de leur exécution. Plus particulièrement, cette étape 130 d'évaluation est mise en oeuvre par un outil 20 informatique tel qu'un profiteur de code. Un profileur de code est un outil qui consiste à analyser l'exécution d'un logiciel ou d'une application afin de connaître son comportement à l'exécution. Par exemple, l'étape 130 d'évaluation est réalisée au moyen de l'outil OVP (de l'anglais Open Virtual Platforms). L'intérêt de l'outil OVP est qu'il comprend une librairie 3025334 10 de processeurs normés, ainsi qu'une interface de programmation de haute qualité pour définir de nouveaux blocs matériels B1,..., Bn de nature processeurs. Par exemple, l'étape 130 d'évaluation est réalisée au moyen d'un profileur de code tel qu'un profileur CNU ou un valgrind. 5 Le procédé de détermination comprend ensuite, facultativement, une étape 140 d'optimisation de l'application App sur la base du tableau T et du graphique G. Cette étape 140 d'optimisation prend en compte les souhaits d'un utilisateur, notamment en ce qui concerne les besoins évalués lors de l'étape 130 d'évaluation. Par exemple, l'utilisateur peut souhaiter que les besoins évalués lors de l'étape 10 130 d'évaluation soient réduits. Plus particulièrement, concernant ces besoins évalués lors de l'étape 130 d'évaluation, l'utilisateur peut souhaiter que le temps d'exécution soit réduit, que le nombre d'instructions soit réduit ou encore que le rapport entre la quantité de données produites et la quantité de données consommées soit compris dans une plage de valeurs déterminée. 15 Les souhaits de l'utilisateur concernent également les ressources utilisées par chaque bloc matériel B1,..., B. Ces ressources prennent en compte, par exemple, la charge et la bande passante des blocs matériels B1,..., B,, de nature mémoire ou la puissance de calcul de chaque bloc matériel B1,..., Bn. L'utilisateur peut souhaiter, par exemple, modifier les ressources utilisées par chaque bloc matériel B1,..., Bn. 20 L'étape 140 d'optimisation vise donc à modifier l'application App en prenant en compte les souhaits d'un utilisateur. L'étape 140 d'optimisation permet d'obtenir une application App optimisée pour remplacer l'application App fournie lors de l'étape 100 de fourniture. Cette application App optimisée est ensuite utilisée pour la suite de la mise en oeuvre du procédé de 25 détermination. L'étape 140 d'optimisation est mise en oeuvre par le processeur 14 et implique généralement l'intervention d'un utilisateur au moyen du clavier 22 notamment. Le procédé de détermination comprend ensuite une étape 150 de définition d'un premier espace d'exploration El. 30 Le premier espace d'exploration E1 a pour éléments les différentes façons d'implémenter l'application App sur chacune des architectures Arn candidates. Ce premier espace El comprend en d'autres termes l'ensemble des possibilités de mises en oeuvre de chacune des tâches T1,..., Tn de l'application App sur l'ensemble des blocs matériels B1,..., B, de chacune des architectures Arn candidates. Un élément du 35 premier espace d'exploration E1 correspond donc à une implémentation d'une tâche 3025334 11 T1,..., Tn de l'application App sur un bloc matériel B1,..., Br, d'une architecture Ar,,..., Arn candidate. Le premier espace d'exploration El est, par exemple, une matrice dont les éléments sont les implémentations de chaque tâche T1,..., Tn sur chacun des blocs 5 matériels B1,..., Bn des architectures Arn candidates. Par exemple, la matrice du premier espace d'exploration El comprend un nombre de lignes correspondant au nombre de tâches T1,..., Tn et un nombre de colonnes correspondant au nombre de blocs matériels B1,..., Bn de l'ensemble des architectures Ar, candidates. L'étape 150 de définition du premier espace d'exploration E1 est, généralement, 10 mise en oeuvre par le processeur 14 au moyen du support lisible d'informations 26. Le procédé de détermination comprend ensuite une étape 160 de sélection dans le premier espace d'exploration El, des éléments satisfaisant un premier critère C1. Le premier critère C1 spécifie que chaque tâche T1,..., Tn de l'application App est apte à être implémentée sur seulement un ou plusieurs blocs matériels B1,..., Bn. Le 15 premier critère C1 permet de faire correspondre une tâche T1,..., Tn à un ensemble de blocs matériels B1,..., Bn. Ainsi, les blocs matériels Bn ne respectant pas le premier critère C1 pour une tâche T1,..., Tn considérée ne sont plus envisagés pour implémenter la tâche T1,..., Tn considérée. Le premier critère C1 est choisi par un utilisateur au moyen du clavier 22 20 notamment. Cette étape 160 de sélection permet d'obtenir un deuxième espace d'exploration E2 comprenant les éléments du premier espace d'exploration El satisfaisant le premier critère C1. Le deuxième espace d'exploration E2 est, par exemple, une matrice dont les 25 éléments sont les implémentations de chaque tâche Tn sur chacun des blocs matériels B1,..., B, des architectures Ari,..., Ar, candidates, ces implémentations respectant le premier critère C1. Cette étape 160 de sélection comprend la décomposition parcimonieuse des éléments du premier espace d'exploration E1 sur un dictionnaire D, le dictionnaire D étant 30 une matrice dont les éléments satisfont au premier critère C1, les éléments résultant de la décomposition parcimonieuse appartenant au deuxième espace d'exploration E2. Usuellement, un signal est représenté sous la forme d'une transformation linéaire de ses coefficients et est dit parcimonieux lorsque la plupart de ses coefficients sont approximativement nuls. 35 Une décomposition parcimonieuse d'un signal est classiquement une décomposition d'un signal sur un dictionnaire D, ce dictionnaire D comprenant un nombre 3025334 12 d'éléments très supérieur à la dimension du signal et une telle décomposition introduisant dans la nouvelle représentation du signal un grand nombre de valeurs nulles. Dans ce qui suit, les termes en gras désignent des vecteurs. Classiquement, le vecteur solution y issu de la décomposition parcimonieuse d'un 5 signal vecteur x sur le dictionnaire D est donné en notations vectorielles par l'équation Eq1 suivante : y = D.x En l'occurrence, le vecteur solution y définit pour chaque tâche T1,..., Tn de l'application App un bloc matériel Bn spécifique des architectures Arn candidates apte à mettre en oeuvre la tâche T1,..., Tn considérée. 10 Lors d'une décomposition parcimonieuse, le choix du dictionnaire D influe notamment sur le temps de calcul nécessaire à la détermination du vecteur solution y. Le dictionnaire D est déterminé par un utilisateur qui choisit pour chaque tâche T1,..., Tn un ensemble de blocs matériels B1,..., Bn. En particulier, pour déterminer le dictionnaire D, l'utilisateur choisit pour chaque tâche 15 T1,..., T,, les blocs matériels B1,..., Bn aptes à respecter des contraintes en termes de temps d'exécution de l'application App sur une architecture. Par exemple, si un bloc matériel B1,..., Bn met dix secondes pour exécuter une première tâche T1 et que la contrainte en termes de temps d'exécution de l'application App est de 5 secondes, ledit bloc matériel B1,..., Bn n'est pas considéré dans le 20 dictionnaire D comme une solution potentielle à l'exécution de la tâche T1. Par exemple, l'utilisateur définit un dictionnaire D sur la base du tableau suivant : B1 B2 B3 ... B10 T1 1 0 1 ... 1 T2 1 1 1 ... 1 T3 1 0 0 ... 0 T4 0 1 0 . . . 1 T5 0 1 0 ... 1 Sur un tel tableau, le nombre 1 signifie que la tâche correspondante est apte à être mise en oeuvre sur le bloc matériel correspondant. Le nombre 0 signifie que la tâche 25 correspondante n'est pas apte à être mise en oeuvre sur le bloc matériel correspondant. Ainsi, la tâche T1 est apte à être mise en oeuvre sur les blocs matériels B1, B3 et B10, la tâche T2 sur les blocs matériels B1, B2, B3 et B10 et la tâche T3 sur le bloc matériel B1. Les tâches T4 et T5 sont quant à elles aptes à être mises en oeuvre sur les blocs matériels B2 et Blo. 3025334 13 Ainsi, lors de l'étape 160 de sélection, un utilisateur est sollicité pour définir le premier critère C1 éventuellement sur la base du tableau T et sur la base de contraintes propres aux architectures Ari,..., Arn candidates et à l'application App. De telles contraintes sont par exemple, des contraintes en termes de temps 5 d'exécution, de surface et d'énergie consommée. Le premier critère C1 permet à un utilisateur de déterminer les blocs matériels B1, Bn susceptibles de mettre en oeuvre chaque tâche T1,..., Tn de l'application App. L'étape 160 de sélection est généralement mise en oeuvre par le processeur 14 au moyen du support lisible d'informations 26. 10 Au cours de l'étape 160 de sélection, l'intervention d'un utilisateur est généralement requise au moyen du clavier 22 notamment. Le procédé de détermination comprend ensuite une étape 170 de détermination dans le deuxième espace d'exploration E2 des éléments satisfaisant un deuxième critère C2, le deuxième critère C2 étant différent du premier critère C1 de l'étape 160 de sélection. 15 Le deuxième critère C2 spécifie le nombre maximal de blocs matériels Bi,...,Bn séparant, c'est-à-dire servant d'intermédiaires pour acheminer des données ou instructions entre un premier bloc matériel B1 sur lequel est implémentée une première tâche T1 et un deuxième bloc matériel B2 sur lequel est implémentée une deuxième tâche T2 distincte de la première tâche T1. 20 Le nombre maximal de blocs matériels B1,..., Bn est spécifique aux deux tâches T1, T2 considérées. En d'autre termes, chaque groupe de tâches T1, T2 distinctes comporte un nombre maximal de blocs matériels B1, Bn servant d'intermédiaires pour acheminer des données ou instructions entre un premier bloc matériel B1 sur lequel est implémentée la première tâche T1 et un deuxième bloc matériel B2 sur lequel est 25 implémentée la deuxième tâche T2. Le nombre de blocs matériels B1,..., Bn servant d'intermédiaires à l'acheminement des données ou instructions de deux tâches T1, T2 distinctes doit être inférieur ou égal au nombre maximal de blocs matériels B1,..., Bn spécifiques aux deux tâches T1, T2 considérées pour respecter le deuxième critère C2. 30 Les nombres maximaux de blocs matériels B1, ..., Bn servant d'intermédiaires pour acheminer des données ou instructions entre deux tâches T1,..., Tn distinctes sont généralement compris entre 4 et 20. Par exemple, le tableau suivant récapitulé les nombres maximaux de blocs matériels B1,..., Bn servant d'intermédiaires pour acheminer des données ou instructions 35 entre deux tâches T1,..., Tr, distinctes : 3025334 14 T1 T2 T3 T4 T5 T1 N/A 2 N/A N/A N/A T2 2 N/A 4 4 N/A T3 NIA 4 NIA N/A 1 T4 N/A 4 N/A NIA 2 T5 NIA NIA 1 2 NIA Dans ce tableau, la mention « N/A » signifie que les deux tâches considérées ne communiquent pas entre elles. Cette étape 170 de détermination permet d'obtenir un troisième espace 5 d'exploration E3 comprenant les éléments du deuxième espace d'exploration E2 satisfaisant le deuxième critère C2. Le troisième espace d'exploration E3 est, par exemple, une matrice dont les éléments sont les implémentations de chaque tâche T1,..., Tn sur chacun des blocs matériels B1,..., B, des architectures Ar, candidates, ces implémentations 10 respectant le premier critère C1 et le deuxième critère C2. Le deuxième critère C2 est défini par un utilisateur, à l'aide éventuellement du tableau T et du graphique G, de manière à guider le placement des tâches T1,..., Tn sur les blocs matériels B1,..., Bn. Par exemple, le deuxième critère C2 permet de spécifier que deux tâches T1, T2 15 distinctes communiquant l'une avec l'autre soient préférentiellement implémentées sur des blocs matériels B1, B2 tels que les données ou instructions acheminées entre ces deux blocs B1, B2 traversent un nombre restreint de blocs matériels B1,..., B, servant d'intermédiaires. Ce nombre restreint de blocs matériels B1,..., B, est, par exemple, compris entre 1 et 20 pour chaque tâche Tn. 20 L'étape 170 de détermination est généralement mise en oeuvre par le processeur 14 au moyen du support lisible d'informations 26. Au cours de cette étape 170 de détermination, l'intervention d'un utilisateur est généralement requise au moyen du clavier 22 notamment. Le procédé de détermination comprend ensuite une étape 180 de calcul pour 25 chacun des éléments du troisième espace d'exploration E3 du nombre de données échangées entre les tâches T1,..., Tn implémentées sur les blocs matériels B1,..., Bn. Lors de cette étape 180 de calcul, les nombres calculés sont ensuite comparés à une valeur seuil Vs. La valeur seuil V, est choisie de sorte que le temps d'exécution résultant de 30 l'échange des données entre deux blocs B1,..., B, soit inférieur ou égal aux contraintes en termes de temps d'exécution imposées par l'utilisateur. 3025334 15 L'étape 180 de calcul permet d'obtenir un quatrième espace d'exploration E4 comportant les éléments du troisième espace d'exploration E3 dont le nombre de données échangées est inférieur ou égal à la valeur seuil Vs. Le quatrième espace d'exploration E4 est, par exemple, une matrice dont les 5 éléments sont les implémentations de chaque tâche T1,..., Tn sur chacun des blocs matériels B1,..., Bn des architectures Ar' candidates, ces implémentations respectant le premier critère C1, le deuxième critère C2 et le nombre de données échangées entre les tâches T1,..., Tn implémentées sur les blocs matériels B1,..., Bn étant inférieur ou égal à la valeur seuil Vs. 10 L'étape 180 de calcul est généralement mise en oeuvre par le processeur 14 au moyen du support lisible d'informations 26. Le procédé de détermination comprend ensuite une étape 190 d'optimisation des éléments du quatrième espace d'exploration E4 selon un troisième critère C3, le troisième critère C3 étant différent du premier critère C1 et du deuxième critère C2. 15 Cette étape 190 d'optimisation permet d'obtenir une architecture Aro mufti-coeurs optimisée pour l'application App, accessible sous la forme d'un code source tel qu'un code VHDL (de l'anglais Hardware Description Language) apte à fonctionner sur n'importe quelle famille de composants FPGA. Un code VHDL est un code réalisé dans un langage de description de matériel 20 destiné à représenter le comportement ainsi que l'architecture d'un système électronique numérique. Un FPGA est un circuit logique programmable, c'est-à-dire un circuit intégré logique apte à être reprogrammé après sa fabrication. Le code source d'architecture, tel qu'un code VHDL, obtenu lors de l'étape 190 est 25 normé. L'étape 190 d'optimisation permet également d'obtenir une application App éventuellement optimisée, accessible par exemple sous la forme d'un code binaire. Le troisième critère C3 est défini par une fonction f dite fonction de coût. Une telle fonction de coût f vérifie, par exemple, l'équation Eq2 suivante : f = a. Ar + )3. Perf 30 où a, p sont des paramètres de pondération vérifiant a+8 REVENDICATIONS1.- Procédé de détermination par optimisation d'une architecture multi-coeurs et d'une façon d'implémenter une application (App) sur l'architecture pour une application (App) donnée, le procédé comprenant : - la fourniture (100) d'une application (App) parallélisée, une application (App) parallélisée étant un ensemble de tâches (T1,..., Ta), - la fourniture (110) d'architectures Ara) candidates comprenant chacune différents blocs matériels (B1,..., Bu), un bloc matériel Ba) présentant une nature spécifique et étant apte à exécuter une ou plusieurs des tâches (T1,..., Ta), - la définition (150) d'un premier espace d'exploration (E1) ayant pour éléments les différentes façons d'implémenter l'application (App) sur chacune des architectures (Ar,,..., Ara) candidates; - la sélection (160) dans le premier espace d'exploration (E1) des éléments vérifiant un premier critère (C1) selon lequel chaque tâche (T1,..., Tn) de l'application (App) est apte à être mise en oeuvre sur seulement un ou plusieurs blocs matériels (B1,..., Bu), pour obtenir un deuxième espace d'exploration (E2) comprenant les éléments du premier espace d'exploration (E1) satisfaisant le premier critère (C1), - la détermination (170) dans le deuxième espace d'exploration (E2) des éléments vérifiant un deuxième critère (C2), le deuxième critère (C2) étant différent du premier critère (C1) et requérant que le nombre de blocs matériels (B1,..., Bn) séparant un premier bloc matériel (B1,..., Bn) mettant en oeuvre une première tâche T,,) et un deuxième bloc matériel (B1,..., Br)) mettant en oeuvre une deuxième tâche Tn) distincte de la première tâche (T1,..., Ta), soit inférieur ou égal à une valeur propre aux deux tâches Tn) considérées, pour obtenir un troisième espace d'exploration (E3) comprenant les éléments du deuxième espace d'exploration (E2) satisfaisant le deuxième critère (C2), - le calcul (180) du nombre de données échangées entre les blocs matériels (B1,..., B,,) pour chacun des éléments du troisième espace d'exploration (E3) et la comparaison de chaque nombre calculé à une valeur seuil (Vs), pour obtenir un quatrième espace d'exploration (E4) comprenant les éléments du troisième espace d'exploration (E3) dont le nombre de données échangées est inférieur ou égal à la valeur seuil (Vs), et - l'optimisation (190) des éléments du quatrième espace d'exploration (E4) selon un troisième critère (C3), le troisième critère (C3) étant différent du premier critère (C1) et du deuxième critère (C2). 3025334 26 2.- Procédé selon la revendication 1, dans lequel l'étape de sélection (160) comprend la décomposition parcimonieuse des éléments du premier espace d'exploration (E1) sur un dictionnaire (D), le dictionnaire (D) étant une matrice dont les éléments satisfont au premier critère (Cl), les éléments résultant de la décomposition 5 parcimonieuse appartenant au deuxième espace d'exploration (E2). 3.- Procédé selon la revendication 1 ou 2, dans lequel le procédé comprend, en outre, les étapes suivantes : - la détermination (120) dans l'application (App) des tâches (T1,..., Ta) réalisables 10 en même temps par deux blocs matériels (B1,..., Bn) distincts d'une même architecture Ar,,) candidate pour obtenir un graphique (G) regroupant l'ensemble des tâches Tn) effectuables en parallèle, - l'évaluation (130) des besoins nécessaires à la mise en oeuvre de chacune des tâches (T1,..., Ta) de l'application (App) sur des blocs matériels (B1,..., Bn) spécifiques des 15 architectures (Ar) ,..., Ara) candidates afin d'obtenir un tableau (T) regroupant les besoins de chacune des tâches (T1,..., Ta) de l'application (App) lorsque les tâches Ta) considérées sont réalisées sur lesdits bloc matériels (B1,..., Bu). - l'optimisation (140) de l'application (App) sur la base du tableau (T) et du graphique (G) pour réduire le volume des tâches (T1,..., T,,) ou le volume des données 20 transférées entre les tâches (T1,..., Ta) de l'application (App). 4.- Procédé selon la revendication 3, dans lequel le premier critère (C1) est défini par un utilisateur sur la base du tableau (T) et sur la base de contraintes propres aux architectures Ara) candidates et à l'application (App). 25 5.- Procédé selon l'une quelconque des revendications 1 à 4, dans lequel le procédé comprend, en outre, les étapes suivantes : - la mémorisation (200) dans un cinquième espace d'exploration (E5) des éléments du premier espace d'exploration (E1) ne satisfaisant pas le premier critère (C1), 30 - la mémorisation (200) dans un sixième espace d'exploration (E6) des éléments du deuxième espace d'exploration (E2) ne satisfaisant pas le deuxième critère (C2), l'étape de sélection (160) comprenant, en outre, l'ajout des éléments du cinquième espace d'exploration (E5) dans le deuxième espace d'exploration (E2) et l'étape de détermination (170) comprenant, en outre, l'ajout des éléments du sixième espace 35 d'exploration (E6) dans le troisième espace d'exploration (E3), les étapes de mémorisation 3025334 27 étant mises en oeuvre lors du procédé uniquement lorsque l'optimisation des éléments du quatrième espace d'exploration (E4) ne satisfait pas le troisième critère (C3). 6.- Procédé selon l'une quelconque des revendications 1 à 5, dans lequel la valeur 5 seuil (Vs) de l'étape de calcul est inférieure aux contraintes en termes de temps d'exécution de l'utilisateur. 7.- Procédé selon l'une quelconque des revendications 1 à 6, dans lequel le troisième critère (C3) est défini par une fonction (f) dont les paramètres comprennent la 10 taille de l'architecture Arn), le nombre de données transférées entre les différents blocs Bn) d'une architecture Arn), la bande-passante et la taille des mémoires de l'architecture Arn), la bande passante des communicateurs de l'architecture Arn), la puissance de calcul des différents blocs matériels Bn), le placement des données et les tâches Te). 15 8.- Procédé selon l'une quelconque des revendications 1 à 7, dans lequel les natures des blocs matériels (B1,..., Bn) sont choisies parmi des processeur, mémoire et communicateur, les blocs matériels (B1,..., 13,) composant les architectures Ara) candidates ayant été préalablement optimisés pour une ou plusieurs fonctionnalités ou 20 des tâches (T1,..., Tn) spécifiques. 9.- Procédé selon l'une quelconque des revendications 1 à 8, dans lequel l'étape d'optimisation (190) selon le troisième critère utilisateur (C3) met en oeuvre au moins un algorithme de recherche évolutionnaire, tel qu'un algorithme génétique ou un algorithme 25 de recherche tabou. 10.- Produit programme d'ordinateur comportant un support lisible d'informations, sur lequel est mémorisé un programme d'ordinateur comprenant des instructions de programme, le programme d'ordinateur étant chargeable sur une unité de traitement de 30 données et adapté pour entraîner la mise en oeuvre d'un procédé selon l'une quelconque des revendications 1 à 9 lorsque le programme d'ordinateur est mis en oeuvre sur l'unité de traitement des données.