问题标签 [boost-mpi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
239 浏览

c++ - C++ MPI,使用多节点,先在节点级reduce,再reduce到头节点

我使用 12 个节点的 windows HPC 集群(每个都有 24 个内核)来运行 C++ MPI 程序(使用 Boost MPI)。一次运行 MPI 减少,一次注释掉 MPI 减少(仅用于速度测试)。运行时间为 01:17:23 和 01:03:49。在我看来,MPI 减少需要很大一部分时间。我认为可能值得尝试首先在节点级别减少,然后减少到头节点以提高性能。

下面是一个用于测试目的的简单示例。假设有 4 个计算机节点,每个节点有 2 个核心。我想首先在每个节点上使用 mpi 来减少。之后,减少到头节点。我对 mpi 不太熟悉,下面的程序崩溃了。

输出难以辨认,像这样

错误信息是

我怀疑我在分组拆分/或减少方面做错了,但通过几次试验无法弄清楚。我该如何改变才能使这项工作?谢谢。

0 投票
0 回答
22 浏览

mpi - 保留新组中的原始排名

创建新组后,最低等级 id 为零。我怎样才能保留原来的处理器等级?

0 投票
1 回答
67 浏览

c++ - 如何通过 Boost.MPI 发送 2d Boost.MultiArray 的子数组?

我需要使用 Boost.MPI 发送对 Boost.MultiArray 的 2d 子数组的引用。现在我有以下代码:

但我也有以下错误试图执行它:

谁能帮我把它发送到另一个进程?

0 投票
0 回答
52 浏览

c++ - mpi all_gatherv 奇怪的行为?

我正在尝试收集在不同进程上计算的 2 个矩阵,我正在使用 mpi allgatherv 函数来这样做,但我对结果感到惊讶。

在我正在处理的示例中,矩阵的形状是(20,80),我想将它们收集到一个具有(40,80)形状的矩阵中;由进程 0 计算的矩阵存储在前 20 行中。

这是我正在使用的代码示例(示例中的 nbRegimes 为 0):

例如,这是在进程 0 和进程 1 上计算的 phiOutLoc[iReg] 第一行的开头:

这些行应分别存储在 storeGlob 的索引 0 行和索引 20 行中;如果我正确理解了 all_gatherv 函数的行为。

但是 storeGlob 的索引 0 行看起来像这样:

和 storeGlob 的索引 20 行:

storeGlob 的索引 0 行由 phiOutLoc[iReg] 矩阵的第一行的偶数索引填充。奇数索引存储在索引 20 行中。

我真的不明白为什么会以这种方式进行。

这种行为是否正常,有没有办法按照我想要的方式收集两个矩阵?

0 投票
1 回答
25 浏览

c++ - 编译简单 boot_mpi 分散程序时出错:没有序列化元素

我目前正在评估一个简单的程序,该程序允许将行/字符串的数组/向量分散到多个进程中。我创建了一个无法编译的简单测试程序。我希望有人可以帮助我找到解决方案。这是程序:

我尝试了以下两个命令来编译它:

两者都会导致相同的错误,我在此处以缩短的版本给您(抱歉,德语):

我很确定我已经安装了所有必要的软件包,我还可以编译其他 boost mpi 程序,尤其是那些来自 boost mpi 教程/示例的程序。