Calcul massivement parallèle: Mise en production du Cray-T3D

par Jean-Michel Chenais, SIC-Exploitation

Installation du T3D

Au moment d'écrire ces lignes, les tests d'installation de l'ordinateur massivement parallèle se sont terminés avec succès. Dès lors, la mise en production du T3D a pu démarrer le 2 mai 1994, comme prévu.
Il reste néanmoins deux étapes avant l'acceptation finale du matériel nouvellement reçu. L'une et l'autre sont destinées à vérifier, selon des modalités particulières, la bonne stabilité de l'ensemble du matériel et du logiciel, à la fois sur le T3D et sur Pascal dans sa fonction de machine frontale. Ces tests se déroulent sur une configuration d'exploitation normale, les premiers pendant une durée de 160 heures ouvrables, et les suivants pendant 30 jours, 24 heures sur 24, périodes pendant lesquelles un certain up-time doit être atteint.

T3D, modalités d'accès

En tout premier lieu, il convient de résoudre les quelques opérations administratives nécessaires à l'ouverture d'un compte vous donnant le droit de travailler sur le T3D.
Parallèlement à cette période censée être aussi courte que possible, une prise d'information sur les méthodes de conception et de programmation des applications type T3D est vivement conseillée, voire indispensable. Prendre contact avec le groupe de support (E-mail: t3d111@epfl.ch), pour plus d'information. Rappelons que le T3D n'est pas réservé aux seuls partenaires du projet de collaboration Cray-EPFL, ni même aux collaborateurs du domaine des EPF: tout projet indépendant peut faire l'objet d'une demande appropriée (cf. article: Ouverture d'un compte sur T3D).
Une fois résolues ces quelques arcanes et franchis ces chevaux de frise, les conditions pratiques d'utilisation du T3D peuvent être abordées.

T3D, sa configuration et ses ressources

Le T3D n'étant pas directement adressable, toutes les opérations doivent transiter par sa machine hôte, soit le Cray YMP M94: Pascal. Les ressources du T3D s'expriment en nombre de processeurs disponibles, et temps d'horloge (elapsed time) de réservation pendant lequel ceux-ci peuvent être dédiés à l'application. Afin de permettre l'allocation simultanée de plusieurs ensembles de PE à des applications distinctes, l'ensemble des PEs du T3D est organisé en pools. Un pool est défini par son nombre de PE, ses possibilités d'accès (batch et/ou interactif), l'appartenance à un groupe, et quelques autres attributs. Une configuration T3D donnée peut comprendre 1 ou plusieurs pools. Le nombre de PE dans chaque pool doit toujours être une puissance de 2. Ainsi, un ensemble de 128 PEs peut être subdivisé en 4 pools de 64, 32 et 2 fois 16 PEs. Chaque application, en fonction des ressources demandées, est automatiquement dirigée vers le pool qui peut le mieux la recevoir. Ainsi, dans le cas le plus simple, une application (une partition dans le jargon du T3D) demandant 8 PEs (le nombre de PEs demandé doit lui aussi toujours être une puissance de 2) est chargée dans le pool à 16 PEs plutôt que dans celui à 32 PEs. Plusieurs partitions peuvent éventuellement se loger dans un même pool. La configuration actuelle, encore provisoire ne comprend quŒun seul pool, 8 PEs peuvent être réservés par une application en interactif et 64 ou 128 en batch, selon les conditions de charge.
Subdiviser la configuration en plusieurs pool ne permet pas à une application d'utiliser la totalité des 128 PEs, car aucun recouvrement entre pools n'est autorisé. En conséquence, plusieurs jeux de configuration sont envisageables et susceptibles d'être mis en place à la lumière de nos expériences, et des besoins exprimés des utilisateurs.

Styles et modèles de programmation

Chaque processeur dispose de tous les ingrédients suffisants pour le considérer comme un véritable ordinateur: mémoire vive, unités de calcul, registres, caches, etc. Tous ces PEs sont interconnectés par une circuiterie spécialisée constituant un réseau à large bande passante à faible latence. Chaque PE est doté d'un micro-kernel (dérivé de Mach), chargé de traiter les system-calls émanant de chaque PE, ainsi que les demandes de communication entre les PEs et le frontal. Chaque PE travaille à son propre rythme, sauf opération implicite ou explicite de synchronisation demandée par le programmeur. Chaque PE reçoit une copie locale du même code correspondant à l'application. Il peut exécuter la même instruction (à peu près au même moment), sur des structures de données réparties et partagées sur l'ensemble des PEs (shared data), donc conceptuellement de même nature mais différentes en valeurs, selon le modèle SIMD. Il est possible d'envisager aussi une programmation où chaque PE déroule son propre jeu d'instructions, travaillant ainsi sur des données locales au PE (private data), selon le modèle MIMD. La contribution de chaque PE pour la réalisation de la tache se concrétise par l'échange d'informations entre les PEs, soit de façon implicite (Fortran programming model), ou explicitement par PVM.
Pour le moment, seule la technique PVM permet d'échanger des informations entre les PEs. Les échanges implicites seront possibles avec la mise en place du nouvel environnement de programmation et de développement CRAFT, prévue pour juillet prochain.

T3D, mode d'emploi

L'ensemble du logiciel T3D se trouve localisé dans le répertoire /mpp/bin. Se trouvent réunis dans cette arborescence tous les produits tels que compilateurs, assembleurs, chargeurs, ainsi que les commandes de contrôle du T3D. Ces produits sont donc distincts de ceux normalement utilisés sur le frontal Pascal, bien que de même nom. L'identification de chaque produit peut être obtenue en utilisant l'option -V lors de son appel.
La préparation des applications T3D se déroule normalement sur le frontal depuis une session interactive, comme pour une session normale. Les programmes sources sont préparés à l'aide de votre éditeur préféré. La préparation des codes binaires et exécutables s'effectue selon le principe de la cross-compilation sur le frontal. Puis l'envoi sur le T3D du code ainsi préparé s'effectue par simple invocation du programme et en précisant seulement le nombre de PEs (processing element) désiré. Ce processus en mode interactif, assurément le plus confortable, est très pratique pour la mise au point ou le test de petits programmes.
Séquence typique minimale, en interactif, pour la compilation et l'exécution d'un programme sur 8 PEs (indépendamment de la définition des variables d'environnement):
/mpp/bin/cft77 main.f
/mpp/bin/mppldr -o main main.o
./main -npes 8
A la rédaction de cet article, le nombre de PEs en interactif est limité à 8, tandis que le temps maximum est fixé à 10 minutes. Pour passer à un mode d'utilisation du T3D plus conséquent, le passage par le mode batch de NQS s'impose. Un meilleur contrôle dans le déroulement des applications (scheduling) est ainsi possible. Ainsi une ou plusieurs pipe_queues sont envisagées sur le frontal, afin d'organiser au mieux le flot de travaux à destination du T3D. Le passage par NQS est le mode préféré pour assurer ainsi aux usagers la meilleure adéquation possible entre les demandes de ressources et leur disponibilité.
Pour une exécution en mode batch, il suffit d'inclure ces commandes dans un fichier, et de lui appliquer la commande NQS traditionnelle de soumission de travaux:
qsub -l mpp_p=8   nom_de_fichier

Ce même paramètre -l permet aussi de définir les limites relatives au temps. Ainsi le paramètre mpp_t représente le temps d'horloge maximum demandé pour l'ensemble des partitions(process) devant tourner sur le T3D, et mpp_p ce même temps, mais pour chacune d'entre-elles. Le nombre de PEs demandé peut aussi être précisé dans la variable d'environnement MPP_NPES, qui domine celle spécifiée dans l'invocation au programme.
Les limites en batch dans leur définition initiale sont respectivement 64 PEs et 15 minutes. De nouvelles valeurs, permettant de travailler avec la totalité des PEs, sont en préparation, tout en évitant la monopolisation des 128 PEs pendant la journée.
A noter qu'un script NQS à destination du T3D peut également contenir tout un ensemble de commandes se déroulant sur le frontal. Les limites ainsi définies correspondent pour le moment à la classe med-2. La commande mppstat avec ses différentes options permet de suivre l'évolution de l'application sur le T3D.
La récupération des résultats s'effectue comme sur le frontal: à l'écran pour l'interactif, dans un fichier NQS pour le batch. Le produit apprentice permet l'analyse des performances de votre application. Il permet de retrouver les résultats dŒanalyse obtenus auparavant à l'aide de l'émulateur.
Pour le debugging de vos programmes, un autre produit, totalview, est à disposition.
A noter quŒà terme ces produits permettront de procéder à ces analyses sur des stations de travail, sur lesquelles les informations nécessaires auront été transférées. Il est en effet planifié par Cray Inc. d'intégrer tout l'environnement utilisateur de programmation et de développement du T3D sur du matériel type station de travail, déchargeant ainsi les serveurs de calcul traditionnels tels que Pascal.
Pour plus d'informations, consulter les man pages pour toutes les commandes citées.

Références

Ces 2 dernières références, entre autres informations d'accès public, peuvent être obtenues directement par ftp anonymous à l'adresse ftp.cray.com.


article paru dans le Flash informatique no 5 du 17 mai 1994