У меня есть код на моем компьютере использует Petsc
который зависит от mpi
, На моем компьютере это работает хорошо. Я положил его на кластер, экспортированные пути gcc
, Petsc
а также openmpi
(хотя я использовал mpich
на моем компьютере я надеюсь openmpi
также будет работать) LD_LIBRARY_PATH
а также PATH
, Я также изменил пути в makefile. Petsc, gcc, openmpi были доступны на кластере, поэтому я ничего не настраивал. Когда я сделал make
Компилятор дал ошибку:
fatal error: mpi.h: No such file or directory
Я знаю, что не дал полной информации, но могу рассказать больше, если это необходимо. Как я могу сделать Petsc
знать где mpi.h
?
Как правило, вы должны использовать mpicc
(или же mpicxx
для C ++) компилировать вместо gcc
(или же g++
для C ++). Эти команды являются простыми обертками gcc
а также g++
что просто добавить в соответствующий -I/path/to/mpi/includes
а также -L/path/to/mpi/libs
автоматически и должен быть включен в ваш openmpi
установить. В отсутствие этого просто добавьте -I/path/to/mpi/includes
в вашей команде, чтобы скомпилировать соответствующие файлы. Это сообщает компилятору, где искать соответствующие заголовочные файлы.
Ответить на вопрос. Чтобы редактор C / C ++ не отображал ошибки при «специальном коде», просто используйте:
#include </usr/include/mpi/mpi.h>
кажется, что это ссылка, но это отключает ошибки в редакторе Netbeans, так что я могу писать без отвлечения.
Примечание: используя Ubuntu 18.04 Desktop в качестве редактирующего компьютера — и запускайте тестирование — но я компилирую вручную, используя mpic, как отмечалось ранее.
sudo mpicc c_pi.c -o c_pi
and then...
mpiexec ./c_pi
НТН