Fortran 90 行列を列ではなく行で散布する最良の方法は何ですか? つまり、行列 a(4,50) があり、各部分が alocal(2,50) である 2 つのプロセスに MPI_SCATTER したいとします。ここで、ランク 0 には行 1 と 2 があり、ランク 1 には行 3 と行があります。 4. C では、配列は行優先なので単純ですが、Fortran 90 では列優先です。
TRANSPOSE を使用して分散前に a を反転する (つまり、メモリ使用量を 2 倍にする) ことを避けようとしていますが、MPI にはこれを行う方法が必要であると考えています。MPI_TYPE_VECTOR でしょうか。MPI_TYPE_CREATE_SUBARRAY?
同様に、3 次元配列 b(4,50,3) があり、blocal(2,50,3) の 2 つの分散行列を上記のように分散させたい場合はどうすればよいでしょうか?