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
ubuntu 安装MPI
1220 0
ubuntu 安装MPI
|
并行计算 Ubuntu 网络安全
ubuntu上进行mpi环境搭建-通往hpc的第一步
好不容易实验室来了两台性能还可以的服务器,正好师兄师姐比较忙没空来配置服务器,所以我可以暂时使用服务器来学一下怎么配置集群,哈哈,单机已经满足不了我了。
2526 0
|
Ubuntu Linux
任何Ubuntu用户都应安装的四大Linux应用程序
当然,这款程序不需要太多介绍。我们面对的是网上最庞大最完整的多媒体中心,由于丰富的插件,我们能够高度细化地定制其每一项功能。这是我们的Linux发行版不可或缺的必备软件。 我们可以通过运行以下命令来轻松安装Kodi:sudo apt install kodi。
|
Ubuntu 物联网 Linux
从零安装一个Linux操作系统几种方法,以Ubuntu18.04为例
一切就绪后,我们就可以安装操作系统了。当系统通过优盘引导起来之后,我们就可以看到跟虚拟机中一样的安装向导了。之后,大家按照虚拟机中的顺序安装即可。 好了,今天主要介绍了Ubuntu Server版操作系统的安装过程,关于如何使用该操作系统,及操作系统更深层的原理,还请关注本号及相关圈子。
|
Ubuntu Linux 网络安全
Linux服务器之Ubuntu的安装与配置
Ubuntu Desktop是目前最成功、最流行的图形界面的Linux发行版;而Ubuntu Server也在服务器端市场占据了较大的份额。今天为大家详细介绍了Ubuntu Server的安装与配置,希望对你能有所帮助。关于VMware、VirtualBox等虚拟化软件的使用,朱哥还会在后续的文章中为大家详细介绍,敬请关注!
|
12月前
|
Ubuntu 安全 iOS开发
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
1390 5
|
12月前
|
NoSQL Ubuntu MongoDB
在Ubuntu 22.04上安装MongoDB 6.0的步骤
这些步骤应该可以在Ubuntu 22.04系统上安装MongoDB 6.0。安装过程中,如果遇到任何问题,可以查阅MongoDB的官方文档或者Ubuntu的相关帮助文档,这些资源通常提供了解决特定问题的详细指导。
1085 18
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
565 18
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
786 15
|
存储 Ubuntu iOS开发
在Ubuntu 22.04系统上安装libimobiledevice的步骤
为了获取更多功能或者解决可能出现问题,请参考官方文档或者社区提供支持。
1093 14