问题标签 [openmpi]

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 回答
954 浏览

c++ - 从 C++ 调用 ScaLAPACK

嗨,任何人都可以为我提供一个从 C++ 调用 ScaLAPACK 的示例 Makefile,我遇到了困难。

我正确编译了最新版本,并通过了所有测试。我在 Fedora 上使用 GCC 和 OpenMPI 编译它,我还尝试使用存储库中的预构建二进制文件,但没有成功。

0 投票
1 回答
472 浏览

cuda - OpenMPI CUDA 和 CUDPP

我有 mpi 程序在集群上的几个进程之间分配大数组。

每个进程计算自己的数组元素总和并将结果返回给主机。

我想对每个进程的数组元素运行并行前缀扫描。

任何想法是否可以使用 CUDPP。?

有没有人一起使用过openmpi和cudpp?

0 投票
2 回答
1498 浏览

shared-libraries - 使用 mpicc 创建共享对象 - 似乎找不到 pthread 例程

我正在学习在 Linux 中创建共享库,随后开发并行科学计算程序。我从这里获取了共享库的玩具示例。我修改了这个问题的 Makefile以适应玩具示例。我的 Makefile 现在是

当我CC = gcc在 Makefile 中使用时,一切正常。即使使用 mpirun,我也可以运行二进制文件。

当我CC = mpicc在 Makefile 中时,我收到以下错误。

我将 libpthread.so、.a 的路径添加到 LD_LIBRARY_PATH,但无济于事。我有一个自编译的 openmpi-1.5.4。如果这是一个 openmpi 依赖项,那么我配置它时不应该已经解决了吗?

这个错误熟悉吗?我正在使用带有 gcc 4.5.2 的 Ubuntu 11.04。我已经成功构建并运行了一些 mpi 并行程序。但它们是配置了自动工具的大型软件包。config.log 之一显示相同的错误。但即使那个运行良好。

对使用 mpi 创建静态/共享库的参考/示例也将不胜感激(尽管 Openmpi 不鼓励完全静态库。)

非常感谢你,

艾伦。


0 投票
2 回答
3799 浏览

c - C、Open MPI:调用 MPI_Finalize() 的分段错误。段错误并不总是发生,尤其是在进程数量较少的情况下

我正在编写一个简单的代码来学习如何定义 MPI_Datatype 并将其与 MPI_Gatherv 结合使用。我想确保我可以在一个进程上组合可变长度、动态分配的结构化数据数组,这似乎工作正常,直到我调用 MPI_Finalize()。我已经确认这是通过使用打印语句和 Eclipse PTP 调试器(后端是 gdb-mi)开始出现问题的地方。我的主要问题是,我怎样才能摆脱分段错误?

每次运行代码时都不会发生段错误。例如,2 或 3 个进程不会发生这种情况,但当我使用大约 4 个或更多进程运行时往往会定期发生。

此外,当我使用 valgrind 运行此代码时,不会发生分段错误。但是,我确实收到了来自 valgrind 的错误消息,尽管当我使用 MPI 函数时输出对我来说很难理解,即使有大量的目标抑制也是如此。我还担心如果我使用更多的抑制,我会忽略一个有用的错误消息。

我使用这些标志编译正常代码,因此在这两种情况下我都使用 C99 标准:-ansi -pedantic -Wall -O2 -march=barcelona -fomit-frame-pointer -std=c99 和调试代码:-ansi -pedantic -std=c99 -Wall -g

两者都使用 gcc 4.4 mpicc 编译器,并在使用 Red Hat Linux 和 Open MPI v1.4.5 的集群上运行。如果我遗漏了其他重要信息,请告诉我。这是代码,在此先感谢:

0 投票
1 回答
1937 浏览

parallel-processing - MPI Internals:进程之间的通信实现

我试图弄清楚实际的进程通信是如何在 MPI 通信器内部发生的。我有 8 个节点,每个节点有 12 个核心(运行 96 个实例)。每个进程都分配了唯一的等级,并且进程能够相互通信。那么进程如何获得唯一的排名并设法发送实际消息呢?根据一些幻灯片,有开放运行时环境 (ORTE),它“位于在该单元上启动进程的机器上。(例如,集群的前端)。负责在单元上启动进程。监控单元健康(节点、进程)。将单元状态报告给宇宙的其余部分。在单元之间路由通信。” 我还没有找到任何 MPI 实现的开发人员文档和/或架构论文。任何人都知道如何实现 MPI 进程之间的实际通信,即他们如何设法找到自己并获得分配的等级?是否有一个中央或多个中央 MPI 内部流程用于路由(例如,每个节点)?

谢谢,大卫

0 投票
1 回答
1970 浏览

openmpi - Openmpi 编译错误:mpicxx.h“数字常量之前的预期标识符”

我正在尝试使用 openmpi 编译程序,但我的代码没有给出任何错误,而是 mpi 标头之一:

标题中的相关代码行简单地读取:

我正在使用 mpiCC 编译器。难道我做错了什么?或者这是openmpi中的错误?

提前致谢。

0 投票
1 回答
735 浏览

c - OpenMPI 节点和网络拓扑

我目前正在构建一个小型实用程序库,作为一个更大项目的一部分。OpenMPI 有一个有据可查的 API 库,但是当涉及到节点之间的较低级别的通信时,我有点困惑。我知道在编写你的算法时,你将它分布在所有预计进行计算的节点上,每个节点都与其余节点进行通信,根据它们的“全局”MPI 等级(如算法中定义)执行算法的一部分,以及所有节点来回同步。但是,我将 global 放在引号中的原因是,openMPI 是否在 ip 级别进行通信,因此说我已经有一个长时间执行的算法,但是如果我执行我的 MPI,有一个节点处于空闲状态,没有运行任何 MPI 进程算法,它会加入 MPI_COMM_WORLD 并成为整个网络拓扑的一部分,还是我需要做一些“巫术”来使该节点成为 MPI_COMM_WORLD 的一部分。另外,如果节点可以成为该特定算法的 MPI_COMM_WORLD 的一部分,我如何注册/识别这个新节点?

任何阅读参考资料也很有帮助。

非常感谢!

tl; dr MPI 节点是否可从 MPI_COMM_WORLD 热交换?

0 投票
2 回答
3546 浏览

openmp - OpenMP 与 OpenMPI

我有一个 MPI 应用程序,它当前有一个进程(称为它A),这会导致可伸缩性的严重问题。目前,所有其他进程都在MPI_Recv等待那个进程向它们发送信息。

由于我现在想以尽可能少的努力加快速度,因此我正在考虑使用 OpenMP 并行化进程A。这实用吗?

由于与共享一个节点的其他进程A都在一个中MPI_Recv,我可以利用该节点的所有资源来处理进程A,还是会MPI_Recv阻止这种情况?

使用 OpenMP 的另一个好处是内存可以共享,因为进程A需要很多时间。

顺便说一句,如果我的处理器在等待MPI_Send而不是等待,它会改变什么MPI_Recv吗?

0 投票
1 回答
1896 浏览

mpi - 收集 MPI_SCAN 的结果

我有这个数组 [1 2 3 4 5 6 7 8 9],我正在对其执行扫描操作。

我有 3 个 mpi 任务,每个任务都有 3 个元素,然后每个任务计算其扫描并将结果返回给主任务

现在任务 0 得到所有结果 [1 3 6] [4 9 15] [7 15 24]

我如何结合这些结果来产生最终的扫描输出?

数组的最终扫描输出为 [1 3 6 10 15 21 28 36 45]

谁能帮帮我?

0 投票
1 回答
1313 浏览

c - 如何终止已分叉另一个进程的 MPI 程序

我需要编写一个 MPI 程序,它只需要在不同的集群节点上启动几个进程。这是我的示例代码。

它成功启动进程,但 MPI 应用程序不会自行终止。即使在调用 MPI_Finalize() 之后它也会等待;。

这段代码有什么问题?我需要做什么才能让 MPI 程序启动一些其他应用程序,但不应该等待任何事情。

谢谢你,问候,机器人。