Моя система представляет собой оболочку Ubuntu Bash в Windows.
Я использую gfortran GNU Fortran (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609 и gcc версии 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5< /эм>). и OpenMPI для компиляции файла.
Флаг:
mpifort -ffree-form -g -fbacktrace -UREPSOILM -UNLDAS2 -c test-mpi.f90
PROGRAM test
USE MPI
IMPLICIT NONE
REAL, DIMENSION(2) :: xcug2m
INTEGER :: NODID, NUMPROCS, IERROR, COMM, DISPLS
REAL, DIMENSION(1) :: cug2m
INTEGER :: NPROCS=2, root
INTEGER :: SENDCOUNTS=1
INTEGER :: i
CALL MPI_INIT(IERROR)
CALL MPI_COMM_RANK(COMM, NODID, IERROR)
CALL MPI_COMM_SIZE(COMM, NUMPROCS, IERROR)
xcug2m = (/1,2/)
do i = 1,2
CALL MPI_SCATTERV(xcug2m(i), SENDCOUNTS, DISPLS, MPI_REAL, &
cug2m, SENDCOUNTS, MPI_REAL, root, COMM, IERROR)
end do
END PROGRAM test
Ошибка:
CALL MPI_SCATTERV(xc(:,i,j ), SCOUNT, DISPLS, MPI_REAL, c(:,i ),
SCOUNT, MPI_REAL, 0, MPI_COMM_WORLD, IER)
1
Error: There is no specific subroutine for the generic ‘mpi_scatterv’ at (1).
Я прочитал руководство MPI_scatterv, но ничего не нашел. Синтаксис в порядке. Раньше я компилировал на сервере с помощью ifort и OpenMPI. Ошибки нет и работает нормально.
Не могли бы вы помочь мне решить эту проблему? Я искал несколько дней.
call scatterv()
, но и полный компилируемый пример, где мы видим все типы всех переменных и который мы можем скомпилировать и проверить на ошибку. Типы данных всех переменных действительно необходимы. - person Vladimir F   schedule 08.11.2017SCOUNTS
вместоSCOUNT
. Фортран, вероятно, жалуется, потому что скаляр используется, когда ожидается массив. - person Gilles Gouaillardet   schedule 08.11.2017