在Ubuntu下用MPICH和Intel Fortran 进行并行计算

以下是最近Y某在用mpi进行某程序并行运算时所做的设置的一些总结,由于intel fortran(在intel cpu上)的效率,所以想要配置intel fortran 实现并行,放在这里记录备用吧……

至于什么是mpi,自己看有关介绍。
主节点master node 就是控制其他节点进行运算的计算机,我们这里起名为node0。
从节点slave node 嗯,就是进行计算的节点,起名为node1 ~ noden

1. 设置网络文件系统NFS(Network File System/Need for Speed),这是进行并行计算的基础,所有的节点必须能够读写同一个网络路径才可以进行同步计算。需要注意的是,如果你只是在一台电脑上运行这一程序(比如你有多个处理器或者多核),你可以跳过这一步直接进行第二步……

首先要安装NFS server
sudo apt-get install nfs-kernel-server
设置一下共享
首先在主节点(master node)建立一个共享文件夹,或者也可以自己指定一个……
sudo mkdir /sharing
设置共享
sudo cat /mirror *(rw,sync) >> /etc/exports
之后就可以运行nfs服务端
sudo /etc/init.d/nfs-kernel-server start

要进行运算,在每一个从节点(slave node)中都需要设置映射主节点的目录……
首先加入主节点的ip
sudo cat  xxx:xxx:xxx:xxx node0 >> /etc/hosts  #不会有人把xxx输进去吧…
在从节点里面进行映射……
sudo mkdir /sharing
sudo mount node0:/sharing /sharing

2. 接下来要设置ssh(secure shell),防止每次你运行mpi程序都要输n遍密码(有多少个线程就多少次……),如果你的系统安全要求不那么高,也可以选择使用rsh(其实我只是懒得设置rsh)

首先你要装上它……
sudo apt-get install ssh
之后在主节点上生成DSA key,注意在运行的时候把密码留空
ssh­-keygen ­-t dsa
把密钥加入到受信任密钥中:
cd  ~/.ssh
cat id_dsa.pub >> authorized_keys
就可以了,之后可以试着用ssh username@machinename 来连接。另外,所有的节点必须有一个同样的用户(如mpiusr),以便主节点通过ssh(远程登录)的方式与其他节点进行通信,并控制其他节点进行运算。

3. 之后要做的是装interl fortran,请参看这里……顺便,现在的Intel fortran for linux 改名成了Intel? Fortran Composer XE 2011 for Linux and Mac OS X,诡异的名字……

4. 然后(终于)要安装mpi了:
首先,实际上能够使用的mpi版本有很多,可以在Ubuntu上面安装的主要有openmpi,mpich,和mpich2,总体来说,这些版本大同小异,而且……其实尽管有的版本叫做open,有的没有,它们都是开源软件……我这里安装的是mpich2,其他的版本跟这个的设置差不多。另外,其实intel有自己的mpi,还有个什么parallel studio什么的,而且效率很高,不过那个是要收费……买不起

对于基于debian发行版的用户来说,很简单:
sudo apt-get install mpich2 #注意这里是安装了mpich2 而非mpich

或者,如果想要更新的版本,也可以选择去其官方网站上下载源码安装:

大概一顿configure 和一顿sudo make install 就可以了……

一点点设置:
首先要在家目录下~/ 建立一个mpd.host文件,这样主机才能知道有多少台机器可以供它驱使,比如包含如下的内容:
localhost
node1
node2

noden

之后建立一个conf文件用于设置口令,比如:
cat secretword=lalala >>  ~/.mpd.conf
之后确保只有你自己能读:
chmod 600 ~/.mpd.conf

之后就大功告成!可以尝试着使用mpdboot -n N #(N=你有的节点数)启动后台程序。
可以使用mpitrace来查看有那些节点被使用了……

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23355.html