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
ubuntu 安装MPI
|
并行计算 Ubuntu 网络安全
ubuntu上进行mpi环境搭建-通往hpc的第一步
好不容易实验室来了两台性能还可以的服务器,正好师兄师姐比较忙没空来配置服务器,所以我可以暂时使用服务器来学一下怎么配置集群,哈哈,单机已经满足不了我了。
2261 0
|
4月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
307 2
|
4月前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
6524 3
|
5天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
104 15
|
26天前
|
弹性计算 Ubuntu Java
OS-Copilot-ubuntu镜像版本的具体测试使用(安装方式有单独注明)
作为一名个人开发者,我主要负责云资源的运维和管理。在使用OS Copilot的过程中,我遇到了一些配置问题,特别是在ECS实例中设置AccessKey时,但最终成功解决了。通过使用OS Copilot的-t/-f/管道功能,我大大提升了效率,减少了命令编写的工作量,特别是在搭建Java运行环境时效果显著。此外,| 功能帮助我快速理解文档,整体体验非常流畅,推荐给其他开发者使用。
39 6
|
2月前
|
JSON Ubuntu 开发者
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
181 13
|
2月前
|
监控 关系型数据库 MySQL
Ubuntu24.04安装Librenms
此指南介绍了在Linux系统上安装和配置LibreNMS网络监控系统的步骤。主要内容包括:安装所需软件包、创建用户、克隆LibreNMS仓库、设置文件权限、安装PHP依赖、配置时区、设置MariaDB数据库、调整PHP-FPM与Nginx配置、配置SNMP及防火墙、启用命令补全、设置Cron任务和日志配置,最后通过网页完成安装。整个过程确保LibreNMS能稳定运行并提供有效的网络监控功能。
|
3月前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
718 50
|
2月前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
1283 12