it-swarm.com.ru

фатальная ошибка: mpi.h: нет такого файла или каталога #include <mpi.h>

когда я компилирую свой сценарий только

#include <mpi.h>

он говорит мне, что нет такого файла или каталога . Но когда я включаю путь к mpi.h как

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

(путь правильный) возвращает:

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.

Кто-нибудь знает, как это исправить?

26
user2804865

Проблема почти наверняка в том, что вы не используете обертки компилятора MPI. Всякий раз, когда вы компилируете программу MPI, вы должны использовать оболочки MPI:

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

Эти оболочки делают всю грязную работу за вас, чтобы убедиться, что все соответствующие флаги компилятора, библиотеки, каталоги, каталоги библиотек и т.д. Включены при компиляции вашей программы.

28
Wesley Bland

В моей системе мне просто не хватало пакета Linux. 

Sudo apt install libopenmpi-dev
pip install mpi4py

(пример чего-то, что использует это, является хорошим мгновенным тестом, чтобы видеть, преуспел ли он)

Преуспели. 

6
Gregory Alan Bolcer

Похоже, что в Debian включено следующее: 

  • mpiCC.openmpi
  • кОМП ++. OpenMPI
  • mpicc.openmpi
  • mpicxx.openmpi
  • mpif77.openmpi
  • mpif90.openmpi

Я протестирую символические ссылки для каждого на mpic и т.д., И посмотрю, поможет ли это подобным HDF5-openmpi с поддержкой найти mpi.h.

Вернемся к тому, что Debian включает символические ссылки через свою альтернативную систему, и он все еще не может найти правильные пути между пакетами openmpi HDF5 и mpi.h, на которые есть ссылка в заголовке H5public.h.

3
Marc J. Driftmeyer

Как предложено выше, включение 

/usr/lib/openmpi/include 

в пути включения позаботится об этом (в моем случае)

3
jeremy_rutman

На моей системе Ubuntu 16.04. Я установил:

Sudo apt install libopenmpi-dev

после того как я использовал mpiCC для компиляции и он работает

0
le vantard

Вы можете выполнить:

$ mpicc -showme 

результат:

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

Эта команда показывает вам необходимые библиотеки для компиляции mpicc

Пример:

$ 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

эта команда генерирует исполняемый файл с вашей программой, например, вы можете выполнить:

$ ./example
0
Bvacavar