【发布时间】:2017-08-28 08:54:42
【问题描述】:
我正在编写一个 MPI fortran 程序,并且在三个等级中有三个不同长度的向量。我想以“连接”的方式将它们组合在一起,例如:
Rank 0: a0 = [1 2 3 4 5]
Rank 1: a1 = [3 5 7 9]
Rank 2: a2 = [2 4 6 8 10 12]
将它们组合成:
Rank 0: a = [1 2 3 4 5 3 5 7 9 2 4 6 8 10 12]
你能告诉我怎么做吗?
【问题讨论】:
-
感谢@alfC 的回答。我还找到了 mpi_gatherv 并阅读了发送链接中给出的示例;但我仍然不确定在我的情况下如何正确地做到这一点。看来我应该事先发送向量的长度,以便以后可以使用 mpi_gatherv。对吗?
-
你真的试过了吗?你在挣扎什么?我们不会为您编写整个代码。此外,链接页面包含详细示例。
-
@ctnguyen,是的,没有魔法,如果只有每个单独的进程知道大小,那么在调用
gatherv之前必须传递该信息(例如在大小上使用gather) .您可以从一个集中点了解这些信息。我鼓励您在问题中添加一些代码,以提高获得帮助的机会。 -
@alfC 谢谢你的回答。我现在完全清楚了,这个例子我很成功。我感谢您的支持。 PS:这是我使用 MPI 的第一天,所以我的问题似乎很愚蠢,对此感到抱歉,再次感谢您的帮助。
标签: vector fortran concatenation mpi