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 个面。我也可能有一百万个细胞。