小编Cli*_*dan的帖子

如何在Fortran 90中使用MPI结构发送和接收阵列

我正在尝试在Fortran 90的MPI结构中打包1D和2D双精度数组。我已经在C ++中成功完成了一个非常相似的问题,该过程似乎几乎完全相同,但是我似乎无法找出我在哪里出错了,尽管MPI错误代码非常有帮助...

我最好的猜测是问题出在块长度或位移计算上。当对MPI_RECV()的调用被注释掉时,代码将编译并运行,但是当取消注释时会导致错误。

main.f90

program main
    use mymodule

    call MPI_INIT(ierr)
    call MPI_COMM_SIZE(MPI_COMM_WORLD, nPROC, ierr)
    call MPI_COMM_RANK(MPI_COMM_WORLD, myID, ierr)

    call PASS_MESH_MPI()

    call MPI_FINALIZE(ierr)

end program
Run Code Online (Sandbox Code Playgroud)

mymodule.f90

module mymodule
use mpi

double precision, dimension(:,:) :: U(0:10,0:10)
double precision, dimension(:) :: r(0:10), z(0:10)
integer, public :: ierr, nPROC, nWRs, myID, stat(MPI_STATUS_SIZE)

type mytype
      double precision, dimension(:,:), allocatable :: U
      double precision, dimension(:), allocatable :: r
      double precision, dimension(:), allocatable :: z
end type


contains

subroutine PASS_MESH_MPI()
implicit none
type(mytype) :: package
integer …
Run Code Online (Sandbox Code Playgroud)

fortran mpi

5
推荐指数
0
解决办法
81
查看次数

标签 统计

fortran ×1

mpi ×1