mpich2配置Word格式.docx
《mpich2配置Word格式.docx》由会员分享,可在线阅读,更多相关《mpich2配置Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
fmpich2.libcontainsallcapscdecl:
MPI_INIT
fmpich2s.libcontainsallcapsstdcall:
MPI_INIT@4
fmpich2g.liborfmpich2g.acontainlowercasecdecl:
mpi_init__
IV)在settingfor中,选择Win32release;
V)重复II)、III)的操作(参考了MPICH2安装目录下的README.winbin.rtf设置)
VI)点击OK。
点击菜单File->
SaveFortranEnvironment;
点击SaveEnvironment按钮,即保存一个新的环境(给一个名称mpich2)
8由于fortran有77和90两种格式,下面分别配置
77下,要在C:
\ProgramFiles\MPICH2\include下mpif.h下修改三个地方,1-8行的!
改成c(77和90的注释符号不一样),400行(KIND=8)去掉,415-417行前的!
改成c,写程序时加上include'
mpif.h'
90下程序前加上usempi就可以了
8至此,配置工作都做完了,可以写程序编译了,生成可执行文件.exe。
运行开始>
wmpiexec.exe来运行程序。
第10章 MPICH的安装与MPI程序的运行
本章对MPI的一个最成熟和最广泛使用的版本MPICH进行介绍
包括MPICH在两种典
型的操作系统Linux和NT上的安装MPI程序的编译和运行读者可以按照本章介绍的方法
安装MPICH并且在该实现下编写和运行各种MPI程序
MPICH是MPI的一种具体实现该实现可以免费从网上下载MPICH的开发与MPI规范
的制订是同步进行的因此MPICH最能反映MPI的变化和发展
MPICH的开发主要是由ArgonneNationalLaboratory和MississippiStateUniversity共同完
成的在这一过程中IBM也做出了自己的贡献但是MPI规范的标准化工作是由MPI论坛
完成的
10.1Linux环境下的MPICH
10.1.1安装
¬
MPICH软件包的下载
根据自己及其配置的不同
可以下载不同的软件包
名字分别是mpich.tar.gz和
mpich.tar.Zmpich.tar.gz需要用gunzip来解压
可以通过浏览器下载网址是http:
//www.mcs.anl.gov/mpi/mpich/
也可以通过匿名ftp下载ftp:
//ftp.mcs.anl.gov/pub/mpi和ftp:
//ftp.mcs.anl.gov/pub/mpisplit其
中ftp:
//ftp.mcs.anl.gov/pub/mpisplit是将文件拆开使用者可以分别下载小的片段然后通过cat
命令将它们拼接在一起
-将软件包解压
通过如下命令
tarzxvfmpich.tar.gz
或
gunzip–cmpich.tar.gz|tarxovf–
zcatmpich.tar.Z|tarxovf–
uncompressmpich.tar.Z
tarxvfmpich.tar
®
进入解开的mpich子目录
cdmpich
有些包带有版本信息如1.1.11.1.2等
¯
创建Makefile和编译
./configure
也可以加prefix指出安装的位置./configure–prefix=/usr/local/mpich-1.2.1
make
其中的configure命令完成MPI的自动配置而make对MPI进行编译
80
°
测试安装是否正确
cdexamples/basic
makecpi
../../bin/mpirun–np4cpi
或者直接在$(HOME)/mpich下运行
maketesting
±
将mpich安装到指定的目录
makeinstall
其中安装位置由配置时prefix指定
10.1.2主要目录介绍
$HOME/mpich-1.2.1/MPI-2-C++
mpich对C++的支持部分
$HOME/mpich-1.2.1/bin
mpich的执行脚本
$HOME/mpich-1.2.1/doc
mpich的相关文档
$HOME/mpich-1.2.1/examples
mpich自带的例子程序
$HOME/mpich-1.2.1/f90modules
mpich对Fortran90的支持
$HOME/mpich-1.2.1/include
mpich的头文件
$HOME/mpich-1.2.1/lib
mpich的可联接库
$HOME/mpich-1.2.1/man
mpich的参考手册
$HOME/mpich-1.2.1/mpe
mpich的扩展部分
$HOME/mpich-1.2.1/mpid
mpich对不同设备的支持
$HOME/mpich-1.2.1/romio
mpich对并行I/O的支持部分
$HOME/mpich-1.2.1/share
通过upshot或jumpshot查看的例子
$HOME/mpich-1.2.1/src
mpich的可移植源程序
$HOME/mpich-1.2.1/util
mpich应用程序
$HOME/mpich-1.2.1/www
通过浏览器访问的mpich参考手册
下面介绍对于一个已经设计好的MPI程序如何对它进行编译运行查看结果等
81
10.1.3编译命令
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通用的选项
含义和原来的编译器
相同
10.1.4执行步骤
MPI程序一般被称为SPMDSingleProgramMultipleData程序即相同的程序对不同
的数据进行处理
当然用MPI也可以编写出MASTER/SLAVER类的具有明显主从关系的程
序
MPI源程序
支持MPI的C或FORTRAN编译器
可执行MPI程序
将可执行程序拷贝到各个结点机
结点机1
结点机2
各结点机上的MPI程序并行执行协同完成
给定的任务
结束
图37MPI程序的执行过程
82
结点机N
MPI程序的执行步骤图37一般为
编译得到MPI可执行程序
若在同构的系统上执行则只需编译一次若系统是异构的则在每一个异构的系统上
都需要对MPI源程序进行编译
-将可执行程序拷贝到各个结点机上
对于编译得到的可执行程序将它拷贝到将要运行的各个结点机上
通过mpirun命令并行执行该MPI程序
10.1.5放权
为了能够在多个不同的机器上运行MPI程序首先需要其它机器对启动MPI程序的机器
放权即允许启动MPI程序的机器能够访问其它的机器主要有两种方式一种是在其它所
有机器的/etc/hosts.equiv文件中加入启动MPI程序的机器名比如将要在tp5这台机器上启动16
个MPI进程
用到的机器分别是tp1,tp2,...,tp16则需要在tp1,...,tp16机器上的/etc/hosts.equiv
文件中都加入一行
tp5
这样就表示其它的机器都允许tp5进行访问为了在一台机器上同时运行多个进程
在启动
进程所在的机器的/etc/hosts.equiv文件中也要加入自身的机器名如果/etc/hosts.equiv文件
不存在则需要自己创建它
另一种方式是通过.rhosts文件来放权即在MPI程序所要用到的各个机器上在运行该
程序的帐户的home路径下创建一个.rhosts文件在该文件中写上允许那些机器的那些帐户对
自己的帐户进行访问比如在tp1机器的pact帐户下它允许tp5的pact帐户对它进行访问则
需要在tp1机器上的pact帐户的home下创建一个.rhosts文件该文件加入一行
tp5pact
为了简单起见最好在各个机器上都建立相同的帐户名使得MPI程序在相同的帐户下
运行
10.1.6运行命令和配置文件
最简单的MPI运行命令是
mpirun–npNprogram
其中N是同时运行的进程的个数program是可执行MPI程序名以这种方式进行执行
需要首先对可用的机器进行配置配置文件是$(HOME)/mpich/util/machines/machines.LINUX
在这个文件中每一行写上可用的机器名比如
83
这样就有6台机器可供MPI使用使用这种方式启动时
可执行程序必须放在不同机器的相
同帐户的相同路径下比如在上$(HOME)/mpich/examples/basic/下运行
mpirun–np6cpi
则需要在{tp1,tp2,tp3,tp4,tp8}上的$(HOME)/mpich/examples/basic/下都有该cpi程序
如果不使用缺省的配置文件
则需要在命令行给出配置文件
该配置文件的格式和
mashines.LINUX相同比如
mpirun–machinefilehosts–np6cpi
只需在hosts中给出可使用的机器名字即可
还有一种更为灵活的配置方式它允许可执行程序有不同的名字有不同的路径它的
启动方式是
mpirun–p4pgpgfilecpi
它的配置文件pgfile的格式如图38所示
<
机器名>
进程数>
程序名>
图38配置文件的通用格式
需要多少机器就写几行注意在这种启动格式中不需要指出启动多少个进程进程数由
配置文件指定一种可能的格式如图39所示
tp1
tp2
tp3
tp4
tp8
1
/home/pact/mpich/examples/basic/cpi
图39配置文件示例
注意第一行的0并不表示在tp5上没有进程这里0特指在tp5上启动MPI程序的执行
mpirun是MPI程序的启动脚本它可以简化作业的启动程序并且尽可能把不同的设备
特征屏蔽掉提供给用户一个通用的MPI并行机的概念
MPI程序的一般启动方式是
84
mpirun-np<
numberofprocesses>
programnameandarguments>
一般MPI会自动决定使用什么样的设备和什么样的结构若MPI无法决定则可以通过
选择开关指定可用的设备选项有
chameleon(包括chameleon/pvm,chameleon/p4,...)
meiko
(使用meiko设备)
paragon(paragon上的ch_nx设备)
p4
(工作站机群上的ch_p4设备)
ibmspx(IBMSP2上的ch_eui)
anlspx(ANLsSPx上的ch_eui)
ksr(KSR1和2上的ch_p4)
sgi_mp(SGI多处理器上的ch_shmem)
cray_t3d(CrayT3D上的t3d)
smp(SMPs上的ch_shmem)
execer
(一个定制脚本目前还不稳定)
对于MPI无法识别的选项它将抛弃完整的MPI运行方式为
mpirun[mpirun_options...]<
progname>
[options...]
-arch<
architecture>
指明结构信息在${MPIR_HOME}/util/machines下有对应的
machines.<
arch>
文件
-h帮助信息
-machine<
machinename>
usestartupprocedurefor<
-machinefile<
machine-filename>
列出可选的机器
-np<
np>
指出运行需要的处理器个数
-nolocal不在本地机运行
-stdinfilename用给定的文件名作为标准输入
-t用于测试只显示执行的命令而不实际运行它
-v尽可能显示详细的信息
-dbx在dbx下启动第一个进程
-gdb在gdb下启动第一个进程
-xxgdb在xxgdb下启动第一个进程
-tv在totalview上启动
针对NEC-CENJU-3的特殊选项有
-batch作为批处理作业执行
-stdoutfilename用指定的文件名作为输出
-stderrfilename用指定的文件名作为标准输出
针对Nexus设备的特殊选项有
-nexuspgfilename用给定的文件作为配置文件
并且使-np-nolocal无效
自动选
择-leave_pg
-nexusdbfilename使用Nexus给定的资源数据库
针对工作站机群的特殊选项有
-e用execer来启动程序
-pg用配置文件来启动一个p4程序而不是execer
-leave_pg运行结束后不删除P4配置文件
-p4pgfilename用指定的进程组配置文件而不是临时创建一个使得-np和-nolocal
85
无效自动选择-leave_pg
-tcppgfilename使用指定的tcp进程组配置文件而不是临时创建一个使得-np和-
nolocal无效自动选择-leave_pg
-p4ssportnum使用p4安全服务程序来启动该程序
该服务器使用的端口号为
num如果num=0则使用环境变量MPI_P4SSPORT的值该服务器可以加速进程的启动
如果设置了MPI_USEP4SSPORT和MPI_P4SSPORT的值其效果就如同-p4ssport0
针对批处理环境的特殊选项
-mvhome将可执行程序移到home路径下
-mvbackfiles将指定的文件移到当前路径下
-maxtimemin以分钟为单位的最大运行时间
-nopoll不使用查询模式进行通信
-memvalue每个结点需要的内存
-cputime硬件CPU约束时间
针对IBMSP2的特殊选项
-cacname指定ANL调度期
针对IntelParagon的特殊选项
-paragontypename选择递交作业的方式
-paragonnamename指定运行作业的远程shells的名字
-paragonpnname在Paragon上运行部分的名字
异构系统上的运行
通过指定多个-arch-np参数对可以在不同的结构上协同运行一个MPI程序比如利用
本地机sun4和另一个机器rs6000同时执行一个程序在sun4上启动2个进程在rs6000上启动
3个进程则启动命令为
mpirun-archsun4-np2-archrs6000-np3program
如果不同机器上的程序名字不同
比如sun4上的程序名字是program.sun4rs6000上的
机器名字是program.rs6000则可以用%a代替机器名
mpirun-archsun4-np2-archrs6000-np3program.%a
如果执行程序的存放路径也不相同比如分别存放在
/tmp/me/sun4和/tmp/me/rs6000下则启动命令为
mpirun-archsun4-np2-archrs6000-np3/tmp/me/%a/program
10.1.7其它可执行命令
mpiman
启动MPI的手册帮助程序它提供两种显示方式一种是UNIX的man方式一种是通过
Web的HTML格式缺省情况下
mpiman使用xman,即X窗口系统的手册帮助浏览器来阅
读各个帮助页面其它的开关选项是
-xmosaic指定使用xmosaicWeb浏览器
-mosaic指定使用mosaicWeb浏览器
-netscape指定使用netscapeWeb浏览器
-xman
-man
指定使用X窗口系统的xman手册浏览器
指定使用manprogram(比如mpiman-manMPI_Send)
mpireconfig
86
根据模板文件产生make文件
它可以根据特定MPICH的配置将模板中的变量替换为
合适的参数形成所需要的make文件
命令格式是
mpireconfigfilename
filename是将要产生的文件名但是相应的filename.in文件必须是已经存在了的
10.2WindowsNT环境下的MPICH
这里介绍的NT上的MPICH版本是MPICH.NT.1.2.0.4该版本支持tcp/ip,共享内存和VIA
连接同一个机器上的进程间通信是通过共享内存队列实现的而不同机器上的进程间通信
是通过sockets或VI实现的
本包可以用MSVisualC++6.0和DigitalFortran6.0编译使用其它的FORTRAN编译器
需要修改编译选项动态连接库包括MPIPMPI调用的C和FORTRAN实现
10.2.1安装
从ftp:
//ftp.mcs.anl.gov/pub/mpi/nt/mpich.nt.1.2.0.4.all.zip下载该压缩包解压后执行setup命
令
便会将MPICH自动安装到NT上
缺省安装路径是c:
\ProgramFiles\ArgonneNational
Lab\MPICH.NT.1.2.0.4
安装的内容包括
l
运行时动态连接库
MPI程序的启动程序launcher
若需编译MPI应用则需安装sdk
源程序树是可选的
10.2.2编译
首先是C/C++程序的编译