MPI三角拓扑

时间:2014-06-03 06:57:43

标签: c parallel-processing mpi openmpi

我有一些关于(上)三角矩阵的计算,我正在考虑使用MPI。似乎为此定义适当的拓扑会很方便。笛卡尔拓扑结构朝这个方向发展,但还不是我所需要的。我需要一个拓扑结构,它给出了严格的上三角矩阵上的过程等级,即严格地在对角线上方。

我需要的三角形拓扑类型如下所示(例如3x3笛卡尔网格):

i       j      rank     
0       0      NULL       
0       1       1 
0       2       2
1       0      NULL       
1       1      NULL
1       2       3
2       0      NULL       
2       1      NULL    
2       2      NULL

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

MPI不提供您要求的拓扑类型。它提供笛卡尔坐标或一般图形拓扑。使用通用图形拓扑,每个等级都有一个相邻等级列表,但很难将半个网格映射到该等级。

您可能希望编写自己的一组例程来管理这种拓扑。您实际需要重新实现的是将坐标映射到排名,反之亦然的函数,以及查找给定排名的邻居的函数。您可以预先计算映射并将其作为属性缓存在相应的通信器中,即使用MPI_COMM_GET_ATTRMPI_COMM_SET_ATTR调用。