问题标签 [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 回答
1802 浏览

ubuntu-12.04 - 在 Ubuntu 上使用 MPICH 和 Boost.MPI

我试图在 Ubuntu 12.04 下使用 boost.mpi。apt-get 将安装 openmpi,但我运行的其他一些软件(涉及扭矩)期望 mpich2/mpich,并抱怨

“mpdstartup:找不到命令”

我当然不想把软件改成使用 openmpi 并且担心软件升级时的迁移问题。

我的问题是,是否有一种用户友好的方式可以在 Ubuntu(12.04 LTS)中安装 boost.mpi + mpich2?(例如一个非官方的存储库)。在最坏的情况下,如果我必须从源代码构建 boost,当我升级到新的 boost 版本时,是否有一种用户友好的方式来卸载 boost 安装?我喜欢 apt-get 将安装文件和链接到知名位置并在被要求时进行干净删除的事实。

顺便说一句,我尝试过 apt-get 先安装 mpich2,然后再安装 libboost-mpi-dev,但是即使有一个有效的 mpi 实现,apt-get 仍然安装 openmpi。这似乎有些约束。

谢谢,

0 投票
1 回答
131 浏览

mpi - boost.mpi 空向量消息

如果我在 Boost MPI 中发送一个空向量会发生什么?

例如,如果我使用以下代码发送:

这行得通吗?它会收到一个空向量并将其分配给other_vector吗?

谢谢

0 投票
1 回答
408 浏览

c++ - 如何通过 Boost::MPI 发送 2d C 样式数组?

double A[B_ROWS][B_COLUMNS];在 C API 中使用过类似的东西:

现在使用 boost::mpi我尝试:

但我的应用程序不断失败,例如:

这意味着seg fault,请注意原始 C 应用程序可以根据需要运行,而我目前更改的所有内容都是使用 api - 而不是任何逻辑。

那么通过 boost::mpi 发送 2d C 样式数组的正确方法是什么?

0 投票
1 回答
99 浏览

vector - 带有布尔值的 all_to_all 提升 mpi

我正在尝试使用 bool 向量进行全部操作,但出现编译器错误:

编译器抱怨最后 2 个参数(向量)“必须是左值或函数指示符”。

不知道为什么我会遇到这个问题。

0 投票
1 回答
605 浏览

mpi - 提升 mpi 等效于 status.MPI_SOURCE

是否有boost::MPI等效于以下 C MPI 代码?我正在尝试移植以下标准 MPI 代码,这是在此处找到的基本主从模板。在 boost mpi 文档之后,只有 3 个参数,用于 mpi_send 或 mpi_recv 等级、标记和缓冲区。

0 投票
0 回答
95 浏览

boost-mpi - 在同类机器上提升 mpi

以前有没有人在 boost MPI 中成功使用过同类选项?在取消注释 boost mpi config.cpp 文件中的相应行并为我通过的几个类启用 BOOST_IS_BITWISE_SERIALIZABLE([classname]) 后,我构建了 boost mpi,但我发现性能没有变化,所以我不确定它是否是启用。

该文档说明了以下内容:

通过避免 MPI_Pack/MPI_Unpack 调用但使用直接按位复制,可以在同构机器上进行更多优化。在构建 Boost.MPI 和构建应用程序时,可以通过定义宏 BOOST_MPI_HOMOGENEOUS 来启用此功能。此外,所有类都需要标记为 is_mpi_datatype 和 is_bitwise_serializable,通过使用 Boost.Serialization 的帮助宏:

我在构建 boost 时定义了宏并标记了类,但是我在任何地方都找不到关于构建应用程序时要做什么的信息,所以我想也许这就是我所缺少的。任何帮助将非常感激。

0 投票
0 回答
215 浏览

mpi - 提升 mpi 断言失败

我正在使用 boost-mpi,但我遇到了一个我很难弄清楚的错误。我正在使用 recv 调用,并且 boost 代码中的断言失败:

这来自位于 boost/mpi/detail/ 中的文件 binary_buffer_iprimitive.hpp。

这在我第一次收到时不会发生,所以我知道这不是我每次发送/接收调用的一般错误。我认为这个断言是检查缓冲区是否足够大以容纳正在接收的数据,但我什至不确定。如果是这种情况,什么会导致缓冲区不够大?难道不应该通过潜在的提升来解决这个问题吗?

0 投票
0 回答
419 浏览

mpi - 与 boost::mpi 发送/接收消息同步?

我用“-np 2”调用 mpirun。我将等级 0 的进程称为“主”,将等级 1 的进程称为“从”。

目标:

  1. master 偶尔会向 slave 发送消息,例如mpi::send(1, UPDATE, data);. 其他消息类型包括 DIE、COMPUTE ...等。这些消息类型是具有唯一值的常量整数。
  2. slave 运行一个无限循环,“监听”来自 master 的任何消息。当它收到一条消息时,它会向主设备发送一个确认。

执行:

从运行:

当主人运行时:

主代码的更多上下文:

输出:

...

奴隶准备接受命令

主发送更新

奴隶收到更新

从机发送 UPDATE_ACK

主控收到 UPDATE_ACK

奴隶准备接受命令

...

奴隶准备接受命令

主发送更新

奴隶收到更新

从机发送 UPDATE_ACK

奴隶准备接受命令

...

问题: 主人第一次发送更新消息时,一切似乎都很好。但是,在第二次中,主服务器没有收到 UPDATE_ACK。

0 投票
1 回答
135 浏览

boost - 如何解释 boost::mpi 的错误代码?

如何理解 boost::mpi 错误代码?例如,错误代码 834983239 是什么意思?

0 投票
0 回答
491 浏览

boost - MPIrun 用简单的代码崩溃

我正在尝试生成使用 MPI 的代码,其行为与具有依赖关系的程序大致相似。如果我使用多个处理器(例如 mpirun -np X),其中 X 大于我尝试建模的任务数(例如我的 switch 语句中的案例数),一切都会正常工作。我的程序模型有一个任务列表,每个任务的执行时间,以及一组任务之间的依赖关系。我生成的 MPI 代码看起来像这样(一个真实的案例会有 50 到 600 个任务,例如案例):

我可以很好地编译g++ -L/usr/local/lib -lmpi -lmpi_cxx -lboost_serialization -lboost_mpi test.cpp它并使用它运行它mpirun -np 4 a.out

但是,当遇到超出处理器数量的情况时,我总是会遇到异常,例如

请注意,将处理器数量从 2 个增加到 3 个可以让我成功执行一个案例。我在想我对 MPI 有一些不理解的地方

整个例外: