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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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散射体V’;at(1)_Fortran_Mpi_Gfortran_Openmpi_Windows Subsystem For Linux - Fatal编程技术网

Fortran 对于泛型‘;mpi#U散射体V’;at(1)

Fortran 对于泛型‘;mpi#U散射体V’;at(1),fortran,mpi,gfortran,openmpi,windows-subsystem-for-linux,Fortran,Mpi,Gfortran,Openmpi,Windows Subsystem For Linux,我的系统是Windows上的Ubuntu Bash shell 我使用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表格-g-fbacktrace-UREPOSILM-UNLDAS2-c test-mpi.f90 错误是: CALL MPI_S

我的系统是Windows上的Ubuntu Bash shell

我使用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表格-g-fbacktrace-UREPOSILM-UNLDAS2-c test-mpi.f90

错误是:

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在服务器上编译。没有错误,运行良好


你能帮我解决这个问题吗?我搜索了好几天。

正如Gilles Gouaillardet在评论中指出的那样,有几个参数,应该是数组,但是你在那里传递标量

你声称你检查了OpenMPI手册。当我打开它时,我看到了

MPI_SCATTERV(SENDBUF, SENDCOUNTS, DISPLS, SENDTYPE, RECVBUF,
                 RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
            <type>    SENDBUF(*), RECVBUF(*)
            INTEGER   SENDCOUNTS(*), DISPLS(*), SENDTYPE
            INTEGER   RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR
它们必须是数组,否则程序不正确


程序在我的计算机上崩溃了。我不会去寻找原因,这是不值得的。这可能是因为
root
的值未定义。必须修复上述错误。

欢迎。Fortran问题使用tag,MPI问题使用tag。标签非常重要,以便rigjt专家看到您的问题!。我们得看看你的密码。请阅读,并接受欢迎。另请参阅我们必须查看您的代码。不仅是
调用scatterv()
,而且是一个完整的可编译示例,在这里我们可以看到所有类型的变量,并且可以编译和测试错误。所有变量的数据类型都是非常必要的。几乎可以肯定语法是不正确的。该错误意味着一个或多个参数与对MPI_SCATTERV的任何有效调用都不匹配。这表明输入错误。第二个参数应该是
SCOUNT
,而不是
SCOUNT
。Fortran可能会抱怨,因为在需要数组时使用了标量。至少是这样,但现在错误消息与代码不符。非常感谢!现在我使用mpich,然后编译成功。可能有些编译器使用了不同类型的参数。我重复一遍:您的代码是错误的。即使它编译了,也是错误的。编译的代码有很多错误。此外,在这样的do循环中,您不能
MPI\u Scatterv()
。发送缓冲区应该有2个元素,当发送缓冲区为
xcug2m(i)
时,会出现缓冲区溢出。正如@Vladimir F所指出的,您的代码仍然是错误的(至少有4个错误),令人惊讶的是,mpich使用了一个松散的编译器(选项?)来愚弄您。
MPI_SCATTERV(SENDBUF, SENDCOUNTS, DISPLS, SENDTYPE, RECVBUF,
                 RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
            <type>    SENDBUF(*), RECVBUF(*)
            INTEGER   SENDCOUNTS(*), DISPLS(*), SENDTYPE
            INTEGER   RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR
sendcounts
                 Integer array (of length group size) specifying the number of elements to send to each processor.

       displs    Integer array (of length group size). Entry i specifies the displacement (relative to sendbuf) from which to take the outgoing data to process i.