struct Face
{
// Matrixd is 1D representation of 2D matrix
std::array < Matrixd<5,5>, 2 > M;
};
std::vector <Face> face;
ノード間で for ループを分散しています。すべてのノードが要素の処理を終了したら、対応する要素をノード間で転送したいと考えています。しかし、データを使用するためのAFAIKはMPI_Allgatherv
連続している必要があります。まず、2D 行列の 1D 表現に切り替えました (以前は [][] 表記を使用していました)。face.M
今、私は連続したいと思っています。たとえば、M [0]のすべての要素をstd::array
ノード間の転送にコピーすることを考えています。この方法は効率的ですか?私が扱うデータの数を把握するために、20k のセルがある場合、最大で 20k*3=60k の面があります。私も100万個の細胞を持っているかもしれません。