web-dev-qa-db-fra.com

Comment utiliser mpi sur Mac OS X

Je cherchais un moyen d’utiliser mpi sur mon mac, mais tout est très avancé.

J'ai installé avec succès open-mpi en utilisant

brew install open-mpi

J'ai des fichiers .c prêts pour la compilation et l'exécution. Quand je tape:

mpicc -o <file> <file.c>

suivi par

mpirun <file>

Je reçois

[xxxxx-MacBook-Pro.local: 13623] [[44919,0], 0] ORTE_ERROR_LOG: mauvais paramètre dans le fichier orted/pmix/pmix_server.c à la ligne 262
[xxxxx-MacBook-Pro.local: 13623] [[44919,0], 0] ORTE_ERROR_LOG: mauvais paramètre du fichier ess_hnp_module.c à la ligne 666 

Il semble que orte_init a échoué pour une raison quelconque; votre processus parallèle est susceptible d'avorter. Il existe de nombreuses raisons pour lesquelles un processus parallèle peut échouer pendant orte_init; dont certaines sont dues à la configuration ou au problèmes d'environnement. Cette défaillance semble être une défaillance interne; voici quelques informations supplémentaires (qui peuvent uniquement concerner un développeur Ouvrez le développeur MPI):

Échec d'initialisation du serveur pmix
-> Valeur renvoyée Paramètre incorrect (-5) au lieu de ORTE_SUCCESS

Je reçois aussi le même message quand j'entre:

mpirun -np 2 <file>

Qu'est-ce que je fais mal?

10
jjCS

Si j'étais vous, je ferais comme suit:

L'installation d'Open MPI est assez simple

https://www.open-mpi.org/software/ompi/v2.0/

> tar xf openmpi-2.0.2.tar
> cd openmpi-2.0.2/
> ./configure --prefix=$HOME/opt/usr/local
> make all
> make install
> $HOME/opt/usr/local/bin/mpirun --version
mpirun (Open MPI) 2.0.2

Report bugs to http://www.open-mpi.org/community/help/

Vous pouvez utiliser le monde de salut super simple à des fins de test

#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    MPI_Init(NULL, NULL);
    int rank;
    int world;
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &world);
    printf("Hello: rank %d, world: %d\n",rank, world);
    MPI_Finalize();
}

Une fois que tout est en place, il suffit de compiler et d’exécuter le code.

$HOME/opt/usr/local/bin/mpicc -o hello ./hello.c
$HOME/opt/usr/local/bin/mpirun -np 2 ./hello
Hello: rank 0, world: 2
Hello: rank 1, world: 2

Fonctionne parfaitement sur macOS

16
Oo.oO

Sur certaines versions de Mac OS X/MacOS Sierra, l'emplacement du répertoire temporaire par défaut est suffisamment long pour qu'il soit facile pour une application de créer des noms de fichiers pour les fichiers temporaires dépassant la longueur maximale autorisée, ce qui peut provoquer cette erreur .so vous devriez définir le répertoire temporaire en utilisant export TMPDIR=/tmp

plus de détails ici https://www.open-mpi.org/faq/?category=osx

3
shinxg

S'appuyant sur la réponse fournie par @ Oo.oO.
Installez OpenMPI.
Il peut être installé avec brew.

brew install openmpi

2
letsBeePolite

Si vous avez installé anaconda, c’était l’option la plus rapide pour moi: conda install -c mpi4py openmpi

1
sachinruk