FR 3055716 A1 20180309 FR 1658347 A 20160908 1 ECHANGE DE MESSAGES PENDANT L'EXECUTION PARALLELE DE PROCESSUS DANS UN CALCULATEUR HAUTE PERFORMANCE Domaine Technique La présente invention se rapporte de manière générale aux calculateurs haute performance aussi connus sous le nom de calculateurs HPC (« HighPerformance Computing » selon la terminologie anglo-saxonne). Elle concerne en particulier l'identification d'une carte réseau correspondant à un noeud de calcul utilisé pendant l'exécution d'un travail dans un calculateur HPC du type à mémoire distribuée, et vise plus particulièrement un procédé d'échange de messages pendant l'exécution de processus réalisant des opérations parallèles d'un programme utilisateur en cours d'exécution dans un calculateur haute performance. L'invention trouve des applications, notamment, dans les calculateurs haute performance qui sont utilisés par exemple dans le domaine du calcul scientifique ou financier. L'invention peut aussi s'appliquer à des environnements de type grille de calcul (ou « Cloud-Computing » en anglais), c'est-à-dire dont les éléments sont distants les uns des autres, éventuellement sur des sites différents. Arrière-plan Technologique Une grappe (ou cluster) de serveurs est un groupe de serveurs indépendants fonctionnant comme un seul et même système de traitement de données. Un client utilise une grappe comme s'il s'agissait d'une machine unique. Les grappes sont habituellement constitués de noeuds, un noeud comprenant au minimum un processeur et de la mémoire. Communément, ces noeuds comprennent des noeuds de calcul et/ou de stockage, et un ou plusieurs noeuds de service comme des noeuds frontaux qui permettent d'assurer l'administration du cluster. Dans certaines applications, des noeuds de service supplémentaires peuvent en outre être dédiés au suivi (« monitoring », en anglais) de l'activité, par exemple. Les noeuds du cluster peuvent être reliés entre eux par un ou plusieurs réseaux technologiquement similaires ou différents. 3055716 2 Ainsi, un réseau avec un débit relativement lent, d'une part, est généralement dédié aux tâches d'administration (chargement des systèmes sur les noeuds, suivi d'activité, mesure de charge, etc.). Sur ce réseau d'administration, chaque noeud est identifié de manière unique, par exemple une 5 adresse IP (« Internet Protocol » dans la terminologie anglo-saxonne) pour un réseau d'administration de type Ethernet à laquelle correspond également un nom. Ce nom de la machine associé au noeud de calcul, ou nom-machine ou encore nom d'hôte (« hostname » dans la terminologie anglo-saxonne), est une 10 correspondance permettant d'identifier une machine sur le réseau d'interconnexion. Ce nom d'hôte peut être utilisé dans le code d'un programme contenant des instructions ou des routines qui font appel à la machine correspondante. Dans le contexte du HPC, une telle machine est typiquement un noeud de calcul du cluster. Ce pseudonyme de la machine est associé de 15 manière bijective à son identifiant sur le réseau d'administration, par exemple son adresse IP. À ce réseau d'administration s'ajoute, d'autre part, un second réseau ou réseau d'interconnexion (ou fabrique d'interconnexion), avec un débit beaucoup plus important et une faible latence. Ce réseau peut utiliser des technologies de 20 type InfiniBandîM ou Intel OmniPathTM. Le débit unitaire peut atteindre plusieurs dizaines de gigabits par seconde, par exemple. Dans un modèle de programmation parallèle par échange de messages, le programme à exécuter est dupliqué en plusieurs processus. Chaque processus exécute un exemplaire du programme sur un noeud de calcul respectif 25 du cluster, et a accès à sa mémoire propre sur ce noeud dans la cas d'un calculateur à mémoire distribuée. De ce fait, les variables du programme deviennent des variables locales au niveau de chaque processus. De plus, un processus ne peut pas accéder à la mémoire des processus voisins. Un processus (processus émetteur) peut toutefois envoyer des informations à d'autres processus (processus récepteurs). A cet effet, les processus récepteurs doivent avoir été informés de ce qu'ils devaient recevoir ces informations du processus émetteur. La communication entre processus se fait par passage de messages, c'est-à-dire par envoi/réception de messages entre processus. 3055716 3 A cet effet, les programmes exécutés sur ce genre de machine peuvent se servir d'une API standard comme par exemple MPI (« Message Passing Interface »), qui utilise la communication avec des messages échangés entre les divers processus répartis sur les noeuds. Techniquement, cette communication 5 se fait via des fonctions de la bibliothèque MPI appelées dans le programme. L'environnement MPI permet de gérer et d'interpréter ces messages. Dans un tel contexte, le nombre d'éléments communicants (processus) peut être très élevé, par exemple plusieurs milliers. Et ce nombre ne cesse d'augmenter, notamment avec le passage à l'ère Exaflopique. 10 Art Antérieur Lors de la soumission d'un travail sur un calculateur distribué du type précité, un nombre donné de ressources est précisé par l'utilisateur. En général, il est exprimé en nombre de noeuds ou en nombre de coeurs de processeurs qui sont nécessaires pour exécuter le travail. 15 De ce fait, lors de l'allocation des ressources, le travail va s'exécuter sur un nombre défini de noeuds identifiés chacun par leur nom d'hôte ou « hostname ». Ces noms sont en fait des alias permettant de déterminer l'adresse IP correspondant à chaque noeud. Cette détermination, ou traduction, se fait en règle générale par l'intermédiaire d'un service de type DNS (« Domain 20 Name Service » dans la terminologie anglo-saxonne) ou à travers un fichier de correspondance (/etc/hosts) local. Ensuite, il est nécessaire d'identifier les cartes physiques (ou cartes réseau) associées du réseau haut débit (InfiniBandTM ou IB, OmniPathTM ou OPA, ...) qui serviront durant les communications (échanges de message), lors 25 de l'exécution du travail. Il convient donc de déterminer l'identifiant unique, sur le réseau d'interconnexion, de chaque carte physique de chaque noeud utilisé pour réaliser le travail soumis. Cet identifiant unique de noeud sur le réseau d'interconnexion est appelé « Node ID » dans la terminologie anglo-saxonne. En résumé, il existe trois niveaux d'identification d'une ressource utilisée 30 pour exécuter un travail correspondant à une partie du calcul : - le nom d'hôte ou Hostname qui est son pseudonyme utilisé dans le programme exécuté, - l'adresse IP qui est son identifiant sur le réseau d'administration, et 3055716 4 - le Node ID qui est l'identifiant sur le réseau d'interconnexion de la carte réseau correspondante. Et il convient de réaliser les deux étapes de traduction suivantes, notées ® et C) respectivement, pour aboutir à l'élément physique souhaité lors des 5 échanges durant l'exécution du travail : Hostname ----®----> Adresse IP ----©----> Node ID (IB, OPA...) Cette méthode d'identification est standard dans MPI et sur tous les supercalculateurs. Cependant elle est loin d'être optimale car elle nécessite plusieurs 10 étapes chacune pouvant engendrer différents problèmes : - Problème de passage à l'échelle (« Scalability », en anglais), notamment car le serveur DNS est unique, et peut ne pas tenir la charge pour réaliser un grand nombre de traductions ® ; - Problème de cohérence des informations nécessaires pour les 15 deux traductions ® et ©, car les fichiers /etc/hosts peuvent ne pas être tenus à jour sur certains noeuds ; - Multiplication des opérations de traduction nécessitant chacune du temps de calcul, qui est donc perdu pour le calcul en lui-même (temps d'initialisation) ; 20 - Nécessité de demander à chaque noeud son Node ID une fois la résolution IP obtenue, entrainant un grand nombre d'échanges sur le réseau d'interconnexion pour les traductions C). L'invention vise à permettre d'obtenir plus rapidement et plus efficacement les Node ID des cartes réseau haut débit (IB, OPA...) 25 correspondant aux noeuds utilisés pendant un calcul exécuté en faisant appel à la parallélisation de processus sur un supercalculateur à mémoire distribuée, à partir du nom d'un noeud (hostname) tel qu'utilisé dans le programme d'application. Notamment, l'une des contraintes d'efficacité prises en compte est de pouvoir passer à l'échelle pour des clusters à très grand nombre de noeuds 30 (par exemple plusieurs dizaines de milliers). 3055716 5 Résumé de l'Invention A cette fin, des modes de réalisation de l'invention proposent d'obtenir directement, par l'intermédiaire d'une ou plusieurs entités tierces, le Node ID d'un noeud de calcul utilisé pendant le calcul à partir de son hostname. 5 L'invention permet donc de supprimer, ou du moins atténuer, tout ou partie des inconvénients de l'art antérieur précités puisqu'elle évite les deux traductions CI et ® explicitées en introduction. Selon des modes de réalisation de l'invention, des processus en cours d'exécution sur des noeuds de calcul respectifs peuvent communiquer entre eux 10 par échange de messages à travers la fabrique d'interconnexion. Pour l'échange de messages entre processus, l'identification d'une carte physique (HCA) associée à un noeud de calcul est réalisée directement à partir du nom d'hôte dudit noeud qui est utilisé dans le programme utilisateur. Cette identification directe est effectuée à partir d'au moins une table de correspondance associant 15 de manière bijective le nom de chaque noeud de calcul de la grappe à l'adresse logique unique de la carte physique associée. Cette table de correspondance est entretenue dans un composant logiciel du calculateur en charge de la gestion de la fabrique, à savoir le gestionnaire de fabrique (« fabric manager » selon la terminologie anglo-saxone). Cette table, qui existe déjà au sein d'un serveur de 20 service qui opère comme noeud de tête du cluster, associe bijectivement les identificateurs de chaque carte physique présente dans les noeuds de la grappe aux noms d'hôte des noeuds correspondants tels qu'ils apparaissent au niveau logique dans le programme utilisateur. Plus particulièrement, un premier aspect de l'invention propose un 25 procédé d'échange de messages pendant l'exécution de processus réalisant des opérations parallèles d'un programme utilisateur en cours d'exécution dans un calculateur haute performance distribué comprenant, d'une part, une grappe de noeuds de calcul au sein de laquelle chaque noeud de calcul est connu dans le programme utilisateur par un nom d'hôte (ou pseudonyme, ou « alias ») et est 30 associé à une carte physique ayant des ressources physiques déterminées (e.g. des coeurs de processeurs, mémoire de stockage) pour l'exécution d'un processus et ayant une adresse logique unique (identifiant Node ID) et, d'autre part, une fabrique d'interconnexion (e.g. à haut débit et faible latence) 3055716 6 interconnectant les noeuds de calcul entre eux. Pour l'échange de messages entre processus pouvant communiquer entre eux par échange de messages à travers la fabrique d'interconnexion, l'identification d'une carte physique associée à un noeud de calcul directement sur la base du nom d'hôte dudit noeud 5 de calcul utilisé dans le programme utilisateur, à partir d'au moins une table de correspondance associant de manière bijective le nom d'hôte de chaque noeud de calcul de la grappe à l'adresse logique unique de la carte physique associée, ladite table de correspondance étant entretenue dans un composant du calculateur en charge de la gestion de la fabrique d'interconnexion. 10 Dans des modes de réalisation, la grappe de noeuds de calcul peut être organisée en une pluralité de sous-grappes de noeuds de calcul respectivement associées à une pluralité de gestionnaires de fabrique dédiés chacun à l'une des sous grappes et contenant chacun une table de correspondance associant de manière bijective le nom d'hôte de chaque noeud de calcul de la grappe (i.e., de 15 l'ensemble des sous-grappes) à l'adresse logique unique de la carte physique associée. Dans ce cas, la pluralité de gestionnaires de fabrique peut en outre être organisée selon une architecture de serveurs maître/esclaves avec un serveur maître contenant la table de correspondance et des serveur esclaves contenant 20 une réplication de cette table de correspondance, ledit serveur maître étant configuré pour assurer la cohérence desdites tables de correspondance et pour se synchroniser avec l'ensemble des serveurs esclaves. En variante, tout ou partie des informations de la table de correspondance peuvent être extraites en temps réel du gestionnaire de la 25 fabrique et être répliquées dans une base de données répartie sur une pluralité de serveurs de service intermédiaires, l'identification de la carte physique associée à chaque noeud de calcul utilisé pendant l'exécution du travail étant réalisée directement à partir du nom d'hôte dudit noeud par l'intermédiaire de l'une des répliques de la table de correspondance du gestionnaire de la fabrique 30 respectivement stockées dans lesdits serveurs de service intermédiaires. Dans cette variante, la pluralité de serveurs de service intermédiaires peut être organisée selon une architecture maître/esclaves avec un serveur de service intermédiaire maître configuré pour assurer la cohérence des 3055716 7 informations et se synchroniser avec l'ensemble des serveurs de service intermédiaires esclaves. Dans une autre variante encore, la relation entre le nom de tous les noeuds de calcul à utiliser pour l'exécution du travail d'une part, et les adresses 5 logiques uniques des cartes physiques qui leur sont respectivement associées, d'autre part, peut être réalisée une seule fois préalablement à l'exécution du travail, et être stockée dans une mémoire cache pour réemploi pendant l'exécution du travail. Dans des exemples de mises en oeuvre du procédé, l'échange de 10 messages entre processus peut être effectué en faisant appel à la bibliothèque MPI, ou toute autre bibliothèque ou procédé fonctionnant sur le même principe que MPI. Dans un second aspect, l'invention concerne également un produit programme d'ordinateur comprenant un jeu d'instructions qui, lorsqu'il est 15 exécuté par des moyens de traitement, est propre à mettre en oeuvre le procédé selon le premier aspect ci-dessus pour l'échange de messages entre des processus réalisant des opérations parallèles du programme au sein d'un calculateur haute performance. Un troisième aspect de l'invention concerne un calculateur haute 20 performance distribué comportant une grappe de noeuds de calcul ayant des ressources physiques pour exécuter chacun un processus d'un travail de manière indépendante d'autres processus exécutés en parallèle par d'autres noeuds de calcul du calculateur, et des moyens aptes à gérer l'échange de messages entre lesdits processus selon le procédé selon le premier aspect ci- 25 dessus. Le programme d'ordinateur et le calculateur haute performance présentent au moins les mêmes avantages que ceux procurés par le procédé selon le premier aspect de l'invention. Brève Description des Dessins 30 D'autres caractéristiques et avantages de l'invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés sur lesquels : 3055716 8 - la Figure 1 est un schéma simplifié d'un calculateur haute performance à mémoire distribuée montrant les principaux éléments fonctionnels du calculateur selon des modes de réalisation de l'invention ; 5 - la Figure 2 montre les identifiants logiques (hostname, adresse IP, node ID) des noeuds de calcul du schéma de la Figure 1; - la Figure 3 est un schéma fonctionnel d'un calculateur HPC selon un premier mode de réalisation ; - la Figure 4 est un schéma fonctionnel d'un calculateur HPC selon un 10 deuxième mode de réalisation. Description détaillée de modes de réalisation Dans la description de modes de réalisation qui va suivre et dans les Figures des dessins annexés, les mêmes éléments ou des éléments similaires portent les mêmes références numériques aux dessins. 15 Le calcul haute performance (ou HPC, de l'anglais « High Performance Computing ») se réfère à une branche de l'informatique appliquée, portant essentiellement sur la résolution de problèmes nécessitant une grande capacité de calculs. De nombreux problèmes demandant en principe des machines très puissantes, peuvent être décomposés et résolus en effectuant des calculs en 20 parallèle. Les travaux complexes peuvent en effet tirer parti du parallélisme entre plusieurs machines plus petites (ou noeuds de calcul), qui sont regroupées en systèmes appelés grappes (ou clusters) de calcul. Les grappes de calcul permettent en effet d'utiliser la puissance de plusieurs machines pour réaliser des calculs lourds. Une grappe de calcul est un ensemble de machines 25 homogènes et localisées, qui est mis en oeuvre selon le principe de la programmation parallèle. Typiquement, les noeuds de calcul sont compris dans des serveurs ou baies informatiques. Ce type de calculateur est utilisé, par exemple, dans les centres de recherche scientifique (météorologie, simulation nucléaire, etc.). L'intérêt de faire 30 de la programmation parallèle est notamment de réduire le temps de restitution, d'effectuer de plus gros calculs, d'exploiter le parallélisme des processeurs modernes (multi-coeurs, multithreading), etc. 3055716 9 Le parallélisme de tâches fait référence au cas où ce sont les tâches à réaliser qui sont parallélisées, plutôt que les données ou paramètres d'entrée. Le parallélisme découle de la réalisation simultanée de différents traitements sur les données. Il existe deux types d'implémentation permettant de paralléliser une 5 tâche : en utilisant plusieurs fils d'exécutions (ou « threads » selon la terminologie anglo-saxonne), ou en utilisant plusieurs processus exécutés en parallèle. Dans les implémentations du premier type ci-dessus, les fils d'exécution ont accès à un espace de mémoire vive commun, ou mémoire partagée. Ils 10 peuvent ainsi opérer sur les mêmes données. Cela offre l'avantage qu'il n'est pas nécessaire de copier de la mémoire entre deux unités de calcul, et cela élimine pratiquement la communication entre les unités de calcul. Par contre, les fils d'exécution sont aussi limités à s'exécuter sur un seul et même noeud de calcul. Le gain obtenu par cette technique de parallélisme est ainsi limité par le 15 nombre de fils d'exécution, qui sera typiquement égal ou inférieur au nombre de coeurs de calcul disponibles sur le noeud. Ainsi, par exemple, OpenMP est une surcouche du « multithreading » dans le sens où elle permet de paralléliser des boucles très simplement via des pragmas ajoutés au code source. OpenMP est clairement orienté programmation à mémoire partagée (c'est-à-dire que la 20 mémoire doit être accessible aux différents fils d'exécution du programme compilé avec OpenMP), ce qui cantonne le programme à une machine isolée. La parallélisation par processus selon des implémentations du second type précité permet au contraire d'utiliser une quantité de ressources beaucoup plus élevée. En effet, les différents processus peuvent être exécutés aussi bien 25 sur le même noeud de calcul que sur des noeuds différents, et la mémoire est distribuée sur les différents noeuds. Contrairement aux fils d'exécution, les processus ne partagent donc aucun espace mémoire. Cela a pour avantage qu'il est plus facile de s'assurer de l'intégrité des données en mémoire. En effet, un processus ne peut pas, même par accident, modifier l'espace mémoire d'un 30 autre processus. La contrepartie de cet avantage est qu'il devient nécessaire de faire des opérations explicites de communication pour copier des données entre deux processus. En effet, pour travailler à plusieurs processus en parallèle sur les mêmes données, une coordination entre processus est nécessaire. On utilise 3055716 10 généralement pour ce faire la bibliothèque de passage de messages MPI (« Message Passing Interface », selon la terminologie anglo-saxonne). MPI est une bibliothèque permettant de coordonner des processus en utilisant le paradigme de l'échange de messages. En effet, MPI permet une 5 communication entre deux processus, peu importe leur interconnexion (par exemple par réseau Ethemet ou InfiniBandTM (I B) ou encore OmniPathTm(OPA), ou par mémoire partagée au sein d'un même noeud le cas échéant). C'est l'une des librairies de communication les plus utilisées dans un environnement HPC. Cette librairie permet de réaliser des programmes exécutant des opérations 10 parallèles sur les noeuds respectifs du cluster, et pouvant communiquer à travers le réseau d'interconnexion. Dans un modèle de programmation parallèle par échange de messages tel que MPI, le programme utilisateur est dupliqué sur plusieurs processus. Chaque processus exécute un exemplaire du programme utilisateur et a accès 15 à sa mémoire propre. De ce fait, les variables du programme deviennent des variables locales au niveau de chaque processus. De plus un processus ne peut pas accéder à la mémoire des processus voisins. Il peut toutefois envoyer des informations à d'autres processus à condition que ces derniers (processus récepteurs) soient au courant qu'ils devaient recevoir ces informations du 20 processus émetteur. La communication entre processus se fait uniquement par passage de messages entre processus, c'est-à-dire par envoi et réception de messages. Techniquement, cette communication se fait via des fonctions de la bibliothèque MPI appelées dans le programme utilisateur. L'environnement MPI permet de gérer et d'interpréter ces messages. 25 Les ressources physiques du cluster (processeurs, coeurs, mémoires) qui exécutent les processus réalisant des opérations parallèles d'un travail donné, communiquent au sein d'un noeud, et également d'un noeud à l'autre. A cet effet, les noeuds sont reliés par un réseau d'interconnexion ultra-rapide et avec un temps de latence faible pour échanger des messages en vue de 30 coordonner le traitement du travail en cours. Au minimum, chaque noeud de calcul et le noeud de tête doivent donc être connectés sur le réseau d'interconnexion. Le nom donné de manière standard dans l'état de l'art pour désigner ce réseau d'interconnexion est « fabrique ». La fabrique d'un 305 5 7 1 6 11 calculateur HPC est donc un réseau physique rapide, par exemple InfiniBandTM OmniPathTM, etc., permettant de relier ensemble les noeuds de calcul du cluster. Les systèmes interconnectés à grand nombre de noeuds de calcul travaillant ensemble à résoudre des problèmes complexes ont également besoin 5 d'être administrés. Des processus et outils adaptés à la mise en service, au contrôle, à la gestion et à la maintenance de centaines ou de milliers de noeuds permettent ainsi de garantir un environnement stable et cohérent. Ainsi, par exemple, et par opposition à OpenMP, OpenMPI peut être utilisé pour l'administration des infrastructures à mémoire distribuée. OpenMPI crée une 10 infrastructure de communication au-dessus du réseau physique d'interconnexion, qui abstrait ce réseau physique au niveau du programmeur. On parle ainsi de réseau d'administration du cluster de noeuds de calcul. Ce réseau d'administration peut alors déployer des processus MPI un peu partout sur l'infrastructure sans se soucier du placement ou de la gestion des connexions 15 entre les différentes machines de son infrastructure. Pour la réalisation d'un travail déterminé, un planificateur s'exécute qui permet de coordonner les affectations de tâches des différents processus entre les noeuds nécessaires. Le planificateur s'exécute par exemple sur un noeud de tête du cluster. Il identifie les ressources disponibles, attribue et distribue les 20 tâches, et contrôle l'état global des noeuds. Il s'agit du coordinateur de ressources au sein de la grappe. Les utilisateurs et les administrateurs soumettent à ce noeud de tête les travaux à traiter par le système ou cluster. En référence au schéma de la Figure 1, une architecture de calculateur HPC de type cluster comprend notamment une grappe 10 de noeuds de calculs 25 (à savoir le cluster de noeuds de calcul), des moyens d'administration 20 et une fabrique d'interconnexion 20. Le cluster 10 tel que représenté à la Figure 1 comprend un nombre n de noeuds de calculs, respectivement N1, N2, ..., Nn. En pratique, le nombre n de noeuds peut être très élevé, par exemple égal à plusieurs centaines ou milliers. 30 La présente invention n'est pas limitée par le nombre de noeud de calcul. Les noeuds de calcul sont implémentés, au niveau physique, sous la forme de machines ou serveurs reliés entre eux par la fabrique d'interconnexion 20. Ces serveurs hébergent chacun une ou plusieurs cartes physiques (ou 3055716 12 HCA), qui correspondent aux ressources physiques du calculateur HPC distribué. Chaque serveur comprend en effet, sur ces cartes HCA, des ressources de calcul et des ressources mémoire. Comme le sait l'Homme du métier, les cartes HCA assurent la connexion entre un port d'un système géré et 5 d'autres unités. Ce port peut être connecté à une autre carte HCA, à une unité cible ou à un commutateur qui réachemine les données provenant de l'un de ses ports vers une unité connectée à un autre de ses ports. Les ressources de calcul d'un noeud de calcul comprennent un ou plusieurs processeurs, avec un ou plusieurs coeurs chacun. 10 Chacun des noeuds forme ainsi une entité de calcul indépendante avec au minimum un coeur de processeur et de la mémoire propre associée. Il peut ainsi exécuter de manière totalement indépendante un processus déterminé d'un travail assuré par le calculateur sous la forme d'une pluralité de processus exécutés en parallèle, avec de la mémoire propre à chaque processus 15 En d'autres termes, chaque processus dispose de ses propres données et n'a pas d'accès direct aux données des autres processus. Les données du programme sont stockées dans la mémoire du processeur sur lequel s'exécute le processus. Une donnée est échangée entre deux ou plusieurs processus via un appel à des routines particulières et spécialisées, de la bibliothèque MPI. 20 Les moyens d'administration 20 du calculateur comprennent un ou plusieurs serveurs d'administration, aussi appelés noeuds de service. Un serveur d'administration est responsable, notamment, de l'authentification des utilisateurs, du lancement des tâches de calcul, de l'accès aux fichiers, ainsi que de la surveillance de l'ensemble du calculateur. 25 Lorsqu'il y en a plusieurs, les serveurs d'administration obéissent par exemple à une organisation de type maître/esclave. On compte par exemple deux tels serveurs SN1 et SN2 dans le calculateur HPC tel que représenté à la Figure 1. Le serveur SN1, aussi appelé noeud de tête, étant le serveur maître et le serveur SN2 étant un serveur esclave. Ce nombre n'est qu'un exemple non 30 limitatif. Un seul et unique serveur d'administration, ou au contraire plus de deux serveurs d'administration sont d'autre exemples envisageables. La fabrique d'interconnexion 30 comprend notamment un ensemble de commutateurs de réseau (ou « switches », selon la terminologie anglo-saxonne), 3055716 13 des câbles formant les liens d'interconnexion entre les serveurs, et du logiciel associé. Ce logiciel associé comprend notamment un composant de réseau connu de l'Homme de l'art sous le nom de gestionnaire de la fabrique. Selon la 5 terminologie anglo-saxonne, ce gestionnaire de fabrique peut s'appeler « fabric manager», « subnet manager », etc., selon la technologie du calculateur concerné). Ce gestionnaire de fabrique est un composant logiciel adapté pour entretenir une table de correspondance associant de manière bijective le nom de chaque noeud de calcul de la grappe 10 à l'adresse logique unique de la carte 10 physique associée. C'est pourquoi, selon des modes de réalisation de la présente invention, le gestionnaire de fabrique joue le rôle d'une tierce entité à laquelle il est fait appel, au cours de l'exécution d'un programme, pour obtenir, à partir du nom d'hôte d'un noeud de calcul de la grappe sur lequel s'exécute un processus 15 déterminé, l'adresse logique unique de la carte physique associée à ce noeud. Cette utilisation est originale et avantageuse dans le cadre de l'échange de messages entre processus, utilisant la bibliothèque MPI par exemple. Ceci sera détaillé plus loin en référence au schéma de la Figure 2. Dans l'exemple représenté à la Figure 1, la fabrique a une topologie 20 hiérarchique à trois étages, par exemple de type « fat tree » selon la terminologie anglo-saxonne : un premier étage avec deux commutateurs S11 et S2 servis par le serveur d'administration SN1 et le serveur d'administration SN2, respectivement ; puis un deuxième niveau avec deux autres commutateurs S21 et S22 entrelacés avec les commutateurs du premier niveau ; et enfin un 25 troisième et dernier niveau avec trois autres commutateurs S31, S32 et S33 entrelacés avec les commutateurs du second niveau. Cet exemple est purement illustratif et n'est nullement limitatif des modes de réalisation de l'invention. Le schéma de la Figure 2 correspond à celui de la Figure 1 dans lequel, en ce qui concerne la grappe 10, il a été ajouté les éléments logiques 30 d'identification des différents noeuds de calcul, en bas de la Figure. Ces éléments logiques d'identification comprennent, pour chaque noeud de calcul N1 à Nn : - le nom d'hôte ou Hostname qui est le pseudonyme du noeud de calcul utilisé dans le programme utilisateur en cours d'exécution ; dans l'exemple 3055716 14 représenté, Host1 est le nom d'hôte du noeud N1, Host2 est le nom d'hôte du noeud N2, etc., et HostN est le nom d'hôte du noeud Nn ; - l'adresse IP (ou « @IP ») qui est l'identifiant sur le réseau d'administration ; dans l'exemple représenté, 10.0.0.1 est l'adresse IP du noeud 5 N1, 10.0.0.2 est l'adresse IP du noeud N2, etc., et 10.0.0.N est l'adresse IP du noeud Nn ; et, - le Node ID qui est l'identifiant du noeud de calcul sur le réseau d'interconnexion (i.e., la fabrique) de la carte réseau correspondante ; dans l'exemple représenté, cet identifiant est codé par un nombre à quatre chiffres, 10 par exemple 0024 pour le noeud N1, 0010 pour le noeud N2, 0201 pour le noeud N2, 0211 pour le noeud N4, etc. Il s'agit bien entendu d'exemples arbitraires, non limitatifs de l'invention. Par ailleurs, la Figure 2 montre que le gestionnaire de fabrique FM1 maintient une table de correspondance MT1 (ou table de « mapping » selon la 15 terminologie anglo-saxonne) qui associe de manière bijective le nom d'hôte Hostname de chaque noeud de calcul de la grappe 10 à l'adresse logique unique Node ID de la carte physique associée. Cette table MT1 est gérée par le gestionnaire de fabrique maître FM1. Lorsqu'il existe un (ou plusieurs) gestionnaire(s) de fabrique esclave(s) comme le gestionnaire FM2 de l'exemple 20 de la Figure 2, la table MT1 est répliquée sur le noeud de service correspondant, à savoir le serveur SN2 à la Figure 2, en tant que table MT2. Des modes de réalisation de l'invention comprennent, pour l'échange de messages MPI entre processus, l'identification d'une carte physique (carte HCA) associée à un noeud de calcul utilisé pendant l'exécution du travail, directement 25 à partir du nom d'hôte dudit noeud tel qu'il est utilisé dans le programme utilisateur. Cette identification directe est réalisée par l'intermédiaire d'un moins une tierce entité logique contenant tout ou partie de la table de correspondance précitée. Dans le mode de réalisation de la Figure 2, cette tierce entité est le gestionnaire de fabrique FM1, en coopération avec le(s) gestionnaire(s) de 30 fabrique esclaves comme FM1, le cas échéant. L'Homme du métier appréciera que le gestionnaire de fabrique est un composant logiciel en charge de la gestion des identificateurs de chaque carte physique (HCA) présente dans les noeuds de la grappe. La table de 3055716 15 correspondance MT1 existe donc déjà dans un calculateur de l'art antérieur. Toutefois, elle n'est pas utilisée, dans l'état de l'art, lors de l'initialisation de l'échange de messages entre processus par une librairie telle que MPI. Or, son utilisation conformément à des modes de réalisation de 5 l'invention permet d'éviter les inconvénients qui découlent des deux traductions ® et ® selon l'art antérieur, qui ont été présentés en introduction. Dans le mode de réalisation de la Figure 3, la grappe de noeuds de calcul est organisée en une pluralité de sous-grappes de noeuds de calcul 11, 12 et 13. Dans l'exemple représenté, les noeuds N1, N2 et N3 appartiennent ainsi à la 10 sous-grappe 11, les noeuds N4, N5 et N6 appartiennent à la sous-grappe 12, et les noeuds N7 à Nn appartiennent ainsi à la sous-grappe 13. On appréciera que l'invention n'est pas limitée par le nombre de sous-grappes, ni par la distribution des noeuds de calcul de la grappe au sein de ces sous-grappes. Les sous-grappes 11, 12 et 13 montrées à la Figure 3 sont associées 15 chacune à un gestionnaire de fabrique dédié FM11, FM12 et FM13, respectivement. Chacun des gestionnaires de fabrique contient une table de correspondance MT11, MT12 et MT13, respectivement, qui sont comparables à la table de correspondance MT1 de la Figure 2. Ces tables MT11, MT12 et MT13 associent de manière bijective le nom d'hôte Hostname de chaque noeud de 20 calcul de la grappe 10 à l'adresse logique unique Node ID de la carte physique associée. La pluralité de gestionnaires de fabrique FM11, FM12 et FM13 peut être organisée au sein d'une architecture de serveurs de service de type maître/esclaves, avec par exemple un serveur maître SN11 contenant le 25 gestionnaire de fabrique FM11, et des serveur esclaves SN12 et SN13 contenant les gestionnaires de fabrique FM12 et FM13, respectivement. Le gestionnaire de sous-fabrique maître FM11 est configuré pour assurer la cohérence des informations et pour synchroniser l'ensemble des gestionnaires de sous-fabrique esclaves FM12 et FM13. Ceci est illustré à la Figure 3 par les 30 flèches 120 et 130, respectivement. Dit autrement, dans ce mode de réalisation on découpe le cluster de noeuds de calcul 10 de la Figure 2 en sous-parties 11, 12 et 13 avec un gestionnaire de fabrique FM11, FM12 et FM13, respectivement, dédié à chaque 3055716 16 sous-partie, et ces gestionnaires sont synchronisés entre eux. Chaque groupe de noeuds communique ainsi avec un gestionnaire de fabrique qui lui est dédié. On facilite ainsi le passage à l'échelle dans le cas des calculateurs avec un nombre important de noeuds de calcul. 5 Un autre mode de réalisation va maintenant être présenté en référence au schéma de la Figure 4, qui permet d'assurer le passage à l'échelle d'une autre manière. Dans ce mode de réalisation, tout ou partie des informations de la table de correspondance MT sont extraites en temps réel du gestionnaire de la fabrique FM et sont répliquées dans une base de données qui est répartie sur 10 une pluralité de serveurs de service intermédiaires IS1, IS2, et IS3 afin d'éviter la formation d'un point de congestion (« bottleneck » dans la terminologie anglo-saxonne) pour les échanges de messages dans les clusters à grand nombre de noeuds de calcul. Dans ce mode de réalisation, l'identification de la carte physique 15 associée à chaque noeud de calcul utilisé pendant l'exécution du travail est réalisée, pour l'échange de messages, directement à partir du nom d'hôte dudit noeud par l'intermédiaire de l'une des répliques MT1, MT2 et MT3 de la table de correspondance du gestionnaire de la fabrique stockée chacune dans l'un des serveurs de service intermédiaires IS1, IS2, et IS3, respectivement. 20 Dans l'exemple représenté à la Figure 4, le serveur intermédiaire IS1 sert un premier groupe 11 des noeuds de la grappe 10 comprenant les noeuds N1, N2 et N3, le serveur intermédiaire IS2 sert un deuxième groupe 12 des noeuds de la grappe 10 comprenant les noeuds N4, N5 et N6, et le serveur intermédiaire IS3 sert un troisième groupe 13 des noeuds de la grappe 10 25 comprenant les noeuds N7 à Nn. Ainsi, les serveurs de service intermédiaires se partagent la charge de l'identification des cartes physiques des noeuds de calcul destinataires des messages, en fonction du noeud émetteur des messages. On passe ainsi facilement à l'échelle, dans le cas des calculateurs HPC avec une grappe comprenant un nombre important de noeuds de calcul. 30 Dans un mode de réalisation, la pluralité de serveurs de service intermédiaires IS1, IS2, et IS3 peut être organisée selon une architecture maître/esclaves. Le serveur de service intermédiaire maître IS1 peut être 3055716 17 configuré pour assurer la cohérence des informations de la table de traductions et se synchroniser avec l'ensemble des serveurs de service intermédiaires esclaves, à savoir IS2 et IS3 dans l'exemple représenté. La présente invention a été décrite et illustrée dans la présente 5 description détaillée et dans les Figures. La présente invention ne se limite pas aux formes de réalisation présentées. D'autres variantes et modes de réalisation peuvent être déduits et mis en oeuvre par la personne du métier à la lecture de la présente description et des Figures annexées. Par exemple, dans d'autres modes de réalisation, la relation bijective 10 entre le nom d'hôte de tous les noeuds de calcul à utiliser pour l'exécution du travail d'une part, et les adresses logiques uniques des cartes physiques qui leur sont respectivement associées, d'autre part, peut être réalisée une seule fois préalablement à l'exécution du travail, et être stockée dans une mémoire cache pour réemploi pendant l'exécution du travail. 15 Dans les revendications, le terme "comporter" n'exclut pas d'autres éléments ou d'autres étapes. L'article indéfini « un » n'exclut pas le pluriel. Un seul processeur ou plusieurs autres unités peuvent être utilisées pour mettre en oeuvre l'invention. Les différentes caractéristiques présentées et/ou revendiquées peuvent être avantageusement combinées. Leur présence dans 20 la description ou dans des revendications dépendantes différentes, n'excluent pas cette possibilité. Les signes de référence ne sauraient être compris comme limitant la portée de l'invention. REVENDICATIONS1. Procédé d'échange de messages pendant l'exécution de processus réalisant des opérations parallèles d'un programme utilisateur en cours d'exécution dans un calculateur haute performance distribué comprenant, d'une part, une grappe de noeuds de calcul au sein de laquelle chaque noeud de calcul est connu dans le programme utilisateur par un nom d'hôte (ou pseudonyme ou « alias ») et est associé à une carte physique (HCA) ayant des ressources physiques déterminées (coeurs de processeurs, mémoire de stockage) pour l'exécution d'un processus et ayant une adresse logique unique (identifiant Node ID) et, d'autre part, une fabrique d'interconnexion (à haut débit et faible latence) interconnectant les noeuds de calcul entre eux, le procédé étant caractérisé en ce qu'il comprend, pour l'échange de messages entre processus pouvant communiquer entre eux par échange de messages à travers la fabrique d'interconnexion, l'identification d'une carte physique (HCA) associée à un noeud de calcul directement sur la base du nom d'hôte dudit noeud de calcul utilisé dans le programme utilisateur, à partir d'au moins une table de correspondance associant de manière bijective le nom d'hôte de chaque noeud de calcul de la grappe à l'adresse logique unique de la carte physique associée, ladite table de correspondance étant entretenue dans un composant du calculateur en charge de la gestion de la fabrique d'interconnexion. 2. Procédé selon la revendication 1, dans lequel la grappe de noeuds de calcul est organisée en une pluralité de sous-grappes de noeuds de calcul (11,12,13) respectivement associées à une pluralité de gestionnaires de fabrique (FM11,FM12,FM13) dédiés chacun à l'une des sous grappes et contenant chacun une table de correspondance (MT11,MT12,MT13) associant de manière bijective le nom d'hôte de chaque noeud de calcul de la grappe à l'adresse logique unique de la carte physique associée. 3. Procédé selon la revendication 2 dans lequel la pluralité de gestionnaires de fabrique est organisée selon une architecture de serveurs maître/esclaves avec un serveur maître (FM1) contenant une première des tables de 3055716 19 correspondance et des serveur esclaves (FM2,FM3) contenant les autres tables de correspondance, ledit serveur maître étant configuré pour assurer la cohérence desdites tables de correspondance et pour se synchroniser avec l'ensemble des serveurs esclaves. 5 4. Procédé selon la revendication 1, dans lequel tout ou partie des informations de la table de correspondance (MT) sont extraites en temps réel du gestionnaire de la fabrique (FM) et sont répliquées dans une base de données répartie sur une pluralité de serveurs de service intermédiaires (1S1,1S2,IS3), 10 l'identification de la carte physique associée à chaque noeud de calcul utilisé pendant l'exécution du travail étant réalisée directement à partir du nom d'hôte dudit noeud par l'intermédiaire de l'une des répliques (MT1,MT2,MT3) de la table de correspondance du gestionnaire de la fabrique respectivement stockées dans lesdits serveurs de service intermédiaires. 15 5. Procédé selon la revendication 4, dans lequel la pluralité de serveurs de service intermédiaires est organisée selon une architecture maître/esclaves avec un serveur de service intermédiaire maître (IS1) configuré pour assurer la cohérence des informations et se synchroniser avec l'ensemble des serveurs de 20 service intermédiaires esclaves (IS2,1S3). 6. Procédé selon la revendication 1, dans lequel la relation entre le nom de tous les noeuds de calcul à utiliser pour l'exécution du travail d'une part, et les adresses logiques uniques des cartes physiques qui leur sont respectivement 25 associées, d'autre part, est réalisée une seule fois préalablement à l'exécution du travail, et est stockée dans une mémoire cache pour réemploi pendant l'exécution du travail. 7. Procédé selon l'une quelconque des revendications précédentes, dans 30 lequel l'échange de messages entre processus est effectué en faisant appel à la bibliothèque MPI, de l'anglais « Message Passing Interface ». 3055716 20 8. Produit programme d'ordinateur comprenant un jeu d'instructions qui, lorsqu'il est exécuté par des moyens de traitement, est propre à mettre en oeuvre le procédé selon l'une des revendications précédentes pour l'échange de messages entre des processus réalisant des opérations parallèles du 5 programme au sein d'un calculateur haute performance. 9. Calculateur haute performance distribué comportant une grappe de noeuds de calcul (10) ayant des ressources physiques pour exécuter chacun un processus d'un travail de manière indépendante d'autres processus exécutés en parallèle par d'autres noeuds de calcul du calculateur, et des moyens aptes à 10 gérer l'échange de messages entre lesdits processus selon le procédé de l'une quelconque des revendications 1 à 7.