Fortran MPI以正确的方式分散3D阵列是否需要转置?
我有一个关于使用MPI散射函数散射数据的问题 我希望以精确的方式分散数据,但我不知道是否可以通过MPI分散,或者是否必须转换数据然后分散 例如,我有数组大小(x,y,z)4,8,2(所以有两个二维数组)。现在我想把它分散到4个进程中,每个进程的大小是4,2,2 数据以衰减方式分散: 但是,我需要以这种方式分散数据: 该程序是用Fortran语言编写的 我的程序中的散布函数如下所示:Fortran MPI以正确的方式分散3D阵列是否需要转置?,fortran,mpi,scatter3d,Fortran,Mpi,Scatter3d,我有一个关于使用MPI散射函数散射数据的问题 我希望以精确的方式分散数据,但我不知道是否可以通过MPI分散,或者是否必须转换数据然后分散 例如,我有数组大小(x,y,z)4,8,2(所以有两个二维数组)。现在我想把它分散到4个进程中,每个进程的大小是4,2,2 数据以衰减方式分散: 但是,我需要以这种方式分散数据: 该程序是用Fortran语言编写的 我的程序中的散布函数如下所示: CALL MPI_Scatter(TRANSPONSE_LOCAL_YZ(:,:,:), x_proc*y*z
CALL MPI_Scatter(TRANSPONSE_LOCAL_YZ(:,:,:), x_proc*y*z_proc, MPI_INT, TRANSPONSE_YZ(:,s:f,:), x_proc*y*z_proc, MPI_INT, 0, MPI_COMM_WORLD, MPI_STATUS, MPI_err)
它在Fortran中,Fortran是列主语言,C是行主语言,这一点很重要!您认为转置可能是必要的,这是对的。转置在Fortran中,Fortran是主要列,C是主要行,这一点很重要!您认为转置可能是必要的,这是正确的。