我有一些关于(上)三角矩阵的计算,我正在考虑使用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
感谢您的帮助!
答案 0 :(得分:2)
MPI不提供您要求的拓扑类型。它提供笛卡尔坐标或一般图形拓扑。使用通用图形拓扑,每个等级都有一个相邻等级列表,但很难将半个网格映射到该等级。
您可能希望编写自己的一组例程来管理这种拓扑。您实际需要重新实现的是将坐标映射到排名,反之亦然的函数,以及查找给定排名的邻居的函数。您可以预先计算映射并将其作为属性缓存在相应的通信器中,即使用MPI_COMM_GET_ATTR
和MPI_COMM_SET_ATTR
调用。