zoukankan      html  css  js  c++  java
  • MPI集群搭建

    高性能计算     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(尊重别人的知识产权)

  • 相关阅读:
    [WPF 自定义控件]好用的VisualTreeExtensions
    [UWP]从头开始创建并发布一个番茄钟
    [WPF 自定义控件]使用TextBlockHighlightSource强化高亮的功能,以及使用TypeConverter简化调用
    [WPF 自定义控件]排序、筛选以及高亮
    《写给大家看的设计书》,推荐给想了解设计的程序员
    [WPF 自定义控件]使用WindowChrome自定义RibbonWindow
    [书籍]通过《番茄工作法图解》复习番茄工作法
    [WPF 自定义控件]使用WindowChrome的问题
    [WPF 自定义控件]使用WindowChrome自定义Window Style
    时时监听input内容的改变
  • 原文地址:https://www.cnblogs.com/laysfq/p/11972910.html
Copyright © 2011-2022 走看看