seo 哪些媒体网站可以发新闻,商城网站开发技术,电商平台怎么推广比较好,seo平台是什么意思Linux下基于MPI的hello程序设计 一、MPICH并行计算库安装实验环境部署创建SSH信任连接#xff0c;实现免密钥互相连接node1安装MPICH 3.4配置NFS注意(一定要先看)环境测试 二、HELLO WORLD并行程序设计 一、MPICH并行计算库安装
在Linux环境下安装MPICH执行环境#xff0c;配… 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/24node02192.168.176.13524node03192.168.176.136/24node04192.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 studentnode01查看node01的authorized_keys文件 将node01的authorized_keys文件发送给其它节点
cd /home/student/.ssh
scp authorized_keys studentnode02:/home/student/.ssh/authorized_keys
scp authorized_keys studentnode03:/home/student/.ssh/authorized_keys
scp authorized_keys studentnode04:/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-devicech4:ofi 加上之后再次运行还会报错根据提示加上--disable-fortran即可
sudo ./configure --disable-fortran --with-devicech4:ofi --prefix/usr/MPICH-install又提示报错这里提示没有c模块如果不需要根据提示加上--disable-c即可或者安装C
# 第一种:
sudo ./configure --disable-fortran --with-devicech4:ofi --disable-c --prefix/usr/MPICH-install#第二种:
sudo apt -y install g
sudo ./configure --disable-fortran --with-devicech4: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-devicech4:ofi --prefix/usr/MPICH-install再执行make就好了。不理解 执行make命令要等很长时间耐心等待 make install
修改环境变量
cd
vim .bashrc测试环境变量设置
source .bashrc
which mpicc
which mpiexec
which mpirun修改/etc/mpd.conf文件 内容为 secretwordmyword
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-pmmpd
所有我的环境中没有使用mpdboot等mpd开头的命令。
环境测试
cd /usr/MPICH-install/mpich-3.4/examples
mpiexec ./cpi这里的文件路径必须要有路径限定。否则会报错。 二、HELLO WORLD并行程序设计
程序源码:
/*hello.c*/
#include stdio.h
#include mpi.hint 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