Я пытаюсь переключиться на использование mpi для некоторых старых кодов фортрана, которые у меня есть. Я получил некоторые странные ошибки при компиляции кода.
Error: There is no specific subroutine for the generic 'mpi_type_indexed' at (1)
когда я пытаюсь переключиться на 'использовать mpi' в коде. Если я использую 'include' mpif.h '', то программа скомпилирована и может работать правильно.
Я написал компактный пример для проверки программы. И код, и мой пример скомпилированы в gcc / 8.1.0 и openmpi / 3.1.2.
program bt
use mpi
implicit none
!include 'mpif.h'
contains
subroutine read_me()
implicit none
integer :: my_n, my_disp, my_type
integer :: ierr
my_n = 2
my_disp = 4
call MPI_Type_indexed(1, my_n, my_disp, MPI_INTEGER, my_type, ierr)
end subroutine
end program
скомпилируйте его без флага: mpif90 bt.F90
При использовании mpi commit и включении mpif.h незафиксировано, все работает отлично.
При использовании mpi uncommitted и включенном 'mpif.h', я получил сообщение об ошибке
bt.F90:23:67:
call MPI_Type_indexed(1, my_n, my_disp, MPI_INTEGER, my_type, ierr)
1
Error: There is no specific subroutine for the generic 'mpi_type_indexed' at (1)