mpif.h not found error [install openmpi]

Я пытался установить openpi на ubuntu. У меня рабочий стол Ubuntu 18.04.4 LTS (64 бит). Я установил openmpi с помощью

sudo apt-get install openmpi-bin openmpi-common openmpi-doc libopenmpi2 libopenmpi-dev openssh-client openssh-server

Затем в .bashrc я добавил следующие две строки:

echo export PATH = "$ PATH: /home/$USER/.openmpi/bin" >> /home/$USER/.bashrc

echo export LD_LIBRARY_PATH = "$ LD_LIBRARY_PATH: / home / $ USER / .openmpi / lib / ">> /home/$USER/.bashrc

После этого я использовал dartmouth hello world mpi , чтобы написать небольшую программу, скомпилировать ее и запустить для проверки что установка openmpi в порядке, набрав gfortran ubuntu.f90

, что приводит к следующей ошибке

ubuntu.f90: 2: Ошибка: не удается открыть включенный файл 'mpif.h'

код в ubuntu.f90:

program hello
include 'mpif.h'
integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)

call MPI_INIT(ierror)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror)
print*, 'node', rank, ': Hello world'
call MPI_FINALIZE(ierror)
end

Я пробовал установить libblacs-mpi-dev , как в ответе на этот вопрос . Этот вопрос не кажется актуальным.

1
задан 1 March 2020 в 14:29

1 ответ

Для включения заголовочного файла C-стиля в программу Фортрана необходимо использовать директиву препроцессору C-стиля

#include <mpif.h>

вместо собственного Фортрана include оператор, и затем говорит gfortran выполнять препроцессор путем добавления -cpp переключатель командной строки (или изменение исходный файл снабжают суффиксом к верхнему регистру F90 который заставляет препроцессор быть выполненным по умолчанию). Посмотрите, например,

Однако включая mpif.h по-видимому, удерживается от использования, и вместо этого необходимо, вероятно, использовать модуль MPI и скомпилировать использование программы mpif90 вместо вызова gfortran непосредственно.

Напр.

$ cat ubuntu.f90 
program hello
use mpi
integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)

call MPI_INIT(ierror)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror)
print*, 'node', rank, ': Hello world'
call MPI_FINALIZE(ierror)
end

$ mpif90 ubuntu.f90

$ ./a.out 
 node           0 : Hello world

FWIW, Ваши изменения в PATH и LD_LIBRAY_PATH вероятно, не имейте никакого эффекта, так как Вы установили openmpi в системное использование каталогов apt

1
ответ дан 17 March 2020 в 00:11

Другие вопросы по тегам:

Похожие вопросы: