【问题标题】:What is the MPI code to extract a 2D sub-matrix from a larger 2D matrix?从较大的 2D 矩阵中提取 2D 子矩阵的 MPI 代码是什么?
【发布时间】:2023-04-10 06:56:01
【问题描述】:
我正在寻找从较大的二维子矩阵中提取二维子矩阵的最佳方法。那是。如果我有一个每个边都有 1 个鬼点的矩阵,我想提取内部矩阵。因此,如果矩阵定义为 matrix[NX+2][NY+2] 我如何提取从 matrix[1][1] 开始到 matrix[NX+1][NY+1]
的子矩阵>
我想使用 MPI_Type_vector 来执行此操作,但我不确定如何使用正确的步幅、块长度等来定义它。我想使用 MPI_Send 和 MPI_Recv 将新的 MPI_Datatype 发送到另一个处理器。接收处理器上的缓冲区大小为 [NX][NY]
谢谢
【问题讨论】:
标签:
arrays
vector
types
mpi
【解决方案1】:
在 Fortran 中是这样的
call mpi_type_vector(ny,nx,nx+2,mpi_double_precision,my_new_type,ierr)
call mpi_type_commit(my_new_type,ierr)
将它翻译成 C 时我会犯更多的错误。不要忘记 Fortran 以行优先顺序存储数组。