mpich用户手册(精简版)

5.1 标准mpiexec 命令

mpiexec开始一个MPI工作的最简单形式: mpiexec -n 32 a.out
该命令是:使用32位的进程,执行a.out目标文件。
mpiexec命令支持其他可选项,来指定哪台主机运行 并行算法程序,文件路径,指定开启进程数等。
带有多个参数的mpiexec命令格式如下:
mpiexec -n 1 -host loginnode master : -n 32  -host  smp  slave
另外 -configfile参数,指向仪个配置文件,文件包含对指定进程组的进行的若干命令行操作。

我们可以不用mpiexec命令,启动一个单进程的MPI任务。当该进程调用MPI——Init时,此进程变成MPI进程,而后会调用MPI中的其他函数。
目前MPICH2还不很好地支持 动态进程(一个任务所需建立的进程不能预先确定),不能从mpiexec命令建立动态进程!

5.3 MPD进程管理环境
MPICH2提供很多进程管理系统。其中,MPD是默认选择的进程管理系统,MPD提供很多对标准mpiexec的扩展功能。

5.3.1
MPD提供标准mpiexec能提供标准选项支持,还支持其他选项。MPD提供了很多查询MPD进程管理环境和与启动的任务进行交互的相关命令。
在使用MPD是,必须有后台守卫进程在运行。在6.1将介绍如何运行和管理MPD守卫进程。

在cmd中运行MPICH2自带的一个求pi的并行算法实例。pi=3.141592653....这里3.2差的有点多!



下面我们假设MPD守卫进程已经启动,MPICH2的bin目录已经加到了系统环境变量PATH中。
现在可以进行如下命令:
mpdtrace
mpdtrace命令将输出能运行MPI程序的所有节点。现在可以为用mpiexec运行程序做准备了。现在假设你已经对程序进行了编译,并且链接了cpi库。
现在可以执行如下形式的名利高:mpiexec -n 5 cpi。意思是在5个node上执行cpi程序。
MPD管理系统可以让我们设置在哪些节点上运行程序,cpi可以告诉我们哪些节点正在运行mpi程序。

可以用mpiexec命令运行非MPI程序。主要用于确保所有机器启动并可使用。
使用实例如: mpiexec -n 10 hostname


mpiexec -n 10 printenv


5.3.2MPD相对于mpiexec加入的其他的命令行元素
MPI-2标准语法选项有 -path  -wdir  -host  -file  -configfile   -soft
在MPD中对这些选项都已实现配置。我们称这些选项是本地的选项。
MPD也可以创建一些全局的选项,作用于所有运行中的进程。


5.4 SMPD进程管理环境的扩展
SMPD管理系统可以运行在Windows系统,Linux/Unix系统下。
可以用mpiexec或mpiexec -help2命令,获得可选项。

典型的使用形式: mpiexec  -n  10  myapp.exe
mpiexec的具体选项有:





6 管理进行管理环境

一些进程管理者给用户提供可以与进行管理者进行交互来控制任务执行的命令。这一部分我们将描述一些常用的命令。
6.1 MPD
mpd命令:可以在其一个mpd后台守卫进程。(针对Linux/Unix系统)
mpdboot : 在一组机器上开启mpd服务
mpdtrace : 列出所有正在运行的MPD守卫进程,-l 选项能详细地列举出机器的全名和mpd正在监听的端口。
mpdlistjobs : 列出正在运行mpd服务的所有任务。
mpdkilljob : 通过mpdlistjobs返回的名字,关闭一项任务
mpdsigjob : 传输信号(名字或数字)到一个有名字的任务
你也可以通过敲击键盘来提供信号。在Unix shell环境中,可以用ctrl+C ,或Ctrl+Z信号到进程去中断进程。被挂起的进程可以通过方式再运行。
更详细的参数格式,可以通过 mpd --help获得。

7调试
众所周知,调试一个并行进程是比较困难的。这里介绍一些调试的方法。具体的调试方法在不同版本的mpich中有些区别。

如果你在使用MPD进程管理,就可以在mpiexec中加入-gdb选项,来在调试的环境下执行MPI程序。
-gdb选项能够通过发送stdin命令给所有进行或某些进程,控制它们的运行实例。
或标记,合并各进程的输出。
但是 这种调试方式的实现还不够完善。例如,不显示提示信息。
我们在main函数开头设置断点,来获得所有同步的进程。如果用户恰好在第一个执行语句处设置断点,就会造成重复,无用的断点。

下面是 -gdb调试过程的运行情况,你可以初步了解它是如何工作的。









8.1 MPI日志

MPE提供自动MPI日志功能。例如,为了看到MPI程序fpilog.f的通讯模块,我们可以简单地通过如下的形式链接源文件
mpif90 -mpe= mpilog -o fpilog fpilog.f

8.2 用户自定义日志

8.3 MPI错误检查
我们可以采用如下形式:来验证一个程序中的所有MPI调用。
mpif90  -mpe = mpicheck  -o wrong_reals wrong_reals.f
得到如下形式的结果
..
8.4 MPE选项

9.MPICH2提供的其他工具

MPICH2提供了一套对MPI-1和MPI-2函数进行测试的文件。
文件在/mpich2/test/mpi路径下,可以用make testing来执行测试。

你可能感兴趣的:(MPI)