6.6 一个应用例子

BACKWARD FORWARD


例 6.6 图6.1的例子显示怎样在应用程序中使用网格定义和查询函数。一个偏微分方程,例如帕松等式,在规则域中解决。首先,进程将自己组织在二维结构中。每一进程然后在四个方向上(上,下,左,右)查询邻居的标识数。通过迭代方法解决数字问题,详细信息隐含在子程序relax中。

在每一松弛步中,每一进程在进程所拥有点上对解析格子函数计算新值。然后在交互进程的边缘上的值不得不同邻居进程相互交换。例如,交换子程序可以包含调用MPI_SEND(…, neigh_rank(1),…),以发送被更新的值到左手邻居(I-1, j)。

C Set process grid size and periodicity

C Create a grid structure in WORLD group and inquire about own position

C Look up the ranks for the neighbors, Own process coordinates are (i, j)。

C Neighbors are (I-1, j), (I, j+1), (I, j-1), (I, j+1)

C Initialize the grid functions and start the iteration

C Exchange data with neighbor processes


Copyright: NPACT BACKWARD FORWARD