Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 没有针对‘的特定子例程;mpi#U散射’;_Fortran_Mpi_Gfortran - Fatal编程技术网

Fortran 没有针对‘的特定子例程;mpi#U散射’;

Fortran 没有针对‘的特定子例程;mpi#U散射’;,fortran,mpi,gfortran,Fortran,Mpi,Gfortran,我从Fortran中的MPI开始,尝试从数组中进行分散。代码如下: program test_scatter use mpi implicit none integer :: ierr, rank, size, comm, i, j integer, parameter :: dim = 5, dim_nodos = 4 real, dimension(dim, dim) :: panel_pos rea

我从Fortran中的MPI开始,尝试从数组中进行分散。代码如下:

program test_scatter
  use mpi
  implicit none
  integer                      :: ierr, rank, size, comm, i, j
  integer, parameter           :: dim = 5, dim_nodos = 4
  real, dimension(dim, dim)    :: panel_pos
  real, dimension(dim_nodos)   :: nodos
  real                         :: rev_buf

  forall(i = 1:dim_nodos) nodos(i) = i
  comm = MPI_COMM_WORLD
  call MPI_INIT(ierr)
  call MPI_COMM_SIZE(comm, size, ierr)
  call MPI_COMM_RANK(comm, rank, ierr)

  call MPI_Bcast(panel_pos, dim*dim, MPI_REAL, 1, comm, ierr)
  call MPI_Scatter(nodos, 1, MPI_REAL, rev_buf, 1, 1, comm, ierr)
  print *, panel_pos, 'from rank', rank

  ! Finalizar MPI
  call MPI_FINALIZE(ierr)
end program test_scatter
我尝试使用以下方法进行编译:

mpif90 test_scatter.F90 -o test_scatter.e
但我得到了这个错误:

我有Debian测试。该系统是最新的。我安装OpenMPI的方式如下:

$ sudo apt-get install openmpi-bin openmpi-common openmpi-doc libopenmpi-dev

我做错了什么?

如评论中所述,您需要另外指定接收缓冲区的
MPI\u数据类型:

call MPI_Scatter(nodos, 1, MPI_REAL, rev_buf, 1, MPI_REAL, 1, comm, ierr)

正如你的标题可能暗示了一种误解,它不是“无子例程”,而是“无特定子例程”。特别是,您似乎没有在receipt上提供类型。请仔细检查您的文档。您只是忘记了接收数据的类型。您的呼叫应该是
呼叫MPI\u分散(nodos,1,MPI\u REAL,rev\u buf,1,MPI\u REAL,1,comm,ierr)
(注意额外的
MPI\u REAL
call MPI_Scatter(nodos, 1, MPI_REAL, rev_buf, 1, MPI_REAL, 1, comm, ierr)