Почему «использовать mpi» не работает с mpif90

Чтобы скомпилировать код MPI в gfortran, я должен использовать синтаксис

include mpif.h

в моем коде вместо

use mpi

Несколько веб-сайтов указывают, что этот синтаксис предназначен для Fortran 77, однако я использую gfortran gcc версии 4.7.2 (Debian 4.7.2-5) и mpfi90 для MPICH2 версии 1.4.1p1.

Командная строка

mpif90 test1.f90 -o test1.exe

выдает следующую ошибку

test1.f90:4.8: use mpi 1 Fatal Error: Parse error when checking module version for file 'mpi.mod' opened at (1)

test1.f90 (из курса Coursera по HPC)

program test1

use mpi !(fails to compile)
implicit none

include 'mpif.h' !(this works)

integer :: ierr, numprocs, proc_num

call mpi_init(ierr)
call mpi_comm_size(MPI_COMM_WORLD, numprocs, ierr)
call mpi_comm_rank(MPI_COMM_WORLD, proc_num, ierr)

print *, 'Hello from Process number', proc_num, &
         ' of ', numprocs, ' processes'

call mpi_finalize(ierr)

end program test1

person Ron    schedule 12.05.2014    source источник
comment
Каким образом это терпит неудачу?   -  person francescalus    schedule 12.05.2014
comment
Добавьте больше информации, и я буду рад вернуть отрицательный голос.   -  person Vladimir F    schedule 12.05.2014
comment
Вы собирали MPICH2 из исходников или устанавливали из пакета ОС?   -  person kraffenetti    schedule 12.05.2014
comment
Командная строка mpif90 test1.f90 -o test1.exe выдает следующую ошибку test1.f90:4.8: используйте mpi 1 Неустранимая ошибка: ошибка синтаксического анализа при проверке версии модуля для файла «mpi.mod», открытого в (1) Это то, что я имел в виду сбой, должен был сказать, что не удалось скомпилировать.   -  person Ron    schedule 13.05.2014
comment
Нет, вы должны были включить полное сообщение об ошибке. Не удалось скомпилировать. ничего не рассказывает. Пожалуйста, отредактируйте вопрос, чтобы включить эту информацию.   -  person Vladimir F    schedule 13.05.2014
comment
MPICH2 был установлен с помощью Synaptic, который предоставляет стандартную выбранную версию MPICH2 для Ubuntu.   -  person Ron    schedule 13.05.2014


Ответы (2)


Другой вариант, с которым я часто сталкиваюсь, — это когда компилятор Fortran, используемый для сборки библиотеки MPI, несовместим с вашим текущим компилятором Fortran. Тогда проблема в несовместимости файлов .mod. Gfortran более восприимчив к этому, чем, скажем, Intel Fortran, потому что он чаще меняет формат модуля.

person Vladimir F    schedule 12.05.2014
comment
Похоже, что некоторые из вас порекомендовали бы собрать библиотеку MPI из исходного кода, используя мой Gfortran. Я попробую. - person Ron; 13.05.2014
comment
Это действительно помогает. Или убедитесь, что вы используете версию gfortran, которая использовалась для сборки библиотеки MPI. Ваш системный администратор кластера поможет вам в этом. - person Vladimir F; 13.05.2014
comment
Ха-ха! Я администратор кластера! На самом деле просто старый инженер на пенсии с парой компьютеров, пытающийся научиться чему-то новому. Спасибо всем за улучшение моего вопроса! - person Ron; 13.05.2014

В зависимости от того, как был скомпилирован MPICH2, возможно, интерфейс F90 не был создан. Это имеет тенденцию происходить удручающе часто при использовании пакетов, созданных C-головами.

person janneb    schedule 12.05.2014
comment
Привязки Fortran включены по умолчанию при сборке MPICH из исходного кода, если обнаружен компилятор Fortran. - person kraffenetti; 13.05.2014