【发布时间】:2015-03-20 06:36:42
【问题描述】:
我目前正在尝试实现类似于 2D 扩散的模拟。我想通过使用域组合来加速该过程,自动将整个域拆分为正确的块(根据硬件 - MPI_Dims_create)。然后,我在每次迭代后交换相邻单元/进程之间的幽灵单元(因为下一次迭代需要它们)。
我使用笛卡尔坐标 (MPI_Cart_create) 实现了整体,因此我将整个域拆分为具有不同维度 Nx 和 Ny 的 Nx*Ny 单元块。我已经有了概念上最简单的缓冲区实现,但我现在想使用 MPI 类型来提高性能。
我目前面临的问题是,是否有一种方法可以使用子数组构建幽灵单元,或者我是否必须使用向量 MPI 类型?我找到了子数组here 的提示,但我认为我不能用它从不连续的内存中构建子数组。这个假设是否正确,我应该最好使用 MPI_Type_vector 吗?
【问题讨论】: