问题标签 [mpich]

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 投票
0 回答
280 浏览

mpi - 在具有多个网卡的服务器上使用 mpich2 (hydra, tcp/ip)

我想在三台服务器的异常网络配置上使用 MPICH2 MPI 库:

只有 eth0-eth5 对;eth1-eth2;eth3-eth4 已连接。在每一对中都有一个不同的 ip 子网。

我可以用 nemesis & tcp 设置 MPICH2 吗?PM 是 hydra 使用这样的网络配置吗?

请注意,我无法在 server1 上的 eth0 和 eth1 之间或 server2 上的 eth2 和 eth3 之间设置桥接网络;这是我的 eth 驱动程序的限制。

0 投票
2 回答
472 浏览

tcp - MPI程序使用的tcp连接数(MPICH2+nemesis+tcp)

如果使用的 MPI 是 MPICH2,MPI 程序将使用多少 tcp 连接来发送数据?如果您也了解 pmi 连接,请分别计算它们。

例如,如果我有 4 个进程和另外 2 个通信器(COMM1 用于第 1 和第 2 进程,COMM2 用于第 3 和第 4 进程);数据在每对可能的进程之间发送;在每一个可能的传播者中。

我使用最近的 MPICH2 + hydra + 默认 pmi。操作系统是linux,网络是交换以太网。每个进程都在单独的 PC 上。

所以,这里是数据的路径(成对的进程):

我认为可以有

  • 情况1:

只会使用 6 个 tcp 连接;在 COMM1 和 MPI_COMM_WORLD 中发送的数据将混合在单个 tcp 连接中。

  • 案例二:

8 个 tcp 连接:MPI_COMM_WORLD 中的 6 个(全对所有 = 全网格)+ 1 <-> 2COMM1 中的 1 个 + 3 <-> 4COMM2中的 1 个

  • 我没有想到的其他变体。
0 投票
2 回答
3573 浏览

linux - ifort mpi-openmp 分段错误

我有一个混合 mpi-openmp 代码,该代码因分段错误、终止错误而崩溃。我使用 mpif90/ifort 编译,并使用 mpich2。这是我使用并得到错误的编译行:

使用此命令时,如果我从一个节点运行,指向包含不同节点的机器文件,则会出现分段错误:

但是,如果我从特定节点(比如 node1)运行它并且机器文件中只有“node1”,那么它会按预期运行,每个节点使用正确数量的线程(比如“node1”是否在机器中列出了两次文件和 mpiexec 命令就像“mpiexec -np 2 ...”)。

我尝试的第二件事不是链接“-openmp”,而是链接“-liomp5”。当我这样做时,代码编译并运行,甚至跨节点。但是,它不会以任何线程方式运行。“omp_get_num_threads”将为每个节点返回 8 个线程(这是正确的),但它只会在机器文件中列出的每个节点运行一个线程,因此不执行任何实际线程。

如前所述,我正在使用最新的 ifort 编译器 (12.1.2) 和 mpich2。堆栈大小是无限的,通过“ulimit -a”验证并将其视为无限。

laplace.f 文件的源代码如下:

运行编译中链接的 -liomp5 时,可以看到:

使用 nthrds = 8 执行,通过打印语句验证,但是当立即通过以下方式检查时:

结果 nthreads = 1。但是,如果在编译时链接 -openmp 时完成(机器文件中的所有相同节点,从同一节点开始运行),nthreads = 8。

如果我先在机器文件中指定头节点名称更长的时间,说:

很多信息,但希望不要太多。谢谢你的帮助。

0 投票
1 回答
603 浏览

mpi - 发送 INT 时 MPICH2 内存不足

我整个星期都在努力尝试获得一个 3 机器集群运行扭矩 + mpich2。我的计划是将它用作我的开发环境,并最终在 EC2 或其他一些云中运行生产代码。由于它是一个开发环境,我只是使用一些备用机器(2 64 位,1 32 位以防万一)。这些机器正在使用 Ubuntu 的各种发行版(特立独行、哈迪和业力)。

我遇到的问题是,在一个简单的发送/接收测试程序上,我进行的接收调用似乎内存不足,我不知道为什么。机器上有大约 1.2G 的 RAM 可用,其中 1 个 int 正在发送/接收。

继承人的代码:

这是输出:

如果有任何我没有包含的必要信息,请告诉我,我会添加它。

MPICH2 版本:mpich2-1.4.1p1 从每台机器上的源代码编译
gcc 版本:
master:4.2.4
node1:4.4.5
node2:4.4.1

此外,如果它很重要,node2 是 32 位机器。提前感谢您的帮助。

编辑:我在我过去使用过的集群上运行它,该集群已设置并已知工作以测试代码。该代码似乎可以正常工作,我相信我看到的问题与我的开发集群上的 MPI 配置有关。

0 投票
2 回答
5785 浏览

c - MPI 发送数组数组

好的,所以我试图通过 MPI 发送这样的结构

如果我只是像这样对数据进行一些 BS 分配

而且我假设它不会很好地工作,因为如果我按原样发送这个结构,它只会发送 B 中的指针,并且该指针不指向另一个处理器上的任何内容,那么我将如何发送数据,例如这在 MPI 中。

0 投票
1 回答
291 浏览

c++ - 将启用 MPICH2 的代码转换为 OpenCL 代码

我有一个用 C++ 编写的实用程序并使用 MPICH2,它进行了一些繁重的计算,我对它的性能不满意,并且有很多改进的范围。

首先,MPICH2 仅使用 exes,因此我必须将数据写入文件并将该文件作为参数传递给该实用程序,该实用程序再次读取所有数据并将输出写回文件。如果我可以在 dll 中使用它,我可以节省大量传递数据的时间。此外,如果我能以某种方式在 GPU 上运行它,这将带来提升(不太确定)。

我想知道将实用程序代码转换为 OpenCL 需要多少努力,或者是否有任何工具可以完成 60-70% 的转换任务。

0 投票
3 回答
3267 浏览

c++ - 使用 Boost.MPI 库的目的是什么?

使用 Boost.MPI 库的目的是什么?它会提高性能吗?它和 MPICH 库有什么区别?

0 投票
1 回答
81 浏览

mpi - 使用 MPICH 静态编译的程序会遇到不同版本的运行时问题?

我还没有详细了解 MPI 的实现,但我被要求设置一个第三方软件,该软件与 MPICH2 的 1.4.1pl 版本静态链接,其环境运行 MPICH2 运行时版本为 1.2.1。

我应该期待问题吗?

0 投票
0 回答
861 浏览

c - MPI在集群上的简单测试程序

每个线程读取一个文件的一部分并将其写下来。

在本地机器上工作得很好(mpich)在集群上出错(openmpi)

我的程序在函数 write_result 中的 close(fd) 处终止。

这是错误消息

在搜索了相关问题后,我猜测问题可能来自文件打开和关闭过程。由一个特定线程打开的文件应该由同一个线程关闭。也许 openmpi 无法识别哪个线程打开了它,哪个线程关闭了它。但它在 MPICH 上运行良好。

0 投票
1 回答
1237 浏览

mpi - 为 MPICH 配置 valgrind:使用了错误的 libmpi*.so 文件

运行 valgrind 以检测 mpi 应用程序中的错误时,我收到以下错误:

我发现了以下内容: Valgrind 文档(第 4.9.1 节)指出“假定要包装的 MPI 函数位于与 soname 匹配 libmpi.so* 的 ELF 共享对象中。这至少对于 Open 来说是正确的MPI 和 Quadrics MPI,可以根据需要轻松更改。”

因此,由于我使用的是 mpich2,它实际上应该使用 libmpich.so.1.0。

这可以在 libmpiwrap.c 中看到:

我的问题是:我在哪里以及如何配置它?