mpirun mpd mpiexec
运行命令2:chmod 600 mpd.conf
在mpd.conf文件中输入以下文本内容并保存:
MPD_SECRETWORD=mr.chen
3.开启mpi服务器并且进行编译执行mpi文件
3.1 开启mpi环境:mpdboot
3.2 编译mpi文件(-o Hello 指定输出文件的名称):mpicc -o Hello Hello.c
3.3 执行生成的二进制文件(-np 4:表示用4个进程):mpirun -np 4 ./Hello
运行结果如下:
user@ubuntu:~/test_mpi_examples$ mpirun -np 4 ./Hello
Hello world! Processor 0 of 4 on ubuntu
Hello world! Processor 1 of 4 on ubuntu
Hello world! Processor 3 of 4 on ubuntu
Hello world! Processor 2 of 4 on ubuntu
4.关闭mpi服务器
运行命令:mpdcleanup
6 修改PATH环境变量
PATH="$PATH:/usr/local/mpich/bin"
7 测试环境变量设置
#which mpd
#which mpicc
#which mpiexec
#which mpirun
所有以上的命令都应该指向安装目录的bin子目录。此外,如果没有用NFS来共享安装目录,则需要将bin子目录拷贝到其他每台机器上。
8 修改/etc/mpd.conf文件,内容为secretword=myword
#vi /etc/mpd.conf
设置文件读取权限为只有自己能读写
#chmod 600 /etc/mpd.conf
非root用户在家目录创建内容相同的.mpd.conf
9 创建主机名称集合文件/root/mpd.hosts
#vi mpd.hosts
文件内容如下:
station1
station3
station6
station8
使用
MPICH2采用mpd服务来对进程进行管理,使用mpiexec运行mpi程序。
MPD
启动单机上的mpd服务
# mpd &
查看mpd服务
# mpdtrace 查看主机名
或
#mpdtrace –l 查看主机名和端口号
关闭mpd进程管理
#mpdallexit
启动集群上的mpd服务
# mpdboot –n process-num –f mpd.hosts
启动 process-num个进程,mpd.hosts是前面创建的文件。
mpich2默认是使用ssh来登陆集群里的其他机器,也可以使用rsh来登陆集群里的其他机器来启动mpd服务
只要使用-rsh选项就可以指定用ssh或rsh
#mpdboot -rsh=rsh –n process-num –f hostfile
或#mpdboot -rsh=ssh –n process-num –f hostfile
关闭mpd服务
#mpdallexit
mpiexec
使用MPIEXEC来执行mpi任务
#mpiexec –np 3 ./cpi
或mpiexec –machinefile filename –np 4 ./cpi
2、MPICH2推荐用mpiexec来执行任务而不是mpirun,因为的确,mpiexec相比mpirun,有了很多实用的feature,比如:
mpiexec -n 1 -host loginnode master : -n 32 -host smp slave
mpiexec 可以针对不同的节点,做不同的任务发布策略。上述命令可以看到,我们要在loginnode上发布一个进程,该进程的可执行文件是 master,并且在一个名为smp的机器上发布32个进程(很显然这台hostname为smp的机器是一台32个CPU的机器)。不同的参数之间用冒 号隔开就OK了。
3、通过上面的例子,就可以看到,mpiexec中可以针对节点做很多定制。比如-n, -path,-wdir, -host, -file, -configfile这些参数都是常用的,比如-wdir就可以定制working directory。而且,mpiexec还支持环境变量的定制,这是非常实用的,也就是说,可以针对不同的进程,给他们定义不同的环境变量列表。比如这 个例子:
mpiexec -n 1 -env FOO BAR a.out : -n 2 -env BAZZ FAZZ b.out
可以看到,我们给a.out定义了一个FOO的环境变量(值为BAR),给b.out定义了一个BAZZ
mpiexec -genv FOO BAR -n 2 a.out : -n 4 b.out
使用genv(global env),可以让这个环境变量在所有进程中生效。
使用-envall, -genvall这两个option可以将执行mpiexec这个程序所在机器上的环境变量列表发布到指定的进程中去(全部进程中去)。
使用-envnone, -genvnone可以将指定进程(全部进程)的环境变量都清空。这样可以让我们定义一个干净的环境变量列表,如:
mpiexec -genvnone -env FOO BAR -n 50 a.out
这样,a.out进程的环境变量就只有一个FOO的环境变量。
mpiexec -genvnone -envlist PATH,LD_SEARCH_PATH -n 50 a.out
这个例子说明,将mpiexec所在机器上的PATH, LD_SEARCH_PATH这两个环境变量发布到a.out进程上,其他的环境变量都清空。
这个东西还是很有用的,特别是LD_LIBRARY_PATH这个环境变量,很可能要根据不同的进程来定制。
-l: provides rank labels for lines of stdout and stderr.
这样很利于我们调试,因为在stdout和stderr的信息中,就可以看到这个信息是哪个进程print出来的。
-machinefile:
mpiexec中的machinefile和MPICH1中的machinefile相比,有一点增强,这里有个例子:
# comment line
hosta
hostb:2
hostc ifhn=hostc-gige
hostd:4 ifhn=hostd-gige
可以看到,不仅可以定义machine,还可以定义用什么网络界面,这对多个网段的cluster是有好处的。mpiexec发布任务的时候,会根据这个列表挨个发布。
-s: can be used to direct the stdin of mpiexec to specific processes in a parallel job.
这个也是很实用的选项。这个选项可以让我们在执行mpiexec的机器上做输入,然后把这些输入送到指定的进程中去,很有用。
mpiexec -s all -n 5 a.out # 把输入传给所有的进程
mpiexec -s 4 -n 5 a.out # 输入传给rank为4的进程
mpiexec -s 1,3 -n 5 a.out # 传给1,3进程
mpiexec -s 0-3 -n 5 a.out #传给0, 1, 2, 3进程
6、最后是一些FAQ,这里摘录一些有价值的:
(1)What is the difference between mpd & smpd process manager?
MPD is the default process manager for MPICH2 on Unix platforms. It is written in Python. SMPD is the primary process manager for MPICH2 on Windows. It is also used for running on a combination of Windows and Linux machines. It is written in C.
(2)When I use the g95 Fortran compiler on a 64-bit platform, some of the tests fail
A: The g95 compiler incorrectly defines the default Fortran integer as a 64-bit integer while defining Fortran reals as 32-bit values (the Fortran standard requires that INTEGER and REAL be the same size). This was apparently done to allow a Fortran INTEGER to hold the value of a pointer, rather than requiring the programmer to select an INTEGER of a suitable KIND. To force the g95 compiler to correctly implement the Fortran standard, use the -i4 flag. For example, set the environment variable F90FLAGS before configuring MPICH2:
setenv F90FLAGS "-i4"
G95 users should note that there (at this writing) are two distributions of g95 for 64-bit Linux platforms. One uses 32-bit integers and reals (and conforms to the Fortran standard) and one uses 32-bit integers and 64-bit reals. We recommend using the one that conforms to the standard (note that the standard specifies the ratio of sizes, not the absolute sizes, so a Fortran 95 compiler that used 64 bits for both INTEGER and REAL would also conform to the Fortran standard. However, such a compiler would need to use 128 bits for DOUBLE PRECISION quantities).
(3)Q: How do I pass environment variables to the processes of my parallel program when using the mpd process manager?
A: By default, all the environment variables in the shell where mpiexec is run are passed to all processes of the application program. (The one exception is LD LIBRARY PATH when the mpd’s are being run as root.) This default can be overridden in many ways, and individual environment variables can be passed to specific processes using arguments to mpiexec.
注意哦,上面说过了,mpiexec可以定制环境变量,不过这里提到了,LD_LIBRARY_PATH在root启动的mpd ring里面有例外哦。
mpirun mpd mpiexec相关推荐
- 客户端/服务器模式下,pvpython操作完数据后,paraview客户端未响应
In client / server mode, the paraview client does not respond after pvpython completes data operatio ...
- MPICH 完整配置存档
MPICH 完整配置存档 提问:chkconfig time on /etc/sysconfig/network-scripts netconfig -d eth0 --ip=192.168.1.3 ...
- [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark
[源码解析] 深度学习分布式训练框架 horovod (10) - run on spark 文章目录 [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark ...
- 在OpenShift平台上验证NVIDIA DGX系统的分布式多节点自动驾驶AI训练
在OpenShift平台上验证NVIDIA DGX系统的分布式多节点自动驾驶AI训练 自动驾驶汽车的深度神经网络(DNN)开发是一项艰巨的工作.本文验证了DGX多节点,多GPU,分布式训练在DXC机器 ...
- 基于OpenSeq2Seq的NLP与语音识别混合精度训练
基于OpenSeq2Seq的NLP与语音识别混合精度训练 Mixed Precision Training for NLP and Speech Recognition with OpenSeq2Se ...
- 5.15 vs2019 静态编译_HPCC S01E01 编译 win10,ubuntu 安装
本文使用 Zhihu On VSCode 创作并发布 首先HPC Challenge的编译需要bash.不能用cmd. ubuntu会自带bash,win10需要另外安装bash,可以使用msys2 ...
- mpiBlast安装详解以及使用说明
Getting mpiblast 现在下载包文件: wget http://www.mpiblast.org/downloads/files/mpiBLAST-1.6.0-pio.tgz 解压包文 ...
- cdf表格_WRFV3.1用户手册之中文版(非常难得之翻译版)
登录后查看更多精彩内容~ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 天目神眉 于 2011-9-29 16:04 编辑 Chapter 1: Overview 翻译:by 澳 ...
- openmpi参数_openMPI测试 编译 运行 及MCA框架(zz)
测试Open MPI的安装 命令"ompi_info"可用来检测Open MPI的安装状态.该命令会返回 一个关于你的Open MPI安装的大概信息. Note that the ...
最新文章
- python字典中找最小值_从包含元组值的字典中查找最小值和最大值
- svn教程----示例二:测试人员拥有读权限
- 关于初始化C++类成员
- 正式举报林-裴 (1999) 论文涉嫌学术不端
- ueditor video 设置宽高的问题(uni app)
- 360私有云平台-HULK 5岁啦~
- python的sleep_python的time.sleep()有多准确?
- Javascript实践-去除数组的重复元素
- 使用.net的Cache框架快速实现Cache操作
- fetch jsonp连接mysql_后端接口开发:json,jsonp,restful
- [精华]世界500强面试题----[完整版]
- Python 猴子偷桃
- Python每天定时发送监控邮件。解放双手它不香吗?
- 文章标题 execution(* cn.sxt.dao.impl.*.*(..))解释
- Eclipse报错DataIntegrityViolationException异常解决办法
- android 尺寸转换工具,Android APP界面标注、尺寸换算和APP标注工具
- 手把手第一篇:写出第一行 Hello World
- 【实例间对比】ICE: Inter-instance Contrastive Encoding for Unsupervised Person Re-identification论文笔记
- day01.介绍python运维开发
- 读取太阳紫外辐照谱数据
热门文章
- 转自千千:量化高频框架的搭建
- acwing 846. 树的重心
- 计算机组网技术形考4单元答案,最新国家开放大学电大《计算机组网技术》网络核心课形考任务四答案...
- MySQL事务原理详解,一篇文章让你搞懂
- asp.net ajax1.0基础回顾(二):经典模式
- sql server oracle转换,sql-server – 如何从SQL Server DBA转换到Oracle?
- EDA学习环境的搭建
- 两道小学生的题----1000: 梦里的难题、1002: 拳皇
- 【重读.转】黑客帝国中的佛法义理
- 0705第七讲标准模版库