Я пытался установить 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 , как в ответе на этот вопрос . Этот вопрос не кажется актуальным.
Для включения заголовочного файла 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