问题标签 [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.
mpi - 热插拔 OpenMPI 集群中的附加节点
是否可以将附加节点(主机)热插入到工作的 OpenMPI 应用程序中?我们谈论的是生产环境,我们甚至无法承受 5 秒的停机时间。我感兴趣的场景有两种:
- 我们只是想通过增加一个广播监听器来增强计算能力。
- 一个节点死了,主节点很好地处理它并将任务重新分配给其他人。系统管理员进来,重新启动死节点并将其重新插入集群。
哪种平台独立的 MPI 实现最适合上述场景?OpenMPI 在这里不是必须的。
security - MPI 实现(OpenMPI、MPICH)如何处理安全/身份验证
当我通过 TCP/IP 套接字在进程之间发送 MPI 消息时,OpenMPI 和 MPICH 如何处理安全性?
特别是,它们如何防止同一网络的其他用户连接到侦听套接字并发送虚假 MPI 消息?
具体场景如下:
- 管理员值得信赖。不受信任的用户没有对任何硬件或网络的物理访问权限。不受信任的用户没有 root 访问权限。
- 但是,不受信任的用户可以在集群中运行自己的程序;集群节点是典型的 Linux 机器。特别是,不受信任的用户可以打开从任何机器到集群中任何其他机器的 TCP 连接并发送任意消息。
ssh - 配置 MPI 主机文件以使用多个用户身份
我想在不同的机器集(所有具有 Open Mpi 1.5 的 linux 机器)上运行带有 mpirun 的程序。
现在我有可以登录username A
的机器,还有另一组使用username B
. 所有机器都可以通过 ssh 访问,但我不知道如何实现这一点。
我的主机文件将是这样的:
有没有可能做到这一点。谢谢你。
boost - 使用 openmpi* 构建 Boost 1.46.1?
我想用 gcc 4.5.2 在 Ubuntu 11.04 上构建所有的Boost库。所以我开始下载 tar.bz2 文件。我扩展了它。我运行 bootstrap.sh 并注意到它抱怨 unicode,所以我安装了:
sudo apt-get install libicu-dev
现在它似乎正在愉快地使用 unicode 构建。问题是我还想链接到 OpenMPI。哦哦。所以我添加using mpi ;
并./tools/build/v2/user-config.jam
运行了我的构建命令:
./bjam --layout=versioned --build-type=complete
并且 boost 打印出错误(我已经缩写了大段):
...然后几页...
...然后再多几页...
这似乎是一个可以追溯到 Boost 1.40的错误??但我知道其他人已经让这个工作。有谁知道让 Boost 1.46.1 与 openmpi 配合得很好所需的巫术?
注意:我一直在谷歌搜索,这似乎不是 Ubuntu 特有的问题——它出现在gentoo和其他地方。但是除了没有 mpi 的构建之外,我还没有找到任何具体的解决方案......我不能。
我很乐意发布整个日志、包版本等。
c - OpenMPI 1.4.3 mpirun 主机文件错误
我正在尝试在 4 个节点上运行一个简单的 MPI 程序。我正在使用在 Centos 5.5 上运行的 OpenMPI 1.4.3。当我使用主机文件/机器文件提交 MPIRUN 命令时,我没有得到任何输出,收到一个空白屏幕。因此,我必须杀死这份工作。.
我使用以下运行命令::mpirun --hostfile hostfile -np 4 new46
这是我试图在 4 个节点上执行的 MPI 程序
我的主机文件如下所示:
我在每个节点上独立运行了上述 MPI 程序,它编译并运行得很好。当我使用主机文件时,我遇到了“启动时守护程序没有报告”的问题。我试图找出可能是什么问题。
谢谢!
c++ - 具有线程支持和 Bcast 调用的 MPI
我想知道是否在您指定有线程支持的 MPI 程序中,所有线程都进行 MPI::Bcast 调用(确保在调用中,发送方进程仅拥有一个线程),这是否被所有其他线程还是每个进程的一个线程(最快)?
c++ - 在 openMPI、C++ 中发送 ImageMagick 对象
我的项目有一个严重的问题。我需要将图像数据发送到集群中的另一个节点。我用 ImageMagick 读取图像,如下所示:
我将其发送为:
其他节点应该接收它:
但我得到一个分段错误:
任何人都可以提供帮助吗?我几乎感到沮丧!
mpi - OpenMPI 中的动态节点
在 MPI 中,是否可以在启动后添加新节点?例如,我有 2 台计算机已经在运行并行 MPI 应用程序。我在第三台计算机上启动此应用程序的另一个实例并将其添加到现有的通信器中。所有计算机都在本地网络中。
macos - 在 OS X 中使用 Valgrind 和抑制进行 OpenMPI 调试
我正在我的 OS X (Snow Leopard) 笔记本电脑上用 C++ 编写并行代码,并尝试使用 memchecker 对其进行调试。我已经成功构建了具有 valgrind 支持的 OpenMPI:(configure --prefix=/opt/openmpi-1.4.3/ --enable-debug --enable-memchecker --with-valgrind=/opt/valgrind-3.6.0/ FFLAGS=-m64 F90FLAGS=-m64
忽略 Fortran 标志,这是因为我的 Fortran 编译器来自 GCC)。
当我运行我的应用程序时
mpirun -np 2 valgrind --suppressions=/opt/openmpi-1.4.3/share/openmpi/openmpi-valgrind.supp --leak-check=yes --dsymutil=yes ./program
我从 Valgrind 收到了很多警告(其中大部分来自最后的堆摘要)。我在下面包含了一小段警告。我从他们那里得到的是 Valgrind 检测到 MPI 库中的内存泄漏和未初始化的值,但我对此并不感兴趣。我想从我写的代码中得到警告。我已经使用 OpenMPI 提供的抑制文件运行 Valgrind,但显然这还不够。如何轻松忽略 OpenMPI 分发中检测到的所有其他警告?是否可以在 OS X 上使用 Valgrind 找到用于 OpenMPI 调试的抑制文件,或者您知道任何狡猾的技巧吗?
第一个警告是
执行后堆摘要的一小段看起来像这样
...
c++ - openMPI 数据类型可移植性
从 v1.1 开始,Open MPI 要求 C、C++ 和 Fortran 数据类型的大小在单个并行应用程序内的所有平台上都相同,但 MPI_BOOL 和 MPI_LOGICAL 表示的类型除外——这些类型在进程之间的大小差异得到妥善处理。单个 MPI 作业中进程之间的字节序差异会得到正确且自动的处理。
在 v1.1 之前,Open MPI 不包括对数据大小或字节序异质性的任何支持。
这是否意味着 MPI_UNSIGNED_LONG 在所有主机上必须是 32 位或在所有主机上必须是 64 位?我的集群由 32 位和 64 位 Linux 服务器组成。确保所有主机大小相同long
的最佳方法是什么?unsigned long
也许我应该只使用int
和'long long'?在所有主机上分别是 32 位和 64 位。只要不使用,数据大小不一致是否可以?
谢谢你。