Il s'agit de la commande mpirun.lam qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
mpirun - Exécute les programmes MPI sur les nœuds LAM.
SYNOPSIS
mpirun [-fhvO] [-c # | -np #] [-D | -wd rép] [-ger | -nger] [-sigs | -nsigs] [-ssi clé
valeur] [-nw | -w] [-nx] [-pty | -npty] [-s nœud] [-t | -toff | -ton] [-tv] [-x
VAR1[=VALEUR1][,VAR2[=VALUE2],...]] [[-p prefix_str] [-sa | -sf]] [où] programme [--
arguments]
Remarque : Bien que chacun soit individuellement facultatif, au moins l'un des où, -np, ou -c doit être
spécifié dans le formulaire ci-dessus (c'est-à-dire lorsqu'un schéma n'est pas utilisé).
mpirun [-fhvO] [-D | -wd rép] [-ger | -nger] [-sigs | -nsigs] [-ssi valeur de clé] [-nw | -w]
[-nx] [-pty | -npty] [-t | -toff | -tonne] [-tv] [-x
Schéma VAR1[=VALUE1][,VAR2[=VALUE2],...]]
Remarque : Votre -c2c et -lamd les options sont désormais obsolètes. Utilisation -ssi au lieu. Voir le "SSI"
rubrique, ci-dessous.
RAPIDE RÉSUMÉ
Si vous cherchez simplement à exécuter une application MPI, vous voudrez probablement utiliser le
ligne de commande suivante :
% mpirun C mon_mpi_application
Cela exécutera une copie de mon_mpi_application sur chaque CPU de l'univers LAM actuel.
Alternativement, "N" peut être utilisé à la place de "C", indiquant qu'une copie de
mon_mpi_application doit être exécuté sur chaque nœud (par opposition au processeur) dans le LAM actuel
univers. Finalement:
% mpirun -np 4 mon_application_mpi
peut être utilisé pour dire à LAM d'exécuter explicitement quatre copies de mon_mpi_application, planification en
un tour de table par CPU dans l'univers LAM. Voir le reste de cette page pour plus
détails, en particulier la section « Nomenclature des emplacements ».
OPTIONS
Il existe deux formes de mpirun commande -- une pour les programmes (c'est-à-dire, de style SPMD
applications), et une pour les schémas d'application (voir schéma d'application(5)). Les deux formes de mpirun
utilisez les options suivantes par défaut : -doigt -w. Ceux-ci peuvent chacun être annulés par leur
options de contrepartie, décrites ci-dessous.
En outre, mpirun enverra le nom du répertoire où il a été invoqué sur le local
nœud vers chacun des nœuds distants et essayez de passer à ce répertoire. Voir le
Section « Répertoire de travail actuel », ci-dessous.
-c # synonyme de -np (voir ci-dessous).
-D Utilisez l'emplacement du programme exécutable comme répertoire de travail actuel pour créé
processus. Le répertoire de travail actuel des processus créés sera défini
avant que le programme de l'utilisateur ne soit invoqué. Cette option est mutuellement exclusive avec
-wd.
-f Ne configurez pas les descripteurs de fichiers d'E/S standard - utilisez les valeurs par défaut.
-h Imprimer des informations utiles sur cette commande.
-ger Activer le protocole de communication et l'erreur GER (ressources d'enveloppe garanties)
rapport. Voir Propriétés Mitelman(7) pour une description de GER. Cette option est mutuellement
exclusif avec -doigt.
-doigt Désactivez GER (ressources d'enveloppe garanties). Cette option est mutuellement exclusive
avec -ger.
-nsig Ne pas avoir de signaux de capture LAM dans l'application utilisateur. C'est la valeur par défaut, et
est mutuellement exclusif avec -signes.
-np # Exécutez ce nombre de copies du programme sur les nœuds donnés. Cette option indique
que le fichier spécifié est un programme exécutable et non un schéma d'application.
Si aucun nœud n'est spécifié, tous les nœuds LAM sont pris en compte pour la planification ; LAM sera
programmer les programmes d'une manière à tour de rôle, "en boucle" (et
planification de plusieurs copies sur un même nœud) si nécessaire.
-npty Désactivez la prise en charge des pseudo-tty. Sauf si vous rencontrez des problèmes avec pseudo-tty
support, vous n'avez probablement pas besoin de cette option. Mutuellement exclusif avec -pty.
-nw N'attendez pas la fin de tous les processus avant de quitter mpirun. Cette option est
mutuellement exclusif avec -w.
-nx Ne pas exporter automatiquement l'environnement LAM_MPI_*, LAM_IMPI_* ou IMPI_*
variables aux nœuds distants.
-O Le multi-ordinateur est homogène. Ne pas convertir les données lors de la transmission des messages.
CE DRAPEAU EST MAINTENANT OBSOLÈTE.
-pty Activer la prise en charge des pseudo-tty. Entre autres choses, cela a permis à la mémoire tampon de ligne
sortie (ce qui est probablement ce que vous voulez). C'est la valeur par défaut. Mutuellement
exclusif avec -npty.
-s nœud Chargez le programme à partir de ce nœud. Cette option n'est pas valide sur la ligne de commande
si un schéma d'application est spécifié.
-signes Avoir des signaux de capture LAM dans le processus utilisateur. Cette option est mutuellement exclusive
avec -nsig.
-ssi clé Plus-value
Envoyez des arguments à divers modules SSI. Voir la section "SSI" ci-dessous.
-t, -tonne Activez la génération de trace d'exécution pour tous les processus. La génération de traces sera
procéder sans autre action. Ces options sont mutuellement exclusives avec
-dandy.
-dandy Activez la génération de trace d'exécution pour tous les processus. Génération de traces pour
le trafic de transmission de messages commencera après l'appel collectif des processus
MPIL_Trace_on(2). Notez que la génération de trace pour les types de données et les communicateurs
sera continuer, que la génération de trace soit activée pour les messages ou
ne pas. Cette option est mutuellement exclusive avec -t et -tonne.
-la télé Lancez les processus sous le débogueur TotalView.
-v Soyez bavard ; rendre compte des étapes importantes au fur et à mesure qu'elles sont accomplies.
-w Attendez que toutes les applications se terminent avant mpirun sorties.
-wd dir Accédez au répertoire dir avant l'exécution du programme utilisateur. Notez que si
le -wd l'option apparaît à la fois sur la ligne de commande et dans un schéma d'application,
le schéma aura préséance sur la ligne de commande. Cette option est mutuellement
exclusif avec -D.
-x Exporter les variables d'environnement spécifiées vers les nœuds distants avant l'exécution
le programme. Des variables d'environnement existantes peuvent être spécifiées (voir les exemples
section ci-dessous) ou de nouveaux noms de variables spécifiés avec les valeurs correspondantes. Les
analyseur pour le -x l'option n'est pas très sophistiquée; il ne comprend même pas
valeurs citées. Il est conseillé aux utilisateurs de définir des variables dans l'environnement, puis
utilisé -x pour les exporter (pas les définir).
-sa Afficher l'état de sortie de tous les processus MPI, qu'ils échouent ou
exécuter avec succès.
-sf Afficher l'état de sortie de tous les processus uniquement si l'un d'entre eux échoue.
-p préfixe_str
Préfixe chaque ligne d'état du processus affichée par [-sa] et [-sf] par le
préfixe_str.
où Un ensemble d'identifiants de nœuds et/ou de CPU indiquant par où commencer Programme. Voir
hôte(5) pour une description des identifiants de nœud et de CPU. mpirun sera
programmer des rangs contigus dans MPI_COMM_WORLD sur le même nœud lorsque les identifiants CPU
sont utilisés. Par exemple, si LAM a été démarré avec un nombre de CPU de 4 sur n0 et un CPU
compte de 2 sur n1 et où est C, les rangs 0 à 3 seront placés sur n0, et
les rangs 4 et 5 seront placés en n1.
args Transmettez ces arguments d'exécution à chaque nouveau processus. Ceux-ci doivent toujours être les
derniers arguments à mpirun. Cette option n'est pas valide sur la ligne de commande si un
le schéma d'application est spécifié.
DESCRIPTION
Une invocation de mpirun démarre une application MPI s'exécutant sous LAM. Si la demande
est simplement SPMD, l'application peut être spécifiée sur le mpirun ligne de commande. Si la
l'application est MIMD, comprenant plusieurs programmes, un schéma d'application est requis dans un
fichier séparé. Voir schéma d'application(5) pour une description de la syntaxe du schéma d'application, mais
il contient essentiellement plusieurs mpirun lignes de commande, moins le nom de la commande elle-même. Les
la possibilité de spécifier différentes options pour différentes instanciations d'un programme est une autre
raison d'utiliser un schéma d'application.
Lieu Nomenclature
Comme décrit ci-dessus, mpirun peut spécifier des emplacements arbitraires dans l'univers LAM actuel.
Les emplacements peuvent être spécifiés soit par CPU, soit par nœud (notés par le "où" dans la SYNTAXE
rubrique ci-dessus). Notez que LAM ne lie pas les processus aux CPU -- en spécifiant un emplacement
"par CPU" est vraiment un mécanisme de commodité pour les SMP qui correspond finalement à un
nœud spécifique.
Notez que LAM numérote effectivement les rangs MPI_COMM_WORLD de gauche à droite dans le où,
quelle que soit la nomenclature utilisée. Cela peut être important car le MPI typique
les programmes ont tendance à communiquer davantage avec leurs voisins immédiats (c'est-à-dire, myrank +/- X) que
voisins éloignés. Lorsque les voisins se retrouvent sur le même nœud, les RPI shmem peuvent être utilisés pour
communication plutôt que les RPI du réseau, ce qui peut entraîner des performances MPI plus rapides.
La spécification des emplacements par nœud lancera une copie d'un exécutable par nœud spécifié.
L'utilisation d'un majuscule « N » indique à LAM d'utiliser tous les nœuds disponibles qui ont été démarrés (voir
agneau(1)). Des plages de nœuds spécifiques peuvent également être spécifiées sous la forme "nR[,R]*", où
R spécifie soit un numéro de nœud unique, soit une plage valide de numéros de nœud dans la plage de
[0, num_nodes). Par exemple:
mpirun N a.out
Exécute une copie de l'exécutable a.out sur tous les nœuds disponibles dans l'univers LAM.
MPI_COMM_WORLD rang 0 sera sur n0, rang 1 sera sur n1, etc.
mpirun n0-3 a.out
Exécute une copie de l'exécutable a.out sur les nœuds 0 à 3. MPI_COMM_WORLD rang 0
sera sur n0, le rang 1 sera sur n1, etc.
mpirun n0-3,8-11,15 a.out
Exécute une copie de l'exécutable a.out sur les nœuds 0 à 3, 8 à 11 et 15.
Les rangs MPI_COMM_WORLD seront ordonnés comme suit : (0, n0), (1, n1), (2, n2), (3, n3),
(4, n8), (5, n9), (6, n10), (7, n11), (8, n15).
La spécification par CPU est la méthode préférée de lancement des travaux MPI. L'intention est que le
schéma de démarrage utilisé avec agneau(1) indiquera combien de CPU sont disponibles sur chaque nœud,
et puis un seul, simple mpirun La commande peut être utilisée pour lancer sur chacun d'eux. Comme
indiqué ci-dessus, la spécification des processeurs ne lie pas réellement les processus aux processeurs - ce n'est qu'un
mécanisme de commodité pour le lancement sur les SMP. Sinon, la notation par CPU est la même
comme notation par nœud, sauf que "C" et "c" sont utilisés à la place de "N" et "n".
Supposons dans l'exemple suivant que l'univers LAM se compose de quatre SMP à 4 voies. Donc
c0-3 sont sur n0, c4-7 sont sur n1, c8-11 sont sur n2 et 13-15 sont sur n3.
mpirun C a.out
Exécute une copie de l'exécutable a.out sur tous les processeurs disponibles dans l'univers LAM.
Il s'agit généralement de la méthode la plus simple (et préférée) pour lancer tous les travaux MPI (même
s'il se résout à un processus par nœud). Les rangs MPI_COMM_WORLD 0-3 seront sur n0,
les rangs 4-7 seront en n1, les rangs 8-11 seront en n2 et les rangs 13-15 seront en n3.
mpirun c0-3 a.out
Exécute une copie de l'exécutable a.out sur les CPU 0 à 3. Les quatre rangs de
MPI_COMM_WORLD sera sur MPI_COMM_WORLD.
mpirun c0-3,8-11,15 a.out
Exécute une copie de l'exécutable a.out sur les processeurs 0 à 3, 8 à 11 et 15.
Les rangs MPI_COMM_WORLD 0-3 seront sur n0, 4-7 seront sur n2 et 8 seront sur n3.
La raison pour laquelle la nomenclature par CPU est préférée à la nomenclature par nœud est la meilleure
illustré par l'exemple. Envisagez d'essayer d'exécuter le premier exemple de CPU (avec le même
mappage MPI_COMM_WORLD) avec la nomenclature par nœud -- exécuter une copie de a.out pour chaque
CPU disponible et maximiser le nombre de voisins locaux pour potentiellement maximiser le MPI
performance. Une solution serait d'utiliser la commande suivante :
mpirun n0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3 a.out
Cette vos contrats, mais est définitivement maladroit à taper. Il est généralement plus facile d'utiliser le by-CPU
notation. On pourrait penser que ce qui suit est équivalent :
mpirun SUBST -np 16 a.out
Ceci est pas équivalent car les mappages de rangs MPI_COMM_WORLD seront attribués par nœud
plutôt que par CPU. Par conséquent, le rang 0 sera sur n0, le rang 1 sera sur n1, etc. Notez que le
suivant, cependant, is équivalent, car LAM interprète l'absence de où comme "C":
mpirun -np 16 a.out
Cependant, un "C" peut avoir tendance à être plus pratique, en particulier pour les scripts de mise en file d'attente par lots
car le nombre exact de processus peut varier entre les soumissions de file d'attente. Depuis le lot
système déterminera le nombre final de processeurs disponibles, ayant un script générique qui
dit effectivement "exécuter sur tout ce que vous m'avez donné" peut conduire à plus de portable / réutilisable
scripts.
Enfin, il convient de noter que la spécification de plusieurs clauses where sont parfaitement
acceptable. En tant que tel, le mélange de la syntaxe par-nœud et par-CPU est également valide, albiet
généralement pas utile. Par exemple:
mpirun CN a.out
Cependant, dans certains cas, la spécification de plusieurs clauses where peut être utile. Considérez un
application parallèle où MPI_COMM_WORLD rang 0 sera un "manager" et donc consommera
très peu de cycles CPU car il attend généralement le retour des processus "travailleurs"
résultats. Par conséquent, il est probablement souhaitable d'exécuter un processus « de travail » sur tous les
CPU, et exécutez un processus supplémentaire qui sera le « manager » :
mpirun c0 C gestionnaire-travailleur-programme
Application Programme or Exécutable Programme?
Pour distinguer les deux formes différentes, mpirun recherche sur la ligne de commande où ou le
-c option. Si ni l'un ni l'autre n'est spécifié, le fichier nommé sur la ligne de commande est supposé être
être un schéma d'application. Si l'un ou les deux sont spécifiés, le fichier est supposé
être un programme exécutable. Si où et -c les deux sont spécifiés, puis des copies du
programme sont démarrés sur les nœuds/CPU spécifiés selon une planification LAM interne
politique. Spécifier un seul nœud force effectivement LAM à exécuter toutes les copies du programme
dans un endroit. Si -c est donné, mais pas où, alors tous les processeurs disponibles sur tous les nœuds LAM sont
utilisé. Si où est donné, mais pas -c, une copie du programme est exécutée sur chaque nœud.
Programme Transferts
Par défaut, LAM recherche des programmes exécutables sur le nœud cible où un
l'instanciation s'exécutera. Si le système de fichiers n'est pas partagé, les nœuds cibles sont
homogène et que le programme est fréquemment recompilé, il peut être pratique d'avoir LAM
transférer le programme d'un nœud source (généralement le nœud local) vers chaque nœud cible. Les
-s L'option spécifie ce comportement et identifie le nœud source unique.
Localisation Fichiers
LAM recherche un programme exécutable en cherchant dans les répertoires du PATH de l'utilisateur
variable d'environnement telle que définie sur le(s) nœud(s) source(s). Ce comportement est cohérent avec
se connecter au nœud source et exécuter le programme à partir du shell. Sur les nœuds distants,
les "." chemin est le répertoire personnel.
LAM recherche un schéma d'application dans trois répertoires : le répertoire local, la valeur
de la variable d'environnement LAMAPPLDIR, et laminstalldir/boot, où "laminstalldir" est
le répertoire où LAM/MPI a été installé.
Standard I / O
LAM dirige l'entrée standard UNIX vers /dev/null sur tous les nœuds distants. Sur le nœud local qui
invoqué mpirun, l'entrée standard est héritée de mpirun. La valeur par défaut est ce qui était
l'option -w pour éviter les conflits d'accès au terminal.
LAM dirige la sortie standard UNIX et l'erreur vers le démon LAM sur tous les nœuds distants. LAM
envoie toutes les sorties/erreurs capturées au nœud qui a invoqué mpirun et l'imprime sur le
sortie standard/erreur de mpirun. Les processus locaux héritent de la sortie/erreur standard de
mpirun et y transférer directement.
Ainsi, il est possible de rediriger les E/S standard pour les applications LAM en utilisant le
procédure de redirection du shell sur mpirun.
% mpirun C mon_app mon_entrée ma_sortie
Notez que dans cet exemple uniquement le nœud local (c'est-à-dire le nœud où mpirun a été invoqué
from) recevra le flux de my_input sur stdin. Le stdin sur tous les autres nœuds
sera lié à /dev/null. Cependant, la sortie standard de tous les nœuds sera collectée dans le
mon_fichier de sortie.
Votre -f L'option évite toute la configuration requise pour prendre en charge les E/S standard décrites ci-dessus.
Les processus distants sont complètement dirigés vers /dev/null et les processus locaux héritent du fichier
descripteurs de agneau (1).
Pseudo-tty Support
Votre -pty option activée la prise en charge du pseudo-tty pour la sortie du processus (elle est également activée par
défaut). Cela permet, entre autres, une sortie en mémoire tampon de ligne à partir de nœuds distants
(ce qui est probablement ce que vous voulez). Cette option peut être désactivée avec le -npty interrupteur.
Processus Résiliation / Signal Maniabilité
Pendant l'exécution d'une application MPI, si un rang meurt anormalement (soit en sortant avant
invoquer MPI_FINALISER, ou mourir à la suite d'un signal), mpirun imprimera une erreur
message et tuez le reste de l'application MPI.
Par défaut, LAM/MPI n'installe un gestionnaire de signal que pour un signal dans les programmes utilisateur
(SIGUSR2 par défaut, mais cela peut être outrepassé lorsque LAM est configuré et construit).
Par conséquent, il est sûr pour les utilisateurs d'installer leurs propres gestionnaires de signaux dans les programmes LAM/MPI
(LAM détecte les cas de décès par signal en examinant le statut de retour du processus fourni par le
système opérateur).
Les gestionnaires de signaux utilisateur devraient probablement éviter d'essayer de nettoyer l'état MPI - LAM n'est ni l'un ni l'autre
thread-safe ni async-signal-safe. Par exemple, si un défaut de segmentation se produit dans MPI_SEND
(peut-être parce qu'un mauvais tampon a été transmis) et un gestionnaire de signal utilisateur est invoqué, si cela
le gestionnaire d'utilisateurs tente d'appeler MPI_FINALISER, de mauvaises choses pourraient arriver puisque LAM/MPI était
déjà "dans" MPI lorsque l'erreur s'est produite. Depuis mpirun remarquerez que le processus est mort
en raison d'un signal, il n'est probablement pas nécessaire (et plus sûr) que l'utilisateur nettoie uniquement
État non-MPI.
Si la -signes l'option est utilisée avec mpirun, LAM/MPI installera plusieurs gestionnaires de signaux pour
localement sur chaque rang pour capter les signaux, imprimer les messages d'erreur et tuer le reste du
Application MPI. Il s'agit d'un comportement quelque peu redondant puisque tout est désormais géré par
mpirun, mais il a été laissé pour compatibilité descendante.
Processus Sortie Les statuts
Votre -sa, -sf et -p les paramètres peuvent être utilisés pour afficher les états existants du
processus MPI individuels lorsqu'ils se terminent. -sa force l'affichage des états de sortie
pour tous les processus ; -sf affiche uniquement les statuts existants si au moins un processus se termine
soit par un signal, soit par un état de sortie différent de zéro (notez que sortir avant d'appeler
MPI_FINALISER provoquera un état de sortie différent de zéro).
L'état de chaque processus est imprimé, un par ligne, au format suivant :
prefix_string node pid statut tué
If tué est 1, alors statuts est le numéro de signal. Si tué est 0, alors statuts est la sortie
état du processus.
Le défaut chaîne_préfixe est "mpirun:", mais le -p l'option peut être utilisée pour remplacer cette
chaîne.
Courant Working : un espace de travail commun Annuaire
Le comportement par défaut de mpirun a changé par rapport au répertoire qui traite
sera démarré dans.
Votre -wd option à mpirun permet à l'utilisateur de passer à un répertoire arbitraire avant leur
programme est invoqué. Il peut également être utilisé dans les fichiers de schéma d'application pour spécifier le fonctionnement
répertoires sur des nœuds spécifiques et/ou pour des applications spécifiques.
Si la -wd L'option apparaît à la fois dans un fichier de schéma et sur la ligne de commande, le fichier de schéma
répertoire remplacera la valeur de la ligne de commande.
Votre -D L'option changera le répertoire de travail actuel vers le répertoire où le
l'exécutable réside. Il ne peut pas être utilisé dans les fichiers de schéma d'application. -wd est mutuellement
exclusif avec -D.
Si ni l'un ni l'autre -wd ni -D sont spécifiés, le nœud local enverra le nom du répertoire où
mpirun a été invoqué à partir de chacun des nœuds distants. Les nœuds distants essaieront alors de
passer à ce répertoire. S'ils échouent (par exemple, si le répertoire n'existe pas sur ce
node), ils commenceront par le répertoire personnel de l'utilisateur.
Tout changement de répertoire se produit avant que le programme de l'utilisateur ne soit appelé ; il n'attend pas
MPI_INIT est appelé.
Processus Environnement
Les processus de l'application MPI héritent de leur environnement du démon LAM lors de la
nœud sur lequel ils s'exécutent. L'environnement d'un démon LAM est fixé au démarrage de
le LAM avec agneau(1) et est généralement hérité du shell de l'utilisateur. A l'origine
nœud, ce sera le shell à partir duquel agneau(1) a été invoqué; sur les nœuds distants, l'exact
l'environnement est déterminé par le module SSI de démarrage utilisé par agneau(1). Le module de démarrage rsh,
par exemple, utilise soit rsh/ssh pour lancer le démon LAM sur les nœuds distants, et généralement
exécute un ou plusieurs fichiers de configuration du shell de l'utilisateur avant de lancer le démon LAM.
Lors de l'exécution d'applications liées dynamiquement qui nécessitent l'environnement LD_LIBRARY_PATH
variable à définir, il faut veiller à ce qu'elle soit correctement définie lors du démarrage du
MAMA.
Exporté Environnement Variables
Toutes les variables d'environnement nommées sous la forme LAM_MPI_*, LAM_IMPI_* ou IMPI_* seront
automatiquement exportés vers de nouveaux processus sur les nœuds locaux et distants. Cette exportation
peut être inhibé avec le -nx option.
En outre, le -x Option de mpirun peut être utilisé pour exporter des variables d'environnement spécifiques
aux nouveaux processus. Alors que la syntaxe du -x option permet la définition de nouveaux
variables, notez que l'analyseur pour cette option n'est actuellement pas très sophistiqué - il
ne comprend même pas les valeurs citées. Il est conseillé aux utilisateurs de définir des variables dans le
environnement et utilisation -x les exporter ; de ne pas les définir.
Tracer Generation
Deux commutateurs contrôlent la génération de trace à partir des processus exécutés sous LAM et les deux doivent être en
la position on pour que les traces soient réellement générées. Le premier interrupteur est contrôlé par
mpirun et le deuxième interrupteur est initialement réglé par mpirun mais peut être basculé au moment de l'exécution avec
MPIL_Trace_onde Géographie (2) et avec la MPIL_Trace_off(2). le -t (-tonne est équivalent) et -dandy toutes les options
allumez le premier interrupteur. Sinon le premier interrupteur est éteint et appelle MPIL_Trace_on(2)
dans le programme d'application sont inefficaces. Les -t l'option active également le deuxième
commutateur. le -dandy L'option désactive le deuxième interrupteur. Voir MPIL_Trace_onde Géographie (2) et avec la
trace de lamelle(1) pour plus de détails.
Propriétés Mitelman Sauvegarde de Conversion
La bibliothèque MPI de LAM convertit les messages MPI de la représentation locale en représentation LAM
lors de leur envoi, puis de nouveau à la représentation locale lors de leur réception. Si le cas
d'un LAM constitué d'un réseau homogène de machines où la représentation locale
diffère de la représentation LAM, cela peut entraîner des conversions inutiles.
Votre -O était auparavant nécessaire pour indiquer au LAM si le multi-ordinateur était
homogène ou non. LAM détermine désormais automatiquement si un travail MPI donné est
homogène ou non. Les -O flag sera accepté en silence pour la compatibilité descendante,
mais il est ignoré.
SSI (Système Services interface)
Votre -ssi switch permet le passage de paramètres à divers modules SSI. SSI de LAM
les modules sont décrits en détail dans lamsi(7). Les modules SSI ont un impact direct sur MPI
programmes car ils permettent de définir des paramètres réglables au moment de l'exécution (tels que le RPI
pilote de périphérique de communication à utiliser, quels paramètres transmettre à ce RPI, etc.).
Votre -ssi switch prend deux arguments : clé et Plus-valueL’ clé argument spécifie généralement
quel module SSI recevra la valeur. Par exemple, le clé "rpi" est utilisé pour sélectionner
quel RPI utiliser pour le transport des messages MPI. Les Plus-value l'argument est la valeur qui
est passé. Par exemple:
mpirun -ssi rpi lamd SUBST foo
Indique à LAM d'utiliser le RPI « lamd » et d'exécuter une seule copie de « foo » sur chaque nœud.
mpirun -ssi rpi tcp SUBST foo
Indique à LAM d'utiliser le RPI "tcp".
mpirun -ssi rpi sysv SUBST foo
Indique à LAM d'utiliser le RPI "sysv".
Etc. Les modules RPI SSI de LAM sont décrits dans lamssi_rpi (7).
Votre -ssi le commutateur peut être utilisé plusieurs fois pour spécifier différents clé et/ou Plus-value
arguments. Si le même clé est spécifié plus d'une fois, le Plus-values sont concaténés avec
une virgule (",") les séparant.
Notez que le -ssi switch est simplement un raccourci pour définir des variables d'environnement. Les
le même effet peut être obtenu en définissant les variables d'environnement correspondantes avant
Running mpirun. La forme des variables d'environnement définies par LAM est :
LAM_MPI_SSI_key=valeur.
Notez que le -ssi switch remplace toutes les variables d'environnement précédemment définies. Notez également
cet inconnu clé les arguments sont toujours définis comme variable d'environnement -- ils ne sont pas vérifiés
(Par mpirun) pour l'exactitude. Illégal ou incorrect Plus-value les arguments peuvent être ou non
signalé -- cela dépend du module SSI spécifique.
Votre -ssi interrupteur obsolète l'ancien -c2c et -lamd commutateurs. Ces commutateurs étaient
pertinent car LAM ne pouvait avoir que deux RPI disponibles à la fois : le lamd RPI et un
des RPI C2C. Ce n'est plus vrai - tous les RPI sont désormais disponibles et sélectionnables sur
Durée. La sélection du lamd RPI est illustrée dans les exemples ci-dessus. Les -c2c l'interrupteur n'a pas
traduction directe puisque "C2C" faisait référence à tous les autres RPI qui n'étaient pas le lamd
RPI. En tant que tel, -ssi RPI Plus-value doit être utilisé pour sélectionner le RPI souhaité spécifique (qu'il
est « lamd » ou l'un des autres RPI).
Sans conditions Enveloppe Ressources
Par défaut, LAM garantira une quantité minimale de mise en mémoire tampon d'enveloppe de message à chaque MPI
paire de processus et entravera ou signalera une erreur à un processus qui tente de déborder
cette ressource système. Cette fonctionnalité de robustesse et de débogage est implémentée dans une machine
manière spécifique lorsque la communication directe est utilisée. Pour une communication LAM normale via le
Démon LAM, un protocole est utilisé. Les -doigt l'option désactive le GER et les mesures prises pour
soutiens le. Le GER minimum est configuré par l'administrateur système lorsque LAM est
installée. Voir Propriétés Mitelman(7) pour plus de détails.
EXEMPLES
Assurez-vous de voir également les exemples dans la section "Nomenclature de localisation", ci-dessus.
mpirun SUBST prog1
Chargez et exécutez prog1 sur tous les nœuds. Recherchez le $PATH de l'utilisateur pour le fichier exécutable
sur chaque nœud.
mpirun -c 8 prog1
Exécutez 8 copies de prog1 partout où LAM souhaite les exécuter.
mpirun n8-10 -v -nw -s n3 prog1 -q
Chargez et exécutez prog1 sur les nœuds 8, 9 et 10. Recherchez prog1 sur le nœud 3 et transférez
vers les trois nœuds cibles. Faites un rapport au fur et à mesure que chaque processus est créé. Donnez "-q" comme
ligne de commande à chaque nouveau processus. N'attendez pas la fin des processus pour
sortant mpirun.
mpirun -v monapplication
Analysez le schéma d'application, myapp et démarrez tous les processus qui y sont spécifiés. Signaler
à mesure que chaque processus est créé.
mpirun -npty -wd /work/output -x AFFICHAGE C mon_application
Démarrez une copie de "my_application" sur chaque CPU disponible. Le nombre de disponibles
Les processeurs sur chaque nœud ont été précédemment spécifiés lorsque LAM a été démarré avec agneau(1). Comme
Noté ci-dessus, mpirun programmera un rang adjacent dans MPI_COMM_WORLD sur le même nœud
lorsque c'est possible. Par exemple, si n0 a un nombre d'UC de 8 et n1 a un nombre d'UC de 4,
mpirun placera MPI_COMM_WORLD rangs 0 à 7 sur n0, et 8 à 11 sur n1.
Cela tend à maximiser la communication sur le nœud pour de nombreuses applications parallèles ; lorsqu'elle est utilisée
en conjonction avec les RPI multi-protocoles réseau/mémoire partagée dans LAM (voir le
fichiers RELEASE_NOTES et INSTALL avec la distribution LAM), communication globale
les performances peuvent être assez bonnes. Désactivez également la prise en charge des pseudo-tty, changez de répertoire en
/work/output, et exportez la variable DISPLAY vers les nouveaux processus (peut-être
my_application invoquera une application X telle que xv pour afficher la sortie).
DIAGNOSTIC
mpirun : erreur de format d'exécution
Cela signifie généralement qu'un certain nombre de processus ou une clause where appropriée
n'a pas été spécifié, indiquant que LAM ne sait pas combien de processus exécuter. Voir
les sections EXEMPLES et « Nomenclature des emplacements », ci-dessus, pour des exemples sur la façon de
spécifiez le nombre de processus à exécuter et/ou où les exécuter. Cependant, il peut aussi
signifie qu'un caractère non ASCII a été détecté dans le schéma de l'application. C'est
généralement une erreur d'utilisation de la ligne de commande où mpirun attend un schéma d'application et
un fichier exécutable a été fourni.
mpirun : erreur de syntaxe dans le schéma de l'application, ligne XXX
Le schéma d'application ne peut pas être analysé en raison d'une erreur d'utilisation ou de syntaxe sur le
ligne donnée dans le fichier.
nom de fichier : aucun fichier ou répertoire de ce type
Cette erreur peut se produire dans deux cas. Soit le fichier nommé ne peut pas être localisé, soit il a
trouvé mais l'utilisateur n'a pas les autorisations suffisantes pour exécuter le programme ou
lire le schéma de l'application.
RETOUR VALEURE
mpirun renvoie 0 si tous les rangs ont commencé par mpirun quitter après avoir appelé MPI_FINALIZE. Un non-
la valeur zéro est renvoyée si une erreur interne s'est produite dans mpirun, ou un ou plusieurs rangs
quitté avant d'appeler MPI_FINALIZE. Si une erreur interne s'est produite dans mpirun, le
le code d'erreur correspondant est renvoyé. En cas de sortie d'un ou plusieurs rangs avant
appelant MPI_FINALIZE, la valeur de retour du rang du processus qui mpirun premier
les avis morts avant l'appel de MPI_FINALIZE seront renvoyés. Notez qu'en général, cette
sera le premier rang qui est mort, mais il n'est pas garanti qu'il en soit ainsi.
Cependant, notez que si le -nw switch est utilisé, la valeur de retour de mpirun ne
indiquer l'état de sortie des rangs.
Utilisez mpirun.lam en ligne en utilisant les services onworks.net