MPI常用命令

1.mpd & 启动本机的mpi守护进程

2. mpdboot:  

启动集群mpd守护进程,在运行MPI程序前必须开启每个节点上的mpd守护进程。 
常用的参数: 
      
-n  nodenum,需要启动的节点数量 
      
-f  hostsfile节点列表,与-n 一起使用表示启动节点列表中的nodenum个节点。 
       
若没有-n选项,则只启动本地mpd进程。 
3. mpdtrace: 
查看集群mpd守护进程。 
常用参数: 
       
-l  输出mpdid和IP 
4. mpdexit: 
杀死指定节点mpd守护进程。 
常用参数: 
       -mpdid 
5. mpdallexit:

杀死所有的mpd守护进程。 

6.mpdtrace:查看MPI环境中的机器 

7. mpiexec: 
MPI程序运行命令,运行前必须开启mpd守护进程。 
常用形式: 
       
mpiexec <g-options> <l-options> <executable> 
      
mpiexec <g-options> <l-options> <executable> 
      
mpiexec –configfile <file> 
其中,
      
<g-options>  全局选项运用于所有MPI进程。 
      
<l-options>  本地选项应用于部分MPI进程集合。 
      
<executable> 可执行文件的路劲。 
      
<file>       包含命令行选项的文件。 
全局选项中常用参数:
       
-gdb 调试运行 
        
-machinefile <file> MPI进程分配文件。 
本地选项中常用参数:
        
-n num 设置执行MPI程序的进程总数 
注意:全局选项和本地选项顺序不要弄错。 
8. mpirun: 
MPI程序快速执行命令,运行前不必运行mpdboot开启守护进程。 
9. mpd测试命令:mpdcheck和mpdringtest 
mpdcheck用来检查mpi安装和运行时的故障和异常。 
mpdringtest测试一个mpd回环的传输时间。 
10. mpd帮助命令:mpdhelp 
mpdhelp显示所有mpd命令。 

11. 编译命令

mpicc: 
MPI程序编译命令。 
常用参数: -g  加入调试信息。
mpiCC/mpicc/mpif77/mpif90
mpiCC编译并联接用C++编写的MPI程序 而mpicc是编译并联接用C编写的MPI程序
mpif77和mpif90分别编译并联接用FORTRAN77和Fortran90编写的MPI程序

这些命令在联接时可以自动提供MPI需要的库 并提供特定的开关选项 

注意mpiCC不能不能用于编译C程序 常用的编译选项是
      -mpilog    产生MPE的log文件
      -mpitrace 产生跟踪文件
这样在该MPI程序执行时会打印出其运行踪迹信息,但是它和-mpilog 在编译时不能同时存在 只能二者选一
      -mpianim 产生实时动画
      -show     显示编译时产生的命令 但并不执行它
      -help      给出帮助信息
      -echo     显示出当前正在编译联接的命令信息
此外它们还可以使用一般的C++/C/FORTRAN77/Fortran90通用的选项,含义和原来的编译器相同

To compile a single file foo.c, use
   mpicc -c foo.c
To link the output and make an executable, use
   mpicc -o foo foo.o
Combining compilation and linking in a single command
   mpicc -o foo foo.c
最简单的MPI运行命令是
mpirun –np N program
program是可执行MPI程序名 以这种方式进行执行
其中N是同时运行的进程的个数
需要首先对可用的机器进行配置 配置文件是$(HOME)/mpich/util/machines/machines.LINUX
在这个文件中 每一行写上可用的机器名 比如
tp5.cs.tsinghua.edu.cn
tp1.cs.tsinghua.edu.cn
tp2.cs.tsinghua.edu.cn
tp3.cs.tsinghua.edu.cn
tp4.cs.tsinghua.edu.cn
83
tp8.cs.tsinghua.edu.cn

这样就有6台机器可供MPI使用 使用这种方式启动时 可执行程序必须放在不同机
同帐户的相同路径下 比如在tp5.cs.tsinghua.edu.cn上$(HOME)/mpich/examples/basic/下
mpirun –np 6 cpi
则需要在{tp1,tp2,tp3,tp4,tp8}上的$(HOME)/mpich/examples/basic/下都有该cpi程序
如果不使用缺省的配置文件 则需要在命令行给出配置文件 该配置文件的
mashines.LINUX相同
比如
mpirun –machinefile hosts –np 6 cpi
只需在hosts中给出可使用的机器名字即可
还有一种更为灵活的配置方式 它允许可执行程序有不同的名字 有不同的路径
启动方式是
mpirun –p4pg pgfile cpi
它的配置文件pgfile的格式如图 38所示
<机器名>      <进程数>            <程序名>
<机器名>      <进程数>            <程序名>
<机器名>      <进程数>            <程序名>
图 38 配置文件的通用格式
需要多少机器 就写几行 注意在这种启动格式中 不需要指出启动多少个进程 进
配置文件指定 一种可能的格式如图 39所示
tp5   0   /home/pact/mpich/examples/basic/cpi
tp1   1   /home/pact/mpich/examples/basic/cpi
tp2   1   /home/pact/mpich/examples/basic/cpi
tp3   1   /home/pact/mpich/examples/basic/cpi
tp4   1   /home/pact/mpich/examples/basic/cpi
tp8   1   /home/pact/mpich/examples/basic/cpi
图 39 配置文件示例
注意第一行的0并不表示在tp5上没有进程
这里0特指在tp5上启动MPI程序的执行
mpirun是MPI程序的启动脚本 它可以简化作业的启动程序 并且尽可能把不同特征屏蔽掉
提供给用户一个通用的MPI并行机的概念
MPI程序的一般启动方式是
mpirun -np <number of processes> <program name and arguments>
一般MPI会自动决定使用什么样的设备和什么样的结构
若MPI无法决定 则可以通过选择开关指定 可用的设备选项有
          chameleon (包括chameleon/pvm, chameleon/p4, ...)
          meiko     (使用meiko设备)
          paragon   (paragon上的ch_nx设备)
          p4        (工作站机群上的ch_p4设备)
          ibmspx    (IBM SP2上的ch_eui)
          anlspx    (ANLs SPx上的ch_eui)
          ksr       (KSR 1和2上的ch_p4)
          sgi_mp    (SGI多处理器上的ch_shmem)
          cray_t3d (Cray T3D上的t3d)
          smp       (SMPs上的ch_shmem)
          execer    (一个定制脚本,目前还不稳定)
对于MPI无法识别的选项 它将抛弃 完整的MPI运行方式为
mpirun [mpirun_options...] <progname> [options...]
在${MPIR_HOME}/util/machines下有对应的
      -arch <architecture> 指明结构信息
machines.<arch> 文件
      -h 帮助信息
      -machine <machine name> use startup procedure for <machine name>
      -machinefile <machine-file name> 列出可选的机器
      -np <np> 指出运行需要的处理器个数
      -nolocal 不在本地机运行
      -stdin filename 用给定的文件名作为标准输入
只显示执行的命令 而不实际运行它
      -t 用于测试
     

发布了25 篇原创文章 · 获赞 3 · 访问量 23万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章