首先,假设你已经在win7系统下安装好了ivf开发环境(具体参见上述链接中的攻略,这又是一个大问题,限于篇幅这里不再详述),那么按以下步骤安装和配置mpi。
1. 安装mpich2文件。pc如果显示是64位 *** 作系统,不用搭理,要看ivf的位数,选择mpi的位数,一般是32位的。
2.安装目录可以自己选。目录下会有include,bin和lib文件夹,以及example 文件夹。安装过程中出现一个behappy,在后面要用到。
3.装完mpich2才完成了一小步,接下来要运行smpd可执行文件,该文件在安装目录下的bin文件夹中(大概是bin,反正就是上面提到的三个文件夹中的一个)。a.开始-搜索,找到 cmd.exe符,鼠标右键以管理员身份运行(注意,这里必须用鼠标右键,才能以管理员身份运行),就出现一个命令流窗口,黑色背景的那种。b. 进入smpd.exe文件所在的目录,例如目录在D盘的话,cd /d D:\。。。,总之进入smpd.exe所在的路径。c.查看smpd安装状态,smpd -status,如果没有安装,键入命令smpd -install -phrase behappy,就ok了。
4. 注册,就是让win7知道有smpd在运行了,开始-所有程序-mpich2-register相关的一个,会出现输入用户名密码什么的,用户名输入机器的名字,注意,这里要输入的名字有讲究,我的电脑-右键-管理-计算机管理(本地)-系统工具-本地用户和租-用户-名称,找到自己当前登录的账户对应的名称,而不是全名(一般两者一致,不一致的话按名称输入),将对应的账户名称和密码填入后,既可以注册。
5.ivf中的mpi配置,打开一个项目,在项目-项目名称属性中设置,有三个地方必须设置,1是fortran-genreral中的additional include directories,将include文件夹目录完整copy到里面;2是link-general中的additional library directories,将bin文件夹的完整目录copy过去;3是link-input中的addtional dependencies,将fmpich.lib文件的完整目录包括文件名copy过去。上述设置需要在每个项目中都做一遍,做一遍之后,该项目会记住设置,从而不用在同一个项目中重复设置。另外,对同一个项目,release和debug模式下也要分别进行上述设置。
6.接下来就可以使用mpi编译了,编译完生成的可执行文件(.exe)要在mpi提供的一个界面中运行,开始-所有程序-mpich2-mpiexec.exe,会d出一个对话框,在里面添加编译生成的可执行文件目录,所用的线程数即可,点击execute按钮即可以并行计算了。这里面可以勾选一个run in a separate window选项,屏幕输出会在一个独立窗口中显示,背景是黑色的那种,不勾选这个,屏幕输出就在下面的白色方框内显示。另外,如果想选择mpi运行程序的位置(可执行文件,头文件,输入文件输出文件),在对话框左下角勾选more,第一行即可选择。
上述细节乃是本人亲历艰辛才得到的经验,权作开头连接中给出的攻略的补充。
虚拟机CentOS中配置MPI多节点并行计算完整版,这是一个新手教程,从一个空白的CentOS到能正常运行的基础环境,尽量详细写了每个步骤我的环境如下:
宿主机:Windows 10 Pro
虚拟机:VMware 12 + CentOS 6.6
一、 虚拟机网络配置实现多节点互访
硬件资源有限,所以我只开了两台虚拟机均为 Centos 6.6。
1.修改网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 将其中内容修改如下:
DEVICE=eth0
HWADDR=00:0C:29:A0:3A:CA
TYPE=Ethernet
UUID=bf583745-f834-451c-890c-39821a590543
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.207.128
NETMASK=255.255.255.0
DNS1=192.168.207.2
将每一台虚拟机都如此配置,IPADDR是ip地址,不要重复
2.修改网关及主机名
/etc/sysconfig/network
ETWORKING=yes
HOSTNAME=node1
NTPSERVERARGS=iburst
GATEWAY=192.168.207.2
一些文章中提到还需要修改VMware的设置(关闭本地DHCP服务),实际上,Centos 中设置好后就不需要动VMware的设置了
二、 在虚拟机中添加同名用户
在不同节点中需要有同名的用户以方便免密码SSH连接
node1和node2中以root用户执行下列命令
# useradd mpiuser
三、 实现免密码SSH登陆
当前节点为node1,用户为mpiuser,工作目录为 ~ 家目录
1.生成 SSH 私钥对
$ ssh-keygen -t rsa 一路回车就好
2.进入 .ssh 目录
$ cd ./.ssh
3.生成authorized_keys文件
$ cp id_rsa.pub authorized_keys
4.回到mpiuser的家目录
$ cd ~
5.建立本身的信任连接
$ ssh node1
6.设置 node2
$ ssh-keygen -t rsa 生成.ssh文件夹
$ scp node1:~/.ssh/* ./ 拷贝node1上的.ssh文件夹到node2
# scp node1:/etc/hosts /etc/hosts 拷贝node1上的hosts文件到node2,可能需要root权限
$ ssh node2
$ ssh node1
7.如果还有其他节点,设置方法同node2
设置成功后,在任意节点执行SSH连接其他节点都不需要密码,注意必需每个节点都有mpiuser这个用户,之所以使用一个普通用户,是为了避免root执行mpi程序时遇到风险。在一些mpi实现中,也不允许以root用户执行。
四、 配置MPI运行环境
1. 下载 mpich
官方网站 http://www.mpich.org 下载其中的mpich-3.2.tar.gz
2. 解压并进入目录
# tar xvf mpich-3.2.tar.gz
# cd mpich-3.2
# ./configure –prefix=/usr/local/mpich
# make
# make install
3. 设置环境变量,修改 /etc/profile ,加入下面几行代码
PATH=$PATH:/usr/local/mpich/bin
MANPATH=$MANPATH:/usr/local/mpich/man
export PATH MANPATH
4. 使刚刚的修改生效
# source /etc/profile
5. mpi多节点配置
新建一个配置文件
# touch /usr/local/mpich/servers
修改其中内容为:
node1:2 #在node1上运行两个进程
node2:2
如果有多个节点继续往下写
五、 单节点测试
将源码包中的 examples 拷贝到 mpich 的安装目录
# cp -r ./examples /usr/local/mpich/
用示例程序进行测试
$ mpirun -np 4 /usr/local/mpich/examples/cpi
Process 1 of 4 is on node1
Process 0 of 4 is on node1
Process 3 of 4 is on node1
Process 2 of 4 is on node1
pi is approximately 3.1415926544231239, Error is 0.0000000008333307
wall clock time = 0.081049
得到如图的回显结果证明mpich的运行环境正常
六、 多节点测试
$ mpiexec -np 4 -f /usr/local/mpich/servers /usr/local/mpich/examples/cpi
Process 1 of 4 is on node1
Process 0 of 4 is on node1
Process 3 of 4 is on node2
Process 2 of 4 is on node2
pi is approximately 3.1415926544231239, Error is 0.0000000008333307
wall clock time = 0.139722
如上,在两个节点上分别运行了两个进程,配置过程到此结束
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)