单机双核的mpi并行程序的设置Word文件下载.docx

上传人:b****1 文档编号:3947679 上传时间:2023-05-02 格式:DOCX 页数:12 大小:96.66KB
下载 相关 举报
单机双核的mpi并行程序的设置Word文件下载.docx_第1页
第1页 / 共12页
单机双核的mpi并行程序的设置Word文件下载.docx_第2页
第2页 / 共12页
单机双核的mpi并行程序的设置Word文件下载.docx_第3页
第3页 / 共12页
单机双核的mpi并行程序的设置Word文件下载.docx_第4页
第4页 / 共12页
单机双核的mpi并行程序的设置Word文件下载.docx_第5页
第5页 / 共12页
单机双核的mpi并行程序的设置Word文件下载.docx_第6页
第6页 / 共12页
单机双核的mpi并行程序的设置Word文件下载.docx_第7页
第7页 / 共12页
单机双核的mpi并行程序的设置Word文件下载.docx_第8页
第8页 / 共12页
单机双核的mpi并行程序的设置Word文件下载.docx_第9页
第9页 / 共12页
单机双核的mpi并行程序的设置Word文件下载.docx_第10页
第10页 / 共12页
单机双核的mpi并行程序的设置Word文件下载.docx_第11页
第11页 / 共12页
单机双核的mpi并行程序的设置Word文件下载.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单机双核的mpi并行程序的设置Word文件下载.docx

《单机双核的mpi并行程序的设置Word文件下载.docx》由会员分享,可在线阅读,更多相关《单机双核的mpi并行程序的设置Word文件下载.docx(12页珍藏版)》请在冰点文库上搜索。

单机双核的mpi并行程序的设置Word文件下载.docx

sGuide,都down下来看看很有用的说。

具体开发用的有关MPI标准的文档在MPI论坛的网站里都有,地址是http:

//www.mpi-forum.org/,我觉得最有用的是MPI-2:

ExtensionstotheMessage-PassingInterface。

Windows下的安装配置

我用的参与计算的系统都是WindowsXPProSP2,安装的过程没什么太特别的,一般就是默认就可以,只是其中有个地方要填一个什么passphrase,上面提示说所有系统都要用相同的passphrase,照做就是了,在所有参与计算的结点机器上都填一样的passphrase就好了。

另外就是需要.netframework2的运行环境。

默认安装的位置是C:

\ProgramFiles\MPICH2,下面的bin目录下是系统配置运行需要的程序,为了方便在控制台使用,可以把C:

\ProgramFiles\MPICH2\bin加到系统的PATH变量中去。

Include是头文件,开发的时候用,lib是链接程序的时候用的库文件。

Jumpshot下有个pdf的文档,干什么用的可以看看这个文档,我没仔细看,感觉我暂时还用不上。

Examples下面是一个样本程序,就是一个用MPI计算圆周率的程序,分别有C,C++和Fortran版,C/C++的应该可以用VS2003以上版本打开。

同时,安装程序还会自动向系统注册一个服务MPICH2ProcessManager,我们从控制面板-管理工具-服务里就能找到,这是管理运行MPI程序的一个服务,安装好后就是自动启动的,所以一般也就不用动它。

安装完毕后开始菜单-程序中就添加了一个MPICH2目录,其中就有上面提到的Jumpshot,另外wmpiconfig.exe是用来配置运行环境的,我在网上有找到的说明都是以前旧版本的,和现在的差别比较大,感觉这新版本用的不爽,没搞明白这个程序该咋用,不过好像默认状态下不改什么就能正常使用,所以也就不管它了。

wmpiregister.exe则是用来注册用户的,使用MPI之前需要在这个程序里注册一个系统里已经存在的用户,而且这个用户必需拥有管理员权限,拥有运行我们安装了的MPI系统的能力。

比如我就在所有参与运算的机器上添加了一个管理员mpi,密码也是mpi。

接下来,我们就可以开始试着运行一下MPI的程序了。

就用examples目录下面的那个计算<

!

--[if!

vml]-->

圆周率的程序。

如果要多机并行计算的话,就需要在所有机器上的相同位置放置要运行的程序,我的情况就是在所有机器的C盘下建了一个mpiexe的目录,并把cpi.exe拷到所有机器的这个目录下。

然后,在其中的某台机器上进入控制台(运行MPI程序其实也可以用开始菜单的MPICH2下的wmpiexec.exe,这是个gui程序,但是我觉得用的不爽,不如直接在控制台下敲命令来得灵活),敲下命令mpiexec-hosts2192.168.10.142192.168.0.23c:

\mpiexe\cpi.exe。

mpiexec是安装目录下bin目录里的一个程序,在本文的例子中就是C:

\ProgramFiles\MPICH2\bin\mpiexec.exe,因为刚才说了,我把这个地址加入到PATH里了,所以可以在任何地方直接执行,它是用来启动MPI程序的,-hosts参数说明是启动多台机器并行运算,后面跟着的2就是说要在两台机器上执行程序,再后面的就是那两台机器的ip地址,其中第一个就是我启动程序的机器,当然,这个地方也可以写机器名,只要它的机器名能被正常的解析就可以,最后面的就是要运行的程序,也就是刚才提到的所有机器都要在相同位置放置的那个MPI程序。

如果只是在本机运行,则命令为mpiexec–n2cpi.exe,-n表示是在本地运行,后面的2表示启动的进程数。

程序运行后就会提示让你输入一个数字intervals,这个数字影响计算的精度,值越大精度越高,当然计算时间就越长了,然后程序会打印出计算的结果和花费的时间。

比如,我使用单机单进程运行,intervals设为99999999,耗时1.253849秒,而用两台机器双进程则只有0.628954秒,明显快很多,并行运算还是很有效果的。

不过,如果我们把intervals改为9999,单机运行只用了0.000279秒,而两台机器却花了0.001548秒,这是因为并行运算过程中,参与运算的机器需要通过网络传递一些消息,如果计算量不大的话,花在了这上面的时间影响会比较明显,因而反不如单机版的来得快。

到现在我们的MPI运行环境就基本安装好了,当然,MPI还有很多其他的命令参数,只不过最常用估计也就这两条了,其他的用得着的时候就去查上面提到的文档,里面有比较详细的介绍。

另外,如果按照以上的介绍进行安装配置,在运行多机并行MPI程序的时候却出现连接错误的话,八成是因为网络的问题,看看你的防火墙是不是开着,打开相应的端口,或者干脆关掉防火墙就好了。

Linux下的安装配置和单机运行

Linux下的操作要相对来说麻烦一点,这个麻烦从安装开始,呵呵。

我用的系统是CentOS4.4,装在VMwareWorkstation里的,一共装了两个虚拟机,环境基本上完全一样。

为运行MPI在两台虚拟机都创建了一个用户mpi,密码也是mpi,home路径也都是/home/mpi,然后继续都创建了一个目录/home/mpi/mpich2用来作MPI运行环境的安装路径,一个/home/mpi/mpich2/src来存放编译用的源代码。

然后将源代码包mpich2-1.0.5.tar.gz下载到两台机器上,都解压缩到/home/mpi/mpich2/src中,然后到/home/mpi/mpich2/src下,指定安装路径,

./configure-divfix=/home/mpi/mpich2

make

makeinstall

几分钟后安装完毕。

需要提一下的是,我曾经试着用root用户来安装MPICH2,但是安装后好重启系统就出了问题,所以建议还是另外建个用户来装吧(ubuntu干脆就把root给禁了,不让你直接用root)。

安装后/home/mpi/mpich2下多出来一些目录和文件,要比windows多,lib是库文件,include是头文件,bin还是程序文件,所以还是要写到环境变量里,可以用命令exportPATH/home/mpi/mpich2/bin:

$PATH,但我是用root用户直接在/etc/profile最后面加了这么一句exportPATH=/home/mpi/mpich2/bin:

$PATH,一劳永逸。

MPI应用一个管理器来管理运行MPI程序,这个管理器就是mpd,但是在正式开始运行mpd前还需要一个基于安全考虑的配置文件,.mpd.conf,这个文件是要放在运行程序的用户的home目录下,本例子中就是/home/mpi/.mpd.conf,而且这个文件只能由这个用户读写,创建文件的命令是,

cd$HOME

touch.mpd.conf

chmod600.mpd.conf

然后在文件中写入这么一行,secretword=***,***在参与计算的计算机上必需完全一致。

如果是root用户的话,这个文件应该是/etc/mpf.conf。

然后,我们就可以启动mpd管理器了,直接在控制台下使用mpd命令,或者是mpd&

,让mpd在后台运行,若关闭启动的mpd,只需要命令mpdallexit即可。

在启动mpd之后就可以运行MPI应用程序了,执行命令与windows下类似,如我们仍然是测试一下examples里的cpi程序可以这样来作,

cd~/mpich2/examples

mpiexec-n1./cpi

参数含义同windows下的单机运行命令。

另外,启动mpd后还可以用命令mpdtrace来察看当前运行的mpd情况。

SSH配置和多机并行

MPI的多机并行是用mpdboot来管理启动的,是由参与计算的其中一台机器通过mpdboot同时启动其他机器上的mpd管理器并运行相应MPI程序的,所以,需要赋予运行mpdboot的机器执行其他机器上程序的能力。

MPICH2支持通过ssh和rsh来做到这一点,其中ssh是默认的,而且其安全性也优于rsh,因此,我在项目中是用的ssh。

首先,我们需要修改所有机器上的/etc/hosts文件,在里面添加上参与计算的机器名和ip地址,比如本文中有两台机器参加的例子里,hosts文件应当为:

127.0.0.1localhost.localdomainlocalhost

192.168.10.142node0

192.168.10.23node1

这里的意思是说,主机名为node0的机器ip地址为192.168.10.142,主机名为node1的机器ip地址为192.168.10.23。

当然,其实这一步也可以跳过,因为我们也可以在操作过程中直接使用ip地址,只不过那样不太方便。

另外就是,有些机器默认情况下第一行可能包括本机的主机名,比如在ip为192.168.10.142的node0上,hosts文件第一行是

127.0.0.1localhost.localdomainlocalhostnode0

这样可能会使得mpdboot工作不正常,所以还是最好给成上面的那种形式。

第二步是创建ssh密钥,命令行下:

#ssh-keygen-trsa

-trsa指的是密钥类型,具体请察看ssh相关资料,这里不多说。

这样就在当前用户的home目录下生成了一个.ssh目录,本文中的就是/home/mpi/.ssh。

第三步,将/home/mpi/.ssh下的id_rsa.pub文件拷贝改名为authorized_keys,即

#cpid_rsa.pubauthorized_keys

第四步,在其他所有机器上进行以下操作。

#ssh-keygen-trsa 

 

生成.ssh文件夹

#scpnode0的IP:

/home/mpi/.ssh/*~/.ssh 

拷贝node0上的.ssh文件夹覆盖本地的

第五步,在所有机器上建立与自己和所有其他机器的信任连接。

对每个节点执行:

#sshnode0

#sshnode1

根据提示键入yes即可。

然后就可以在不需要用户名密码的情况下通过ssh登陆其他机器了,比如在node0上#sshnode1,

就可以直接进入node1。

接下来,在启动mpdboot的机器上创建一个参与计算的host列表文件,如文件mpd.hosts,每行是一个主机名,创建过程如

#cd~

#touchmpd.hosts

#vimpd.hosts

nod0

node1

现在,就可以启动运算集群了

#mpdboot-n2-fmpd.hosts

-n表示要启动的机器个数,一般是不大于mpd.hosts文件中的机器数,比如本文中的例子就是两台机器。

这样,列表中的机器就会启动其本机上的mpd管理器。

然后,就可以开始运行MPI程序,进行运算了,同windows下一样,程序需要放在每台机器上的相同位置(如果用NFS就只需在一台机器上放置程序,其他机器作映射就行),比如都是程序/home/mpi/mpich2/examples/cpi,在运行mpdboot的结点机器上:

#mpiexec-n2/home/mpi/mpich2/examples/cpi

-n表示要启动的进程个数,一般是不大于mpd.hosts文件中的机器数(或者cpu核心数?

偶用的机器就是双核的了,所以单机的时候双进程比单进程效率好很多,但是三进程就不行)。

Mpd在运行过程中,可以通过mpdtrace显示参与计算的机器名,mpdtrace–l则是显示机器名以及其端口。

本文地址:

∙Windows下MPI并行程序运行环境的搭建-[开发手记]

版权声明:

转载时请以超链接形式标明文章原始出处和作者信息及本声明

http:

//www.mryang.org/logs/17396382.html

  这几日对并行计算有了大概的了解,其中关键的还是并行程序的设计,搞了一早上终于弄清楚了在Windows下的MPI并行程序运行环境的搭建。

什么是MPI?

  MPI(MessagePassingInterface),消息传递编程接口,是全球工业、科研和政府部联合建立的一个消息传递编程标准。

是目前最为通用的并行编程方式。

MPI标准中定了一组函数接口,用于进程间的消息传递。

函数的具体实现由各计算机厂商来完成,然这些都是要付费的;

也有一些免费的通用MPI系统,比较著名的就是MPICH(http:

//www.mcs.anl.gov/research/projects/mpich2/)和LAMMPI(http:

//www.lam-pi.org)。

[1]

  单来说,要让你的单个PC机能运行并行程序的运行,就需要有MPI的运行环境。

而PICH几乎支持所有的Linux/Unix和Windows,可以在单台PC或工作站上模拟MPI并行程,也可以在SMP系统或者机群环境上建立实用的并行计算环境。

  这里将在一台双核的PC上,利用虚拟机及MPICH2建立一个由3台PC节点构成的一个机群行计算环境。

软硬件准备

硬件:

一台普通PC,当然硬盘和内存越大越好,我是用的是160G的硬盘,1G的内存。

软件:

oVMwareWorkstation6.0,在VM上虚拟两个PC,与物理主机构成3个节点的机群可以安装一个虚拟PC,然后实用VM的克隆功能。

oMicrosoftWindowsXPPro:

每个节点的操作系统;

oMicrosoft.NETFramework2.0:

每个节点必须的环境;

ovcredist_x86.exe(VC8运行库):

在安装MPICH2时需要,安装时会提示VisualC++2005sp1的提示,安装vcredist_x86.exe后,就可以正常安装MPICH2了;

ompich2-1.0.6p1-win32-ia32.msi:

MPICH2安装程序,可到http:

//www.mcs.anl.gov/research/projects/mpich2/的Downloads中下载。

环境搭建

  在每台机器上均安装上Microsoft.NETFramework2.0和MPICH2。

MPICH2的默认安装路在C:

\ProgramFiles\MPICH2,将MPICH2\bin加入系统环境变量的Path中。

  每个节点中新建一个用户,该用户应该具有管理员权限。

我这里新建了用户mpi,密为111,隶属Administrators组。

  在每个节点新建相同的目录,来存放并行程序,该目录都应该在相同的位置。

我这里的C:

\mpitest。

单机测试

  首先需要注册一个用户,运行MPICH2的wmpiregister.exe,在开始->

所有成程序-MPICH2中可以找到。

将上一步中的用户名和密码在这里进行注册即可。

  后可以采用MPICH2提供的GUI界面进行测试,可以在在开始->

所有成程序->

MPICH2中到wmpiexec.exe;

在MPICH2的examples下有个测试程序cpi.exe,选择后执行即可。

  可以到命令行方式执行命令:

mpiexec-n2C:

\ProgramFiles\MPICH2examples\cpi.exe即可。

命令中-n是参数,后面的2表示有两个节点并行计算。

联机测试

  这里将在具有3个节点的PC集群上测试。

首先将cpi.exe程序拷贝到每个节点的C:

\mpitest目录中,然后执行命令:

mpiexec-hosts3210.45.*.*210.45.*.*210.45.*.*C:

\mpitest\cpi.exe

  注意:

在联机测试时将XP的防火墙关闭。

与VC++6.0集成开发环境

  有了MPI的运行环境后,还需要一个MPI的开发环境。

MPICH2可以和VC开发环境集成,集的方法很简单,将MPICH2的Include和lib添加到VC的Directories的Includefiles和ibaryfiles中即可。

同时在ProjectSettings中将mpi.lib添加到Object/librarymodules中,然后就可以采用VC++6.0开发MPI的并行程序了。

[1]张林波,尺学斌等.并行计算导论.北京:

清华大学出版社,2006年7月

[2] 

随机文章:

准备离开USTC了2008-07-04

感受IBMBladeCenter刀片服务器2008-03-19

正式开始在USTC的学习2008-03-18

又回到USTC了2008-04-14

财务处的程序告一段落了2006-04-17

收藏到:

Del.icio.us

Tag:

高性能计算MPI并行计算

引用地址:

MrYang发表于15:

08:

07|编辑|继续话题|转发|推荐

评论

∙请问下大侠,我用两台机器联机,为什么只能在一台机器上同时检测到两台机器安装了MPICH2,而在另外一台机器上却只能看到它自己。

还有,我是VF6.5,编译环境如何整合啊?

是不是只有编译环境整合后,才能测试例子cpi?

MrYang回复HH说:

对于第一个问题不知你是如何检测的。

要用VF6.5整合的话,要看MPICH2是否有支持MPICH2的部分,如果没有,就没办法了。

2008-08-0720:

44:

18

HH|发表于2008-08-0708:

54:

15[回复]

∙安装mpich2完毕,运行后输出为:

"

enterthenumberofintervals"

我随机输入非零值,然后输出pi和error,并没有给出processor状态,请问如何解决。

MrYang回复apple说:

这是mpi程序里面输出的,如果你的mpi程序中没有输出处理器的状态的代码的话,运行后的结果肯定是不会有输出的。

2008-07-0313:

51:

51

apple|发表于2008-07-0223:

20[回复]

∙请教下,MPI中,单机双核运行,是否可以共享内存?

如何访问同一块内存?

是否可以传递内存地址?

MrYang回复syc说:

MPI主要用在分布式并行系统中,如果要共享内存,那是SMP,需要使用OpenMP。

如果是单CPU双核中的核与核之间的内存共享的话,我想这应该是操作系统的任务,或者要看CPU厂家的编译器是否支持,具体没有用过,需要查阅资料。

2008-05-0822:

26:

17

syc|发表于2008-05-0818:

15:

03[回复]

∙原来账户不能空密码……

不过老弹出windows防火墙安全警报真是烦人。

麻烦你了:

把防火墙关了,账号给个密码就可以了。

2008-03-2822:

09:

48

syc|发表于2008-03-2818:

48:

51[回复]

∙单机多进程的话,用wmpiexec.exe运行,提示无权/无法连接。

请问下这边的account和password要如何设置?

随便设个用户和密码即可。

10:

16

42:

25[回复]

∙呃。

VMware没用过。

能不能稍微说一下这方面。

谢谢了。

单机不需要VMware,直接安装了MPICH测试就可以了。

2008-03-2817:

05:

32

syc|发表于2008-03-2814:

57:

50[回复]

∙能不能麻烦稍微说下单击双核(甚至单核)的话,MPICH应该如何设置?

最近毕业设计搞到这个题目,,一头雾水。

兄弟,上面的文章中已经写得很清楚了啊。

文章就是杂单机双核的情况做的。

200

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2