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

linux - Perl:如何添加一个中断处理程序,以便可以通过 system() 控制 mpirun 执行的代码?

我们使用带有Perceus (warewulf) 软件的集群来进行一些计算。该软件包具有wwmpirun准备主机文件并执行的程序(Perl 脚本)mpirun

我们使用此脚本在多个节点上运行数学程序 (CODE),通常应该通过 Ctrl+C 停止 CODE,并提供一个带有选项的简短菜单:状态、停止和暂停。但是,使用 MPI 运行时,按 Ctrl+C 会严重杀死 CODE 并丢失数据。

CODE 的开发人员提出了一种解决方法 - 可以通过创建一个名为 的文件来停止程序stop%s,其中%s是 CODE 正在执行的任务文件的名称。这允许停止,但我们无法获得计算状态。有时需要很长时间才能恢复此功能,我们将不胜感激。

您怎么看 - 问题出在 CODE 还是mpirun

有人能找到一种与 CODE 执行的通信的方法mpirun吗?

更新1

在单次运行中,通过按 Ctrl+C 并status通过输入在提供的菜单中选择选项来获取计算状态s。CODE 在 STDOUT 中打印状态信息并继续进行计算。

0 投票
1 回答
1417 浏览

c - 使用 openmpi 初始化数组一次

我正在尝试通过跨节点拆分工作(第二部分是矩阵)来使用 OPENmpi 处理数组中的数据来运行一些测试。我现在遇到了一些问题,因为每次都在初始化数据数组,我不知道如何防止这种情况发生。

如何使用 ANSI C 创建一个可变长度数组,使用 OPENmpi 一次?我尝试使它成为静态和全局的,但没有。

0 投票
1 回答
1493 浏览

c++ - 将 OpenMPI 或 MPICH 与 Boost MPI 一起使用 Win 和 Linux 机器

这些天我正在接近 MPI 世界。我愿意将 Boost MPI 库与 OpenMPI 或 MPICH 一起使用(即使使用 MPICH,由于我读过一些帖子,我仍然不确定它是否能正常工作)。

我真正的问题是:在这两个库和 Boost MPI 之上,是否可以结合 Linux 机器和 Windows 机器的资源?

我还不清楚使用 MPI 是否意味着能够在具有相同操作系统的远程机器上启动进程。原则上 MPI 是一个通信协议之上的消息传递系统,因此在通信时对操作系统没有太大的依赖性。

您是否对这个主题有所了解,或者你们中的一些人已经尝试在 Win 和 Linux 机器上使用 MPI?

谢谢 EO

0 投票
1 回答
1939 浏览

numpy - 多核 ATLAS 线性代数和 openmpi 与 python

我在多 CPU/核心机器上使用mpi4py和 openmpi 来做线性代数。我的 numpy 是使用ATLAS构建的。假设我有一台 4 核机器,我想运行一个 4 节点 python 脚本,它使用 numpy 在每个节点上执行线性代数。

如何确保 ATLAS 在每个节点中进行线性代数时不使用多个内核?当我构建 ATLAS 时,似乎没有选择将其配置为一次仅在一个内核上运行。使用 Intel MKL,我认为您可以设置 OMP_NUM_THREADS=1,并且这种行为是有保证的。有没有办法为此目的构建 ATLAS?似乎没有等效的环境变量。

我猜想在多核 CPU 的每个核心上同时运行多个 BLAS 操作并不是一个好策略。任何人都可以对此发表评论或给出经验法则,这是一个好主意还是坏主意?

0 投票
4 回答
11686 浏览

macos - 为什么我所有的 Open MPI 进程的 Rank 为 0?

正在使用Open MPI. 我正在运行 Snow Leopard 10.6.4,并Open MPI通过自制软件包管理器进行安装。

当我使用 运行我的程序时mpirun -np 8 ./test,每个进程都报告它的等级为 0,并且认为进程总数为 1,并且process rank: 0, total processes: 1向控制台输出了 8 行。

我知道这不是代码问题,因为完全相同的代码将在我大学计算机实验室的某些 Ubuntu 机器上按预期编译和运行。我检查了自制软件的错误跟踪器,没有人报告 Open MPI 包有问题。我不知所措。

0 投票
2 回答
1700 浏览

openmp - 什么更容易学习和调试 OpenMP 或 MPI?

我有一个处理数字的 C/C++ 应用程序。它基本上是不同数据集的主循环。我们可以访问具有可用 openmp 和 mpi 的 100 节点集群。我想加快应用程序的速度,但我是 mpi 和 openmp 的绝对新手。我只是想知道即使性能不是最好的,什么是最容易学习和调试的。

我也想知道什么是最适合我的主循环应用程序的。

谢谢

0 投票
2 回答
1324 浏览

cluster-computing - Open MPI/MPICH - 如果节点终止会发生什么?

我想知道如果 OpenMPI/MPICH2 集群的一个节点终止会发生什么?是否有某种机制可以容忍这种情况并继续执行?

感谢您的回答海因里希

0 投票
1 回答
2740 浏览

mpi - 远程节点上的 mpi_comm_spawn

如何使用 MPI_Comm_spawn 在远程节点上启动工作进程?

使用 OpenMPI 1.4.3,我试过这段代码:

但这会失败并显示此错误消息:

如果我用本地机器的名称替换“node2”,那么它工作正常。如果我 ssh 进入 node2 并在那里运行相同的东西(在信息字典中使用“node2”),那么它也可以正常工作。

我不想用 mpirun 启动父进程,所以我只是在寻找一种在远程节点上动态生成进程的方法。这可能吗?

0 投票
1 回答
1263 浏览

c++ - 在 MPI_Send / MPI_Recv 对中,如果未正确同步,数据会丢失吗?

让我解释。考虑 4 个从节点 1、2、3、4 和一个主节点 0。现在,1、2、3、4 需要向 0 发送数据。0 以以下格式接收此数据。

显然,不能假设 1、2、3 和 4 将数据发送到 0 的顺序(因为它们都彼此独立运行——2 可能在 1 之前发送数据)。因此,假设 2 确实在 1 之前发送了它的数据(例如),在 MPI_Recv 命令中的源标签“proc”与处理器“1”匹配之前,上面显示的 0 中的接收循环不会启动,因为外部 for 循环强制这个排序。

因此,即使已经有来自 2、3 和 4 的数据,循环也会“等待”直到有数据从 1 传入,然后才能执行任何其他操作。如果从 2,3 和 4 传来的数据会发生什么情况在 1 点之前到达?从某种意义上说,一旦来自“1”的数据确实开始到达然后 proc 增加到 2,那么它最初试图从 2 接收的数据就不再存在了,它是否可以被“遗忘”?如果它被“遗忘”,整个分布式模拟就会挂起,因为它永远无法正确处理特定从属进程的数据。

谢谢,本。

0 投票
2 回答
6081 浏览

c - 用于分布式内存集群的 OpenMP 或 MPI 或 OpenMPI?

我想在 100 节点分布式内存集群中并行化 C 串行代码。该集群由 25 个刀片组成,每个刀片由 infiniband 提供 4 个内核。在我刚刚使用 PBS 在不同节点之间传播程序的几个串行运行之前。现在我想知道:

  1. 在这种情况下,OpenMP 或 MPI 或 OpenMPI 的最佳选择是什么(目前我不想尝试混合方法,因为我开始学习)?
  2. 我在哪里可以找到示例/教程?
  3. 对于带有主 for 循环的简单串行代码,OpenMP/MPI/OpemMPI 总是可以比 PBS 等排队方法执行得更好吗?