高性能计算     ubantu下集群搭建

参考博客:https://blog.csdn.net/u012304016/article/details/52423738(尊重别人的知识产权),一些细节地方我做了标注

废话不多说,直接开始讲解

==============================================================

1.安装MPICH

在安装mpich之前,为了避免在安装中出错,需要安装gcc、g++以及gfortran三个编译器。

首先更新apt-get的安装版本,从而保证安装的资源最新:

sudo apt-get update

分别安装gcc、g++以及gfortran:

sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install gfortran

==============================================================

下面开始mpich的安装,mpich源码的包,我上传到了百度云里面了,有需要自取。

链接:https://pan.baidu.com/s/1Fd7vvs3LBpDtCKw4x6IpkQ
提取码:a3ad

压缩包解压后,将解压出来的文件夹,在主目录下创建一个新的文件夹,(可命名为“MPICH”)注意两台电脑上面这一文件夹的名字必须一样,路径也必须一样

进入解压后的文件夹里面,

接下来的安装过程根据shell的版本而异,首先检查shell版本:

cat /etc/shells

(1)

如果显示为:/bin/sh 和 /bin/bash,则配置、编译和安装命令分别为:(大部分都是这个)

配置:

./configure 2>&1 | tee c.txt

编译:

make 2>&1 | tee m.txt (如果报错,需要加一个sudo)

安装:

make install |& tee mi.txt ((如果报错,需要加一个sudo))

(2)

如果显示为:/bin/csh 和 /bin/tcsh,则配置、编译和安装命令分别为:

配置:

./configure |& tee c.txt

编译:

make |& tee m.txt

安装:

make install |& tee mi.txt

(安装结束后,用which mpicc和which mpiexec检查安装是否成功,如果有这两个可执行程序的路径显示,则表示安装成功。)

2. 安装ssh并且配置多机运行环境

安装ssh:

sudo apt-get install ssh

!!!接下来需要两台机器在同一个局域网下面

(1)接下来正式配置多机运行环境,首先修改两台开发板各自的主机名称:

sudo gedit /etc/hostname

在打开的文件中分别输入主机名保存即可,我设置的两台主机名称分别为:hang-pc1 和hang-pc2。设置完成后重启机器。

(2)分别配置两台机器的hosts文件,在此之前先通过ip addr show命令查看两台机器eth0的IP地址,我的IP地址为:

然后分别将两台机器的ip地址放在对应的位置(下面统一标注IP1和IP2)

hang-pc1 : IP1

hang-pc2 : IP2

然后修改hosts文件:

sudo gedit /etc/hosts

根据以上查得的IP地址,在两台机器的hosts文件中均输入以下内容并保存:(IP1 和主机名中间的间隔是用"Tab"键按出来的)

IP1 hang-pc1

IP2 hang-pc2

(3)

接下来通过配置ssh使两台机器可以无需密码互相访问。

在hang-pc1上(hang-pc2同理)通过ssh-keygen指令生产公钥和私钥:

ssh-keygen -t rsa

注:再输入过程中需要输入参数,一直按回车即可。

结束后,cd到 ~/.ssh目录,ls一下即可看到产生的公钥(id_rsa.pub)和私钥(id_rsa):

cd ~/.ssh

ls

接下来通过两台机器的公钥(id_rsa.pub)来制作授权文件(authorized_keys)。

(4)接下来将hang-pc2的公钥传送到hang-pc1中(并重命名为rsa_from_pc2.pub),来制作授权文件。在hang-pc2的终端输入:

scp ~/.ssh/id_rsa.pub hang-pc1:~/.ssh/rsa_from_pc2.pub (这个命令中hang-pc1前面需要加上你的用户名和@,比如我的就要加上lays@)

注:在传输期间需要输入hang-pc1的密码,输入之前设置好的密码即可。

传输完成后,在hang-pc1的~/.ssh/id_rsa.pub目录下ls一下即可看到传入的文件rsa_from_pc2.pub。

将hang-pc1的公钥另复制一份并且重命名为authorized_keys,在hang-pc1的~/.ssh/目录下输入:

cp ~/.ssh/id_rsa.pub authorized_keys

将rsa_from_pc2.pub添加到authorized_keys从而完成authorized_keys的制作:

cat ~/.ssh/rsa_from_pc2.pub >> authorized_keys

然后将在hang-pc1上制作好的authorized_keys发送一份给hang-pc2:

scp ~/.ssh/authorized_keys hang-pc2:~/.ssh/ (这个命令中hang-pc2前面需要加上你的用户名和@)

用ssh_add命令将私钥也添加进来(hang-pc1和hang-pc2均要添加):

ssh-add ~/.ssh/id_rsa

最后,为了要让两台机器之间无密码访问,需要设置公钥、私钥和授权文件的权限(两台机器都要设置):

chmod 755 ~

chmod 755 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

chmod 600 ~/.ssh/id_rsa

chmod 644 ~/.ssh/id_rsa.pub

权限设置完毕后,两台机器就可以不需密码互相访问了,在hang-pc1上输入指令:

ssh hang-pc2

可以看到,hang-pc1不需输入密码就能访问到hang-pc2。通过exit指令返回到hang-pc1。

3.多机之间运行MPI程序

首先,在home根目录(也可以是其他目录)下新建一个文件:mpi_config_file。

mpi_config_file是在运行MPI程序时参考的配置文件,它显式注明每台机器各有几个CPU核。

cd /home

touch mpi_config_file

接下来在每台机器上查看各自的CPU核数:

lscpu

编辑mpi_config_file:

sudo gedit mpi_config_file

因为我和队友的CPU核数分别为2和4,所以在mpi_config_file中输入一下内容并保存:

hang-pc1:2
hang-pc2:4

接下来就可以找一个MPI程序在多机之间运行了

在我们之前解压的文件夹下的examples目录下就有现成的可执行程序:cpi,我们运行它:

(在这之前,为了保证两台机器上面的文件夹的名字和路径都是一样,就将这个文件夹都移动到/home目录下

比如我就是 sudo cp -r /home/lays/MPICH /home   就将这个复制一下到了/home目录下

然后进入到文件夹examples目录下打开终端,运行
mpiexec -n 8 -f /home/mpi_config_file ./cpi

注: 参数-n 8表示改程序分将拆分为8个并行过程执行
参数-f /home/mpi_config_file 表示运行过程参考配置文件mpi_config_file

屏幕上显示运行结果:

Process 4 of 8 is on hang-pc1
Process 5 of 8 is on hang-pc1
Process 2 of 8 is on hang-pc2
Process 0 of 8 is on hang-pc1
Process 3 of 8 is on hang-pc2
Process 6 of 8 is on hang-pc2
Process 7 of 8 is on hang-pc1
Process 1 of 8 is on hang-pc2

表示运行成功。(显示进程在不同的主机上运行)

====================================================================================================================================

再次说明一下  

参考博客:https://blog.csdn.net/u012304016/article/details/52423738(尊重别人的知识产权)

MPI集群搭建的更多相关文章

  1. 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)

    Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  2. 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)

    Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  3. 【Data Cluster】真机环境下MySQL数据库集群搭建

    真机环境下MySQL-Cluster搭建文档  摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...

  4. (四)Spark集群搭建-Java&Python版Spark

    Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...

  5. (三)Spark-Hadoop集群搭建-Java&Python版Spark

    Spark-Hadoop集群搭建 视频教程: 1.优酷 2.YouTube 配置java 启动ftp [root@master ~]# /etc/init.d/vsftpd restart 关闭 vs ...

  6. Mosquitto搭建Android推送服务(三)Mosquitto集群搭建

    文章钢要: 1.进行双服务器搭建 2.进行多服务器搭建 一.Mosquitto的分布式集群部署 如果需要做并发量很大的时候就需要考虑做集群处理,但是我在查找资料的时候发现并不多,所以整理了一下,搭建简 ...

  7. Mongodb集群搭建的三种方式

    转自:http://blog.csdn.net/luonanqin/article/details/8497860 MongoDB是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key- ...

  8. 分布式架构中一致性解决方案——Zookeeper集群搭建

    当我们的项目在不知不觉中做大了之后,各种问题就出来了,真jb头疼,比如性能,业务系统的并行计算的一致性协调问题,比如分布式架构的事务问题, 我们需要多台机器共同commit事务,经典的案例当然是银行转 ...

  9. 从零自学Hadoop(06):集群搭建

    阅读目录 序 集群搭建 监控 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一 ...

随机推荐

  1. 多项式求值问题(horner规则)——Python实现

    # 多项式求值(Horner规则) # 输入:A[a0,a1,a2...an],x的值 # 输出:给定的x下多项式的值p   # Horner迭代形式实现 1 # 在此修改初值 2 A = [2, 6 ...

  2. 《手把手教你》系列技巧篇(十三)-java+ selenium自动化测试-元素定位大法之By partial link text(详细教程)

    1.简介 本文按计划就要开始介绍partial link text,顾名思义是通过链接定位的(官方说法:超链接文本定位).什么是partial link text呢,看到part这个单词我们就可以知道 ...

  3. IDEA使用Tomcat时控制台乱码的解决方案>从零开始学JAVA系列

    IDEA使用Tomcat时控制台乱码的解决方案 解决方案1,修改启动时虚拟机参数 解决方案2,修改idea的设置 解决方案3,修改idea配置文件 在最后添加一行 '-Dfile.encoding=U ...

  4. Arp欺骗和DNS投毒

    中间人攻击 ARP缓存攻击 ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的网络层,负责将某个IP地址解析成对应的MAC地址.简单来说,就 ...

  5. Apache Superset1.2.0教程(四)—— CentOS环境安装

    前文中,我们已经在windows环境进行了superset的安装,也对图表功能进行了展示.但是在平时使用以及生产环境中,还是需要在centos环境下进行操作. 本文将带大家详解在centos7环境进行 ...

  6. 10 个超棒的 JavaScript 简写技巧

    今天我要分享的是10个超棒的JavaScript简写方法,可以加快开发速度,让你的开发工作事半功倍哦. 开始吧! 1. 合并数组 普通写法: 我们通常使用Array中的concat()方法合并两个数组 ...

  7. Using Evernote with Wine on Mint

    Install Evernote Install Evernote in Wine: wine Evernote_xxx.exe; Backup Evernote Database File Loca ...

  8. JavaWeb项目实战-油画商城

    整个项目都已经上传到github-mmgallery上,供有需要的读者使用,主要文件来自于csdn,区别是csdn中的项目数据存储在MySQL中,本项目数据存储在Xml文件中.课件和学习视频课程来自M ...

  9. 【笔记】简谈L1正则项L2正则和弹性网络

    L1,L2,以及弹性网络 前情提要: 模型泛化与岭回归与LASSO 正则 ridge和lasso的后面添加的式子的格式上其实和MSE,MAE,以及欧拉距离和曼哈顿距离是非常像的 虽然应用场景不同,但是 ...

  10. docker 安装部署 redis(配置文件启动)

    获取 redis 镜像 docker pull redis:4.0.12 docker images 创建容器 创建宿主机 redis 容器的数据和配置文件目录 # 创建宿主机 redis 容器的数据 ...