c++ - 我们如何计算 `MPI_graph_create` 索引数组?

标签 c++ parallel-processing mpi distributed-computing

谁能用通俗易懂的英语解释 index 在函数 MPI_Graph_create(MPI_Comm comm_old, int nnodes, const int index[], const int edges[]、int reorder、MPI_Comm *comm_graph)

我一直在分析 MPI 手册页中指定的 MPI_Graph_create 函数。我怀念 index[] 的计算方式。该标准指定 index 变量指的是节点的度数,这意味着从特定节点入射的边数。对于下面的邻接矩阵,标准有 index = 2, 3, 4, 6 。我期待 2 , 1 ,1 ,2 基于邻接矩阵指定的边。

Process  Neighbors
0         1,3
1         0
2         3
3         0,2

MPI 标准的正确答案是:-

nnodes = 4
index  = 2,  3,  4,  6 
edges  = 1 ,3, 0, 3,  0 ,2

最佳答案

你理解正确,但是索引写错了。也就是说,“答案”index= 2, 3, 4, 6index= 2, 1, 1, 2 相同。

只需注意

2 = 2
3 = 2 + 1
4 = 2 + 1 + 1
6 = 2 + 1 + 1 + 2

您可以看到您对问题的理解如何与规范的答案相匹配。您所要做的就是汇总您的版本,以便为 MPI_Graph_create() 提供所需的索引。

关于c++ - 我们如何计算 `MPI_graph_create` 索引数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32832662/

相关文章:

c++ - 什么是签名目录文件成员标签?

python - 如何运行 Luigi Pipeline 的并行实例 : Pid set already running

c++ - 如何使用 Vector Class Library 进行 AVX 矢量化以及 openmp #pragma omp parallel 进行缩减?

c - pgcc,C - 循环未并行化 : may not be beneficial

c - C 中的 MPI INT 数组

c++ - 将 boost lambda 与复合表达式一起使用

c++ - 实例化函数模板时省略模板类型参数是否合法?

multithreading - 消息传递任意对象图?

C++网络流

C MPI - 没有明显原因的崩溃 - 程序接收到信号 SIGSEGV