zoukankan      html  css  js  c++  java
  • 无需超级用户mpi多机运行

    在之前的一篇博文中(Linux下mpi环境配置与运行步骤(Ubuntu为例) ),有讨论过怎样使用MPI在两个不同的机器上运行程序,在那篇博文中使用了超级用户权限。不幸的是。有些情况下,我们不能拥有操作系统的超级用户权限,导致我们不能改动除用户文件夹以外的文件夹。因此写这篇博文讨论怎样使用普通用户来实现mpi程序的编译和双机器运行。如果知道了如果双机器运行,多机器道理是相通的。


    此文针对没有多少linux经验的读者,仅仅要你会打开终端。这个问题能够被非常好的解决。



    前提

    如果有两台机器,两台机器的主机名称分别为A、B,而且知道两台机器的IP(如果你不知道,请咨询管理员)。如果A机器的IP为192.168.1.5,机器B的ip为192.168.1.6。

    如果在两台机器上有同一个username为讲述方便,临时如果这个username为demo;

    如果两台机器上安装了全然同样的mpi版本号。


    不满足如果条件,请绕行。


    步骤

    完毕无需超级用户mpi程序的编译和运行。分以下几步:

    1、设置两台机器上PATH。使得在两台机器上分别能够运行mpicc --version命令。

    2、设置两台机器相互之间能够免password登陆。

    3、运行自己的程序


    1、设置两台机器上的PATH

    如果你如今在A机器上,使用的是demo账户。

    打开终端(Terminal),运行例如以下命令:

    mpicc --version

    如果上面的命令得到相似例如以下结果。直接能够去第2步:

    gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
    Copyright (C) 2013 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    如果得到相似例如以下结果,则继续。

    mpicc: command not found

    打开终端,运行例如以下命令

    echo "export PATH=`locate mpicc | grep -v '^/home/' | grep -E '/mpicc$' | sed 's//mpicc$//'`:$PATH" >> ~/.bashrc

    关闭终端。打开一个新的终端,再运行mpicc --version看看结果是否正确。如果还是不对,这里就临时不写此种情况下的解决方式了(穷尽全部情况太麻烦了)。

    运行例如以下命令来登陆B机器(前提中如果了B机器的IP为192.168.1.6),在提示输入password的时候。输入用户的password。由于我们如果用的是demo用户,你此时要输入的是demo的password。注意password并不显示。输入完毕后,直接敲击回车就可以。

    ssh demo@192.168.1.6

    如果成功登陆。运行例如以下命令:

    echo "export PATH=`locate mpicc | grep -v '^/home/' | grep -E '/mpicc$' | sed 's//mpicc$//'`:$PATH" >> ~/.bashrc

    然后运行exit命令退出机器B。


    2、设置两台机器之间相互无password登陆。


    仍然如果如今用的是机器A(IP为192.168.1.5),打开终端,运行例如以下命令

    ssh-keygen -t rsa

    上面的命令在运行的时候可能要等待你的输入,不要输入不论什么内容,直接敲击回车就可以。


    运行例如以下命令:

    ssh demo@192.168.1.6 mkdir -p .ssh

    运行上述命令后,会等待你输入demo在机器B(如果的IP为192.168.1.6)上的password。输入password后,敲击回车。

    运行例如以下命令:

    cat .ssh/id_rsa.pub | ssh demo@192.168.1.6 'cat >> .ssh/authorized_keys'

    运行例如以下命令,以登陆B机器:

    ssh demo@192.168.1.6

    继续运行例如以下命令:

    ssh-keygen -t rsa

    遇到让输入yes或者no的地方是如yes或者y。遇到其它情况的等待输入,一律敲击回车。

    cat .ssh/id_rsa.pub | ssh demo@192.168.1.5 'cat >> .ssh/authorized_keys'

    最后运行例如以下命令,以推出机器B

    exit

    完毕上面的命令后。就能够实现demo用户在两个机器之间无password相互登陆了。


    3、运行自己的程序

    仍然如果你在A机器上,ip的相关如果继续保持。

    将程序复制到A机器上。对于没有linux经验的读者。请特别注意你拷贝的程序在哪个文件夹下,如果你不能在终端下找到自己的程序,那么这一切你都白做了。

    如果你的程序复制到了A机器的/home/demo/文件夹下,那么你打开终端之后。运行 cd ~/ 就可以进入这个文件夹。

    在终端中进入源码文件夹后,如果你的程序有Makefile,直接运行make命令就可以(一般人写的makefile,这样运行会产生可运行文件的。如果不是一般人写的,请咨询写makefile的人)。


    由于我们使用的两个机器是独立的,他们之间没有共享磁盘,你若要使用mpi在两个机器上运行,你必须将在A机器上生成的可运行程序复制到B机器上。

    如果你不了解mpi的运行方式,请保证在两个机器上的可运行程序存放在同一个文件夹下。


    为方便,你能够把程序放到用户根文件夹(~/ 就是用户根文件夹),然后再复制到B机器上。

    拷贝程序的命令例如以下(如果你的程序叫main.exe)

    scp ~/main.exe demo@192.168.1.6:~/

    以下你要新建一个文本文件,这个文本文件第一行写A机器的IP,第二行写B机器的IP。文件名称任意。最好使用英文。

    我门如果的A、B两个机器的IP各自是192.168.1.5和 192.168.1.6,所以我们的文件里能够这样写

    192.168.1.5
    192.168.1.6

    如果我门命名这个文件为hosts,而且保存在~/文件夹下,那么我门就能够打开终端。启动我们的程序了。

    cd ~/
    mpiexec -f ./hosts -n 2 ./main.exe


    结束语

    如果你是linux新手(不知道怎么使用终端的都是新手),一定要严格运行每个命令,依照说明一步步运行。注意命令中的下划线,短线。英文点 .。大写和小写字母,/,~等。这篇博文临时写完了,剩下的就是祝你好运了。








  • 相关阅读:
    博科SAN交换机基本配置(华为SNS系列交换机为例OEM博科)
    华为SNS交换机(OEM博科FC交换机)Fabric OS: v 8版本后通过https方式浏览器访问交换机Webtools显示没有匹配的加密算法套件的解决办法
    SNS光纤交换机怎样禁用 Virtual Fabric模式
    光纤网络的相关知识
    元音老人:怎样了生死
    戒淫偈【每天念十遍】。。。
    戒淫偈汇集
    净空老法师:你能这样念上一个星期试试看,肯定比你过去念十年还有效!
    修华严奥旨妄尽还原观 第6集
    贤公和尚,佛门榜样。-海贤老和尚往生纪实
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6738227.html
Copyright © 2011-2022 走看看