Linux下基于MPI的hello程序设计

Linux下基于MPI的hello程序设计

  • 一、MPICH并行计算库安装
    • 实验环境部署
    • 创建SSH信任连接,实现免密钥互相连接
    • node1安装MPICH 3.4
    • 配置NFS
    • 注意(一定要先看)
    • 环境测试
  • 二、HELLO WORLD并行程序设计

一、MPICH并行计算库安装

在Linux环境下安装MPICH执行环境,配置MPD.CONF, 完成实验室中临近机器间的并行配置。

概要:以机房小组成员的四台计算机为例,小组成员设置IP(假定是192.168.1.1~192.168.1.4),更改主机名为node01,node02,node03, node04。

实验环境部署

在这里插入图片描述

主机地址规划(根据自己的环境进行规划)

主机名IP地址
node01192.168.176.134/24
node02192.168.176.13524
node03192.168.176.136/24
node04192.168.176.137/24

配置主机名(以一台服务器配置为例)

sudo hostnamectl set-hostname node01

配置IP地址
使用DHCP自动获取,不需要配置

在下载与安装编译环境之前,为了使软件包保持最新的状态,需要在命令行中输入命令

sudo apt -y install update

创建SSH信任连接,实现免密钥互相连接

配置/etc/hosts文件(每台服务器都需要配置)

sudo vim /etc/hosts

在这里插入图片描述

安装openssh-server(每台服务器都需要配置)

sudo apt -y install openssh-server

生成用户的公钥和私钥(每台服务器都需要配置)

ssh-keygen

在这里插入图片描述
发布公钥信息

node01作为master节点,由master统一接收各从节点的公钥信息保存在本机的authorized_keys中,再由master将authorized_keys文件发送给各其它从节点

# master收集自己的公钥信息追加到自己的认证文件中
cd /home/student/.ssh
cat id_rsa.pub >> authorized_keys

在这里插入图片描述

# 各从节点(node02,node03,node04)将自己的公钥信息追加到master的authorized_keys文件中
ssh-copy-id student@node01

在这里插入图片描述

查看node01的authorized_keys文件
在这里插入图片描述
将node01的authorized_keys文件发送给其它节点

cd /home/student/.ssh
scp authorized_keys student@node02:/home/student/.ssh/authorized_keys
scp authorized_keys student@node03:/home/student/.ssh/authorized_keys
scp authorized_keys student@node04:/home/student/.ssh/authorized_keys

在这里插入图片描述
关闭通过SSH时的登录提示(每台服务器都需要配置)

sudo vim /etc/pam.d/sshd

在这里插入图片描述

结果测试
以node04 SSH连接其它节点测试
在这里插入图片描述

node1安装MPICH 3.4

安装包路径:https://www.mpich.org/static/downloads/3.4/mpich-3.4.tar.gz

创建安装目录

sudo mkdir /usr/MPICH-install

将安装包放入/usr/MPICH-install

cd /usr/MPICH-install
wget https://www.mpich.org/static/downloads/3.4/mpich-3.4.tar.gz

在这里插入图片描述

解压安装包

sudo tar -zxvf mpich-3.4.tar.gz

设置安装目录

cd /usr/MPICH-install/mpich-3.4
sudo ./configure --prefix=/usr/MPICH-install

在这里插入图片描述
这里提示报错,提示没有gcc模块,我们需要安装相关编辑器

sudo apt -y install gcc
sudo apt -y install gfortran

又出现错误
在这里插入图片描述
根据提示加上 --with-device=ch4:ofi
加上之后再次运行,还会报错,根据提示加上--disable-fortran即可

sudo ./configure --disable-fortran --with-device=ch4:ofi --prefix=/usr/MPICH-install

在这里插入图片描述
又提示报错!!!这里提示没有c++模块,如果不需要根据提示加上--disable-c++即可,或者安装C++

# 第一种:
sudo ./configure --disable-fortran --with-device=ch4:ofi --disable-c++ --prefix=/usr/MPICH-install#第二种:
sudo apt -y install g++
sudo ./configure --disable-fortran --with-device=ch4:ofi --prefix=/usr/MPICH-install

终于成功了!
在这里插入图片描述

编译并安装

sudo make
sudo make install

提示找不到make命令???

在这里插入图片描述在使用Ubuntu时,有时会出现找不到make命令的问题。这是因为在Ubuntu系统中,默认是不安装make命令的,需要手动安装。> sudo apt -y install build-essential

再次执行make命令,如果还报错,报错信息如下,这应该是bug吧,我重新执行sudo ./configure --disable-fortran --with-device=ch4:ofi --prefix=/usr/MPICH-install,再执行make就好了。不理解!
在这里插入图片描述

执行make命令要等很长时间,耐心等待!
在这里插入图片描述
在这里插入图片描述
make install
在这里插入图片描述

修改环境变量

cd
vim .bashrc

在这里插入图片描述
测试环境变量设置

source .bashrc
which mpicc
which mpiexec
which mpirun

在这里插入图片描述

修改/etc/mpd.conf文件
内容为 secretword=myword

vim /etc/mpd.conf

在这里插入图片描述
修改文件读取权限和修改时间

chmod 600 /etc/mpd.conf

创建主机名称集合文件/home/student/mpd.hosts

vim mpd.hosts

在这里插入图片描述

配置NFS

为了方便 MPICH 的安装及并行程序的运行,最好将 MPICH的安装目录及用户家目录通过 NFS 网络文件系统共享。对于仅包含几个结点的较小的集群系统,可以任意指定其中一个结点作为 NFS服务器。对较大的集群系统,应设定一个或数个结点专门用于文件服务,这些结点称为 I/O 结点,它们专门负责存储设备的管理,不参加计算。这里选择 node01 作为 NFS 服务器,将它的 /home 和/usr/MPICH-nstall目录输出给其他三个结点,相应的配置步骤如下。

node1安装NFS服务

sudo apt -y install nfs-kernel-server

设置nfs和nfslock随系统启动
安装服务后,默认自启动

编辑文件/etc/exports

sudo vim /etc/exports

在这里插入图片描述

使配置生效

sudo exportfs

在这里插入图片描述

以root 身份登录到其余三个结点,在文件 /etc/fstab中加入下面两行

# 其它三个节点操作
sudo apt -y install nfs-common
sudo mkdir /usr/MPICH-install
sudo vim /etc/fstab
# 添加如下内容
node01:/home    /home   nfs     defaults        0       0
node01:/usr/MPICH-install       /usr/MPICH-install      nfs     defaults        0       0# 挂载
sudo mount -a

在这里插入图片描述
在这里插入图片描述

注意(一定要先看)

一:环境说明

由于我的环境下,都是使用的student普通用户,sudo提权到root用户进行配置的,ssh免密登录也是针对的student用户,而/usr/MPICH-install的目录的所有者是root,所以我这里要修改一下/usr/MPICH-install的属主和属组。或直接将这个文件夹权限改为777。

我建议在配置环境以及配置MPICH环境时,就使用root用户进行配置。

# 方法一: 修改属主和属组
sudo chown -R student:student /usr/MPICH-install
# 方法二: 修改文件夹权限
sudo chmod -R 777 /usr/MPICH-install

二:MPICH编译安装

mpich2版本和mpich3版本的进程管理默认使用hydra,而不是mpd。如果要使用mpd,使用配置MPICH时要添加参数./configure --with-pm=mpd

所有我的环境中没有使用mpdboot等mpd开头的命令。

环境测试

cd /usr/MPICH-install/mpich-3.4/examples
mpiexec ./cpi

在这里插入图片描述

这里的文件路径必须要有路径限定。否则会报错。
在这里插入图片描述

二、HELLO WORLD并行程序设计

程序源码:

/*hello.c*/
#include <stdio.h>
#include "mpi.h"int main( int argc, char *argv[] )
{int rank;int size;MPI_Init( 0, 0 );MPI_Comm_rank(MPI_COMM_WORLD, &rank);MPI_Comm_size(MPI_COMM_WORLD, &size);printf( "Hello world from process %d of %d\n", rank, size );MPI_Finalize();return 0;
}

在这里插入图片描述
程序编译,并运行

# 编译
mpicc -o helloworld helloworld.c
# 运行
mpiexec -n 10 -f /home/student/mpd.hosts ./helloworld

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/178630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【浅尝C++】C++类的6大默认成员函数——构造、析构及拷贝构造函数

&#x1f388;归属专栏&#xff1a;浅尝C &#x1f697;个人主页&#xff1a;Jammingpro &#x1f41f;记录一句&#xff1a;好想摆烂&#xff0c;又好想学习~~ 文章前言&#xff1a;本篇文章简要介绍C类的构造函数、析构函数及拷贝构造函数&#xff0c;介绍每个小点时&#xf…

【Linux专题】http(s)代理

【赠送】IT技术视频教程&#xff0c;白拿不谢&#xff01;思科、华为、红帽、数据库、云计算等等_厦门微思网络的博客-CSDN博客文章浏览阅读444次。风和日丽&#xff0c;小微给你送福利~如果你是小微的老粉&#xff0c;这里有一份粉丝福利待领取...如果你是新粉关注到了小微&am…

【objectarx.net】table问题2:添加table后,保存时出错

添加table后&#xff0c;保存时出现以上对话框。 原因&#xff1a; tb.TableStyle db.Tablestyle; 对于这句代码&#xff0c;tb所在的数据库和db不是同一个。

java反射和注解3-仿照retrofit组装接口参数

本片文章将用反射和注解仿照retrofit只需要传入一个带有给定注解的接口&#xff0c;通过调用接口就能直接将传入的数据和注解进行结合&#xff0c;生成对应参数 1&#xff0c;自定义注解 对字段的修饰 Retention(RetentionPolicy.RUNTIME) Target(ElementType.PARAMETER) pu…

Win7 SP1 x64 安装 Python 出错解决方法

1 双击安装 python-3.7.9.exe &#xff0c;提示出错&#xff0c;log.file 显示需要 KB2533623&#xff0c;但在Microsoft Update Catalog 没有搜到&#xff0c;实验 KB4474419 也可以。 2 Microsoft Update Catalog 搜索 KB4474419 &#xff0c;选择 x64 位&#xff0c;下载&am…

Cache学习(4):Cache分配策略Cache更新策略Cache逐出策略

Cache的数据流 常用名词 Allocation 分配Eviction 驱逐分配策略和更新策略分别为当产生Cache miss和Cache hit的时候数据流的具体行为 1 Cache分配策略&#xff08;Cache Allocation Policy&#xff09; Cache的分配策略是指不同情况下为数据分配Cache Line的不同行为。Cac…

基本数据结构二叉树(3)

目录 4.二叉树链式结构的操作 4.1 前置说明 4.2二叉树的遍历 4.2.1 前序、中序以及后序遍历 4.3 节点个数以及高度等 4.二叉树链式结构的操作 4.1 前置说明 由于博主对二叉树的结果掌握还不够深入&#xff0c;因此在讲解相关操作前将手动创建一颗简单的二叉树&#xff0c…

金字塔原理 读书笔记

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言第1篇 表达的逻辑第1章 为什么要用金字塔结构归类分组&#xff0c;将思想组织成金字塔自上而下表达&#xff0c;结论先行自下而上思考&#xff0c;总结概括 第2…

Unity 接入TapADN播放广告时闪退 LZ4JavaSafeCompressor

通过跟踪安卓日志&#xff0c;发现报如下错误 Didnt find class "com.tapadn.lz4.LZ4JavaSafeCompressor" 解决方案&#xff1a; 去掉Minify这边的勾选&#xff0c;再打包即可。

trino push down fliter

依据trino 432 版本而写 1. 调用链 2. 先是元数据&#xff0c;然后做扫描数据层的filter pushFilterIntoTableScan

数据导入与预处理-第7章-数据清理工具OpenRefine

文章目录 数据清理工具OpenRefineOpenRefine简介下载与安装配置创建项目操作列收起列移动列和重排列移除该列与移除列重新定义列标题撤销与重做导出数据 进阶操作数据排序数据归类重复检测数据填充文本过滤数据转换 总结 数据清理工具OpenRefine OpenRefine简介 OpenRefine是…

深度学习之基于百度飞桨PaddleOCR图像字符检测识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介主要特点使用步骤 二、功能三、系统四. 总结 一项目简介 # Introduction to PaddleOCR Image Character Detection and Recognition System Based on Baidu…

静态住宅IP代理实际应用:它的强大用途你知道吗?

静态住宅IP代理与动态IP代理相比&#xff0c;提供了更稳定的网络身份&#xff0c;使得企业在进行数据采集、区域定位营销和市场研究时更为高效。同时&#xff0c;它也是提高在线隐私保护和避免封禁的有效工具。 通过详细分析&#xff0c;你将能全面了解静态住宅IP代理的应用&a…

SAP_ABAP_编程基础_字符转换_内存表、jsonString 相互转换

SAP ABAP 顾问&#xff08;开发工程师&#xff09;能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读441次。目标&#xff1a;基于对SAP abap 顾问能力模型的梳理&#xff0c;给一年左右经验的abaper 快速成长为三年经验提供超级燃料&#xff01;https://blog.csdn.net/j…

【力扣:1707 1803】0-1字典树

思路&#xff1a;树上每个节点存储拥有该节点的数组元素的最小值&#xff0c;left节点表示0&#xff0c;right节点表示1&#xff0c;构建完成后遍历树当子节点没有比mi小的元素时直接输出-1&#xff0c;否则向下构造。 struct tree{int m;tree*leftnullptr,*rightnullptr;tree…

【传智杯】儒略历、评委打分、萝卜数据库题解

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; 蓝桥杯 &#x1f319;请不要相信胜利就像山坡上的蒲公英一样唾手…

pandas教程:2012 Federal Election Commission Database 2012联邦选举委员会数据库

文章目录 14.5 2012 Federal Election Commission Database&#xff08;2012联邦选举委员会数据库&#xff09;1 Donation Statistics by Occupation and Employer&#xff08;按职业与雇主划分的捐赠数据&#xff09;2 Bucketing Donation Amounts&#xff08;桶捐赠额&#x…

vue项目实战-电商后台管理系统

项目简介&#xff1a; 该项目为电商后台的管理系统。设计了登录页面。 管理人员需要通过输入正确的用户名和密码才能登录。登陆成功之后进入管理页面&#xff1a; 管理页面由五个子模块组成&#xff1a;用户管理&#xff0c;权限管理&#xff0c;商品管理&#xff0c;订单管理…

实验八-数据处理

目录 1.数据来源 2.对于All表&#xff1a; 3.对于sf 和sfweibo 表&#xff1a; 4. 对于base_info表&#xff1a; 5.导出最后结果到一个Excel文件中&#xff0c;完成数据处理。 1.数据来源 本次所分析的数据是通过爬虫抓取的微博数据。选取新浪微博为数据平台&#xff0c;选…

STM32CubeIDE(ADC)

学习链接&#xff1a;【HAL库详解】STM32 ADC HAL库使用_哔哩哔哩_bilibili 目录 一、概念 1、ADC介绍 2、ADC主要特征 二、ADC模式 1、查询模式 1.1 单通道采集软件配置 1.2 查询模式步奏 1.3 单通道采集主要代码 2、多通道采集 2.1 软件配置 2.2 主要代码 一、概…