ubuntu mpi多机实践

简介:

好不容易实验室来了两台性能还可以的服务器,正好师兄师姐比较忙没空来配置服务器,所以我可以暂时使用服务器来学一下怎么配置集群,哈哈,单机已经满足不了我了。
首先,我们那比较简单的mpich进行开刀,配置一个简单的mpich集群。
先介绍一下MPI:
MPI 全称Message Passing Interface 消息传递接口,是一种编辑接口标准,而不是一种具体的编辑语言。该标准是由消息传递论坛(MEssage Passing Interface Form,简称MPIF)发起讨论并进行规范化的。
MPI标准从1992年开始起草,1994年发布第一个版本MPI-1(MPI v1.0,进而发展出1.1和1.2版),到1997年发布第二个版本MPI-2(MPI v2.0)。MPI标准如今已经成为事实意义上的消息传递并行编程标准,也是最为流行的并行编程接口。
由于MPI提供了统一的接口,该标准受到各种并行平台上的广泛支持,这也使得MPI程序具有良好的可移植性。目前,MPI支持多种编程语言,包括Fortran77,Fortran90以及C/C++,目前看到的是python,java也支持了mpi;尽管MPI属于OSI参考模型的第五层或者更高,他的实现可能通过传输层的sockets和Transmission Control Protocol (TCP)覆盖大部分的层;MPI还支持多核(Multicore)、对称多处理机(SMP)、集群(Cluster)等各种硬件平台。
我们这边使用的是MPICH,是由阿公国家实验室和芝加哥大开发的,是一个开源软件开源在http://www.mpich.org/上下载到。
首先从http://www.mpich.org/downloads上下载mpich源码。

我们这里使用了mpich-3.2.1版本
下载好后,

tar -zxvf mpich-3.2.1.tar.gz
cd mpich-3.2.1
./configure -prefix=/usr/local/mpich

prefix参数表示安装的路径
接下来:

make
sudo make install

mpich被安装在/usr/local/mpich目录下面
接下来添加环境变量:

sudo vi /etc/profile

在末尾添加

export PATH=/usr/local/mpich/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/mpich/lib:$LD_LIBRARY_PATH

接着执行

source /etc/profile

使环境变量生效
可以在mpich-3.2.1目录下面运行:

cp -r examples/ /usr/local/mpich
mpiexec -n 10 /usr/local/mpich/examples/cpi

如果最后输出的无误,则到这里单机版本的mpich环境配置好了。
接下来配置多机版本,
这里设置有两台机器,主机为A,从机为B
现在A,B两机上按上述方法配置mpich
这里MPI是使用ssh进行消息的传递
所以先在A,B两台机器上下配置ssh:

sudo apt-getinstallopenssh-server
/etc/init.d/ssh start

为了方便我们对B机进行ssh无密码登陆访问的设置
在A机上生成公钥

ssh-keygen -t rsa

按提示输入三次回车,在默认的~/.ssh目录下生成一个公钥
在A机上执行

scp /home/A'sname/.ssh/id_rsa.pub B'name@B'sIP:/home/B'sname/.ssh/authorized_keys

其中A‘sname,B’s name为A,B机的用户名,B'sIP为B的ip地址,可以在B机上用ifconifg看到
这时候可以在A机上直接用

ssh B'sname@B'sIP

登陆B机
如果A,B两机的登陆用户名相同可以简化为:

ssh B'sIP

如出现:Could not open a connection to your authentication agent.

 eval `ssh-agent -s`
 ssh_add

接下来在mpich3.2.1目录下,创建machinefile,里面填写其他机器的用户名,IP和线程数:
B'sname@B'sIP:thread count
C'sname@C'sIP:thread count

mpiexec -n 10 -machinefile ./machinefile /usr/local/mpich/examples/cpi 

用多机来计算圆周率
测试在多机上执行时要注意在两台机器相同路径上有相同的文件
如果使用python的话可以安装mpi4py
下面是openmp与mpi之间的区别:
openmp 全称 Open Multi-Processing是一套支持跨平台共享内存方式的多线程并发的编程API(当然多核还可以用OPENCL),openmp的编程方式有点像openacc的编辑形式,在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。现在常用的编译器如Visual Studio都支持openmp,只需要加入mpi.h的头文件,不过openmp是线程上的并发,所以是共享内存的,无法多机并发,这与mpi有区别。
但mpi的编程比较繁琐,由此出现的openmp+mpi组合的形式
部分来自网络
timg_1_

目录
相关文章
|
并行计算 Ubuntu 网络安全
ubuntu上进行mpi环境搭建-通往hpc的第一步
好不容易实验室来了两台性能还可以的服务器,正好师兄师姐比较忙没空来配置服务器,所以我可以暂时使用服务器来学一下怎么配置集群,哈哈,单机已经满足不了我了。
2179 0
|
22天前
|
Ubuntu NoSQL 关系型数据库
Ubuntu系统下安装常用软件
Ubuntu系统下安装常用软件
45 0
Ubuntu系统下安装常用软件
|
1月前
|
Ubuntu Linux C语言
Ubuntu下安装vscode,并解决终端打不开vscode的问题
Ubuntu下安装vscode,并解决终端打不开vscode的问题
135 0
|
2月前
|
存储 Ubuntu 网络协议
|
1月前
|
Ubuntu Docker 容器
如何在Ubuntu上安装Docker?
【2月更文挑战第10天】
243 0
|
2月前
|
负载均衡 Ubuntu 应用服务中间件
|
24天前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 中apt 安装MySQL数据库
Ubuntu 中apt 安装MySQL数据库
66 0
|
3天前
|
Ubuntu 数据安全/隐私保护
在UBUNTU虚拟机上安装R软件包
在UBUNTU虚拟机上安装R软件包
|
3天前
|
存储 编解码 Ubuntu
0-零基础安装ubuntu(超详细安装步骤)
0-零基础安装ubuntu(超详细安装步骤)
|
4天前
|
Ubuntu Linux 定位技术
手把手教你优雅的安装虚拟机 Ubuntu —— 图文并茂
手把手教你优雅的安装虚拟机 Ubuntu —— 图文并茂