问题标签 [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 投票
1 回答
2760 浏览

raspberry-pi - 将 MPI 与两个 RaspberryPi 一起使用

我正在尝试为我正在从事的项目制作“双核”RaspberryPi。我遵循了 Simon Cox 的本教程。不幸的是,我无法让两个 RasPi 互相交谈。(这是使用 Hydra 作为流程管理器)

在仔细查看 MPICH 安装程序指南(可以在此处找到)后,我尝试使用 -phrase 来传递我创建的密码。但是我找不到它作为 hydra 命令的一部分。所以我重新安装了 smpd 并经过多次编译尝试。我配置了:

/configure -prefix=/home/pi/mpich-install --with-pm=smpd --with-pmi=smpd

我还必须安装 libbsl-dev 才能获得 smpd 所需的 MD5。我还导出了命令 mpiexec 和 mpicc 所在的路径。设置密码后,我将图像复制到第二张 SD 卡并放入第二张 RasPi。然后我使用 ssh-keygen 设置密码。

我能够分别在主 Pi 和从 Pi 上运行 cpi 程序,但是当我尝试同时在两者上运行多个进程时出现错误

Fatal error in MPI_Init: Other MPI error, error stack: MPIR_Init``_thread(392).................: MPID_Init(139)........................: channel initialization failed MPIDI_CH3_Init(38)....................: MPID_nem_init(196)....................: MPIDI_CH3I_Seg_commit(366)............: MPIU_SHMW_Hnd_deserialize(324)........: MPIU_SHMW_Seg_open(863)...............: MPIU_SHMW_Seg_create_attach_templ(637): open failed - No such file or directory

有人可以建议我如何解决这个问题或让 RaspberryPis 使用 MPICH 进行通信吗?

谢谢 E.Lee

0 投票
1 回答
897 浏览

mpi - Are OpenMPI and MPICH2 compatible?

I'm using OS X and Bash. I am trying to run a program across two systems, and the host has OpenMPI 1.6.4 and the other node has MPICH2. I am running into problems, and this is my first time using any kind of MPI implementation, so I don't know if I am just doing it wrong, or it is impossible/a lot more difficult to get it to run when they are using different MPI software.

Thanks for any insight you guys have.

0 投票
1 回答
1091 浏览

android - 为 Android NDK 交叉编译 MPICH 库

我的目标是在 Android 手机上运行 MPICH。我正在使用 Debian Jessie。我认为我会在本教程之后实现这一点:http: //hex.ro/wp/projects/personal-cloud-computing/compiling-mpich2-for-android-and-running-on-two-phones/ 但相反使用 Buildroot 创建工具链我决定从 Android NDK 创建它,如在此站点上: http ://www.threadstates.com/articles/2013/setting-up-an-android-cross-compiling-environment-with-the -ndk.html 我尝试使用 MPICH 库版本 2.1.4、2.1.5、3.0.4 并使用命令对其进行配置:

但我仍然有这种错误:

配置:错误:SMPD 需要 MD5 支持,并且配置无法在 md5.h 中找到 md5_calc 或在 openssl/md5.h 中找到 MD5

我发现它与 openssl 版本相关联,我尝试按照以下说明进行操作:

下载、编译、修改并安装 OpenSSL 到 NDK 目录。cd ~ wget www.openssl.org/source/openssl-1.0.0g.tar.gz tar xvzf

openssl-1.0.0g.tar.gz cd openssl-1.0.0g ./config no-asm shared --prefix=$ANDROID_ROOT/platforms/android-3/arch-arm/usr

编辑 Makefile:
CC= arm-linux-gnueabi-gcc-4.6

CFLAG= -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_N -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -fPIC

DEPFLAG= -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_R C5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE

PEX_LIBS=

EX_LIBS= -ldl

EXE_EXT=

ARFLAGS=

AR= arm-linux-gnueabi-ar $(ARFLAGS) r

RANLIB=arm-linux-gnueabi-ranlib

NM= arm-linux-gnueabi-nm

PERL= /usr/bin/perl

焦油=焦油

TARFLAGS= --无递归

MAKEDEPPROG= gcc

LIBDIR=lib

而不是 HIPL,我尝试以类似的方式交叉编译 MPICH,如下所示

下载并交叉编译 HIPL。cd ~ bzr co lp:hipl trunk cd trunk edit configure.ac 并注释掉所有 AM_CFLAGS autoreconf --install

./configure --disable-gcc-warn --disable-firewall -host=arm-linux

CC=arm-linux-gnueabi-gcc-4.6

CPPFLAGS="-I$ANDROID_ROOT/platforms/android-3/arch-arm/usr/include"

CFLAGS="-nostdlib"

LDFLAGS="-Wl,-rpath-link=$ANDROID_ROOT/platforms/android-3/arch-arm/usr/lib,-L$ANDROID_ROOT/platforms/android-3/arch-arm/usr/lib"

LIBS="-lc" make make all-am make[1]: 进入目录`/home/mkomu/projects/hipl-bzr/arm' CC lib/core/builder.lo 文件中

包含在 lib/core/debug.h:34:0 中,

lib/core/protodefs.h:929:5:错误:未知类型名称“in_port_t”

lib/core/protodefs.h:1027:5:错误:未知类型名称“in_port_t”

lib/core/protodefs.h:1036:5:错误:未知类型名称“in_port_t”

lib/core/protodefs.h:1043:5:错误:未知类型名称“in_port_t”

lib/core/protodefs.h:1054:5:错误:未知类型名称“in_port_t”

lib/core/protodefs.h:1055:5:错误:未知类型名称'in_port_t' ...

它来自站点:bugs.launchpad.net/hipl/+bug/715126

但我和那里的人有同样的错误..

make[8]: Wejście do katalogu `/home/cerbia/old/mpich2-1.3.2/src/mpid/ch3/channels/nemesis/nemesis/netmod/tcp' CC tcp_finalize.c 在 tcp_finalize.c 包含的文件中: 7:0: tcp_impl.h:108:89: 错误: 未知类型名称 'in_port_t' make[8]: * [tcp_finalize.o] Błąd 1

你有什么建议我应该尝试让它工作吗?

0 投票
1 回答
1477 浏览

parallel-processing - 无法使用 mpicc 编译 pmandel.c

我已经在我的 linux 机器(CentOS 6.4)上安装了 MPICH(ver 3.0.4)来进行一些并行计算。我尝试编译“pmandel.c”(以 MPICH 安装包为例)以使用以下命令测试我的 MPICH 安装:

但它返回这些错误:

并且没有输出。我也试过“mpic++”、“mpiCC”、mpicxx”……但都无济于事。

我应该怎么做才能纠正这个?

0 投票
1 回答
995 浏览

mpi - 找不到 mpd.conf 文件

我已经在 RHEL 上安装了 MPICH2 1.4 版本。每当我尝试运行程序时,它都会引发以下错误

找不到 mpd.conf 文件

如何解决这个问题。?

0 投票
5 回答
46396 浏览

mpi - 如何查看 MPICH 的版本?

如问题所述,列出当前 MPICH 版本的命令是什么?我正在运行 CentOS。

0 投票
2 回答
697 浏览

mpi - 跟踪 MPI_Reduce

所以我很确定这是不可能的,但我想我还是会问。

与 MPICH 合作。我想使用用户定义的归约操作对派生结构类型执行一些归约。出于我的目的,我需要确切地知道 MPI_Reduce 内部发生了什么,即 Send/Recv 调用的顺序以及哪些信息在哪里传递。

现在,根据代码,MPI_Reduce 的 MPICH2 实现总是对用户定义的操作使用二叉树算法,所以如果真的按下,我总是可以重建发生了什么,但我想知道是否有更好的方法。

0 投票
1 回答
2562 浏览

fortran - mpich2 中的 mpi_waitall 与 array_of_requests 中的空值

MPICH-2.1.5 和 PGI 编译器出现以下错误;

在以下基于模板的算法的示例 Fortran 代码中,

array_of_requestin mpi_waitall 获得空值 ( request(i)=0) 时会发生错误。不满足array_of_request条件时出现空值。iflag(i)=1直接的解决方案是注释掉条件,但这会引入发送和接收大小为 0 的消息的开销,这对于大型系统(1000 个内核)是不可行的。

根据MPI 论坛链接,该array_of_requests列表可能包含空句柄或非活动句柄。

我试过以下,

  1. 不初始化array_of_requests
  2. 调整大小array_of_request以匹配MPI_isend + MPI_irecv计数,
  3. 将虚拟值分配给array_of_request
  4. 我还使用 MPICH-1 以及 OpenMPI 1.4 测试了相同的代码,并且代码可以正常工作。

任何见解将不胜感激!

0 投票
1 回答
1864 浏览

c++ - pmpi_gather 中的致命错误

所以我有一个我正在编写的光线追踪器,它编译得很好,但是当我进入 MPI_Gather() 函数时,我得到了这个错误集。如果我写入文件,整个事情就可以完成,但是我不能在分布式计算系统上运行它。

我不确定这个错误是什么意思,所以很难绕过它。

这是主要功能的来源:

编辑:

我已经解决了这个问题并在下面发布了更新的代码:

0 投票
1 回答
294 浏览

mpi - 将 mpiexec/mpirun 与静态二进制文件一起发送

我有一个使用 MPI 的并行代码。使用此代码的正确方法是从 PC/Cluster 上的源代码编译,然后运行为:

不幸的是,有些使用此代码的人受到 *nix 挑战,他们发现从源代码构建有点令人生畏(不要问为什么)。这些用户只在自己的台式机/笔记本电脑上使用代码。

对于这样的用户,我只需编译一个静态二进制文件(在一个足够老的操作系统上使用足够老的 glibc,它可以在大多数运行 Linux 的 PC 上运行)。然后用户可以按如下方式运行代码:

所以现在我的问题是,我怎样才能将 mpiexec/mpirun 与我的静态二进制文件一起发布,以便用户可以执行以下操作:

这样,他们还可以利用桌面上的多个内核。到目前为止,我一直在告诉他们做正确的事情,即安装 MPI 并从源代码编译我的代码。

通过进行一些测试,我发现如果我编译 hydra 并mpiexec.hydra一起 发布,hydra_pmi_proxy那么我可以按如下方式运行代码:

但我不确定这是否是正确的方法?这会导致任何问题吗?我正在考虑为 Windoze 二进制文件(在 Cygwin 中运行)做同样的事情。

另一种选择是预先构建所有内容的 VBox 图像,但下载大文件成为问题。