按行而不是列分散 Fortran 90 矩阵的最佳方法是什么?也就是说,假设我有一个矩阵 a(4,50),我想将 MPI_SCATTER 分配到两个进程上,其中每个部分都是 alocal(2,50),其中等级 0 有第 1 行和第 2 行,等级 1 有 3 和4. 现在,在 C 中,这很简单,因为数组是行优先的,但在 Fortran 90 中,它们是列优先的。
我试图避免在散射之前使用 TRANSPOSE 来翻转 a(即,内存使用量加倍),我认为 MPI 中必须有一种方法可以做到这一点。会是 MPI_TYPE_VECTOR 吗?MPI_TYPE_CREATE_SUBARRAY?
同样,如果我有一个 3d 数组 b(4,50,3) 并且我想要两个分散的 blocal(2,50,3) 矩阵,如上分布?