tutorial programming program open mpicc for example c++ c mpi openmpi

c++ - programming - error fatal: mpi.h: no existe tal archivo o directorio#include<mpi.h>



openmpi example (5)

Como se sugirió anteriormente, la inclusión de

/usr/lib/openmpi/include

en el camino de inclusión cuida esto (en mi caso)

cuando compilo mi script con solo

#include <mpi.h>

me dice que no hay tal archivo o directorio. Pero cuando incluyo el camino a mpi.h como

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

(el camino es correcto) devuelve:

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.

Alguien sabe como arreglar esto?


Debian parece incluir lo siguiente:

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

Probaré los enlaces simbólicos de cada uno para mpic, etc., y veré si eso ayuda a los gustos de HDF5-openmpi habilitado para encontrar mpi.h.

Vuelva a intentarlo. Debian incluye enlaces simbólicos a través de su sistema alternativo y aún no puede encontrar las rutas adecuadas entre los paquetes HDF5 openmpi y mpi.h referenciados en el encabezado H5public.h.


El problema es casi seguro que no estás usando las envolturas del compilador MPI. Cuando esté compilando un programa MPI, debe usar las envolturas MPI:

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

Estos envoltorios hacen todo el trabajo sucio por usted para asegurarse de que se incluyan todos los indicadores, bibliotecas, directorios de bibliotecas, directorios incluidos, directorios de bibliotecas, etc. apropiados del compilador cuando compile su programa.


En mi sistema, me faltaba el paquete de Linux.

sudo apt install libopenmpi-dev pip install mpi4py

(Ejemplo de algo que lo usa, que es una buena prueba instantánea para ver si tuvo éxito)

Sucedido


Puedes ejecutar:

$ mpicc -showme

resultado:

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

Este comando te muestra las bibliotecas necesarias para compilar mpicc

Ejemplo:

$ 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

este comando genera un ejecutable con su programa en el ejemplo, puede ejecutar:

$ ./example