web-dev-qa-db-fra.com

erreur fatale: mpi.h: Aucun fichier ou répertoire de ce type #include <mpi.h>

quand je compile mon script avec seulement

#include <mpi.h>

il me dit qu’il n’existe aucun fichier ou répertoire de ce type .

#include "/usr/include/mpi/mpi.h"

(le chemin est correct) il retourne:

In file included from /usr/include/mpi/mpi.h:2087:0,
                 from lbm.cc:7:
/usr/include/mpi/openmpi/ompi/mpi/cxx/mpicxx.h:35:17: fatal error: mpi.h: No such file or directory
 #include "mpi.h"
                 ^
compilation terminated.

Quelqu'un sait comment réparer ceci?

26
user2804865

Le problème est presque certainement que vous n'utilisez pas les wrappers du compilateur MPI. Chaque fois que vous compilez un programme MPI, vous devez utiliser les wrappers MPI:

  • C - mpicc
  • C++ - mpiCC, mpicxx, mpic++
  • FORTRAN - mpifort, mpif77, mpif90

Ces wrappers effectuent tout le travail nécessaire pour vous assurer que tous les indicateurs, bibliothèques, répertoires d'inclusion, répertoires de bibliothèque, etc. appropriés du compilateur sont inclus lors de la compilation de votre programme.

28
Wesley Bland

Sur mon système, il me manquait juste le paquet Linux. 

Sudo apt install libopenmpi-dev
pip install mpi4py

(exemple de quelque chose qui l'utilise, c'est un bon test instantané pour voir s'il a réussi)

A réussi. 

6
Gregory Alan Bolcer

Debian semble inclure les éléments suivants: 

  • mpiCC.openmpi
  • mpic ++. openmpi
  • mpicc.openmpi
  • mpicxx.openmpi
  • mpif77.openmpi
  • mpif90.openmpi

Je vais tester les liens symboliques de chacun pour mpic, etc., et voir si cela aide les goûts de HDF5-openmpi qui a permis de trouver mpi.h.

Reprenez cela, Debian inclut les liens symboliques via son système alternatif et elle ne trouve toujours pas les chemins appropriés entre les paquets HDF5 openmpi et mpi.h référencés dans l’en-tête H5public.h.

3
Marc J. Driftmeyer

Comme suggéré ci-dessus, l'inclusion de 

/usr/lib/openmpi/include 

dans le chemin d'accès en prend soin (dans mon cas)

3
jeremy_rutman

Sur mon système Ubuntu 16.04. J'ai installé :

Sudo apt install libopenmpi-dev

après avoir utilisé mpiCC pour compiler et cela fonctionne

0
le vantard

Vous pouvez exécuter:

$ mpicc -showme 

résultat :

gcc -I/Users/<USER_NAME>/openmpi-2.0.1/include -L/Users/<USER_NAME>/openmpi-2.0.1/lib -lmp

Cette commande vous montre les bibliothèques nécessaires pour compiler mpicc

Exemple:

$ mpicc -g  -I/Users/<USER_NAME>/openmpi-2.0.1/include -o [nameExec] [objetcs.o...] [program.c] -lm


$ mpicc -g  -I/Users/<USER_NAME>/openmpi-2.0.1/include -o example file_object.o my_program.c otherlib.o -lm

cette commande génère un exécutable avec votre programme en exemple, vous pouvez exécuter:

$ ./example
0
Bvacavar