问题标签 [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.
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。这似乎有些约束。
谢谢,
mpi - boost.mpi 空向量消息
如果我在 Boost MPI 中发送一个空向量会发生什么?
例如,如果我使用以下代码发送:
这行得通吗?它会收到一个空向量并将其分配给other_vector
吗?
谢谢
c++ - 如何通过 Boost::MPI 发送 2d C 样式数组?
我double A[B_ROWS][B_COLUMNS];
在 C API 中使用过类似的东西:
和
现在使用 boost::mpi我尝试:
和
但我的应用程序不断失败,例如:
这意味着seg fault
,请注意原始 C 应用程序可以根据需要运行,而我目前更改的所有内容都是使用 api - 而不是任何逻辑。
那么通过 boost::mpi 发送 2d C 样式数组的正确方法是什么?
vector - 带有布尔值的 all_to_all 提升 mpi
我正在尝试使用 bool 向量进行全部操作,但出现编译器错误:
编译器抱怨最后 2 个参数(向量)“必须是左值或函数指示符”。
不知道为什么我会遇到这个问题。
mpi - 提升 mpi 等效于 status.MPI_SOURCE
是否有boost::MPI
等效于以下 C MPI 代码?我正在尝试移植以下标准 MPI 代码,这是在此处找到的基本主从模板。在 boost mpi 文档之后,只有 3 个参数,用于 mpi_send 或 mpi_recv 等级、标记和缓冲区。
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 时定义了宏并标记了类,但是我在任何地方都找不到关于构建应用程序时要做什么的信息,所以我想也许这就是我所缺少的。任何帮助将非常感激。
mpi - 提升 mpi 断言失败
我正在使用 boost-mpi,但我遇到了一个我很难弄清楚的错误。我正在使用 recv 调用,并且 boost 代码中的断言失败:
这来自位于 boost/mpi/detail/ 中的文件 binary_buffer_iprimitive.hpp。
这在我第一次收到时不会发生,所以我知道这不是我每次发送/接收调用的一般错误。我认为这个断言是检查缓冲区是否足够大以容纳正在接收的数据,但我什至不确定。如果是这种情况,什么会导致缓冲区不够大?难道不应该通过潜在的提升来解决这个问题吗?
mpi - 与 boost::mpi 发送/接收消息同步?
我用“-np 2”调用 mpirun。我将等级 0 的进程称为“主”,将等级 1 的进程称为“从”。
目标:
- master 偶尔会向 slave 发送消息,例如
mpi::send(1, UPDATE, data);
. 其他消息类型包括 DIE、COMPUTE ...等。这些消息类型是具有唯一值的常量整数。 - slave 运行一个无限循环,“监听”来自 master 的任何消息。当它收到一条消息时,它会向主设备发送一个确认。
执行:
从运行:
当主人运行时:
主代码的更多上下文:
输出:
...
奴隶准备接受命令
主发送更新
奴隶收到更新
从机发送 UPDATE_ACK
主控收到 UPDATE_ACK
奴隶准备接受命令
...
奴隶准备接受命令
主发送更新
奴隶收到更新
从机发送 UPDATE_ACK
奴隶准备接受命令
...
问题: 主人第一次发送更新消息时,一切似乎都很好。但是,在第二次中,主服务器没有收到 UPDATE_ACK。
boost - 如何解释 boost::mpi 的错误代码?
如何理解 boost::mpi 错误代码?例如,错误代码 834983239 是什么意思?
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 有一些不理解的地方
整个例外: