J'ai un script parallèle (bash) embarrassant qui s'exécute dans un cluster de calcul. Le script est un script shell et est pas lié à une bibliothèque MPI: cela signifie que la seule façon de lui envoyer le rang MPI est avec un paramètre de ligne de commande.Combinaison de xargs parallel et mpirun
So Far, je ne l'exécutaient dans un seul nœud, et la solution est simple:
#!/bin/bash
#SBATCH --nodes=1
N=16
seq $N | xargs -P $N -I% my_script.bash % $N
Comment puis-je l'échelle avec deux nœuds? Si j'utilise simplement '--nodes = 2' et N=32
alors xargs
essayera de générer tous les threads sur le même noeud. D'autre part, je ne peux pas utiliser mpiexec
seul: parce que le script n'est pas lié à la bibliothèque MPI
et je ne sais pas comment dire au script quels threads il est.
La solution DOIT-elle utiliser MPI? C'est extrêmement facile à faire avec GNU Parallel: seq $ N | parallèle -S serveur1, serveur2,: mon_script.bash {} $ N –