0
我是MPI编程的新手。在线阅读一些信息时,我无法理解鬼行/列。有人可以请向我解释它是什么,它是如何实现的,为什么我们使用它?什么是计算中的幽灵行或列?
我是MPI编程的新手。在线阅读一些信息时,我无法理解鬼行/列。有人可以请向我解释它是什么,它是如何实现的,为什么我们使用它?什么是计算中的幽灵行或列?
鬼区域通常与模板应用程序一起使用。这也就意味着,该过程可能是这样的(我要回答二维这个问题,但可以推断但许多方面是有帮助的你)进行布局:
0 | 1 | 2
---------
3 | 4 | 5
---------
6 | 7 | 8
每个进程直接通信与其邻居(北部,南部,东部和西部)每次迭代交换数据。每个进程具有2D数据的一些块被布置是这样的:
1 5 9 3 7
2 3 4 8 0
2 5 7 3 9
9 3 8 1 4
8 3 7 3 2
数据的边缘通常被用作“鬼区”:
1 5 9 3 7
---------
2 | 3 4 8 | 0
2 | 5 7 3 | 9
9 | 3 8 1 | 4
---------
8 3 7 3 2
这意味着该数据是由可用于邻近的进程,以便他们可以在自己的计算中使用它,通常用于计算域分解问题边界处物理对象之间的某种交互。
至于实现,这将取决于数据,但通常可以使用自定义MPI数据类型完成。我不会在这里提供代码,因为它对于你的应用程序是非常特殊的,但是网上有很多教程可以学习如何使用MPI数据类型。
这里是一个教程,我用一个快速的谷歌搜索出现。这不是专门针对MPI的,但它解释了基本概念:http://www.hpjava.org/papers/HPJava/HPJava/node28.html