【问题标题】:How to avoid copying executable from master node to slaves in MPI?如何避免将可执行文件从主节点复制到 MPI 中的从节点?
【发布时间】:2014-11-07 21:29:56
【问题描述】:

我正在尝试在集群上执行我用 C 语言编写的 MPI 程序,但每次在集群上执行它之前,我都必须将可执行文件从主节点复制到从节点,如下所示。

pi@raspberrypi ~ $ mpicc -o test sir.c
pi@raspberrypi ~ $ scp test pi@192.168.1.38:/home/pi/test
test                                          100% 1142KB   1.1MB/s   00:01    

pi@raspberrypi ~ $ mpiexec -f pifile -n 2 ./test

pifile 是我的主机名文件。其内容如下

92.168.1.37
192.168.1.38

现在如果我不复制可执行文件,那么这就是我得到的错误

pi@raspberrypi ~ $ mpiexec -f pifile -n 2 ./test
[proxy:0:1@raspberrypi2] HYDU_create_process (/home/pi/mpich3/mpich-
3.0.4/src/pm/hydra/utils/launch/launch.c:75): execvp error on file ./test (No such file or 
directory)

===================================================================================
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   EXIT CODE: 255
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================

我想知道如何避免复制可执行文件,因为在大型集群中这样做没有意义。

如果您建议使用 NFS 实现,请说明如何进行,因为我没有这方面的经验。

谢谢

【问题讨论】:

    标签: c raspberry-pi mpi scp nfs


    【解决方案1】:

    我通过设置 NFS 解决了这个问题。这就是我所做的。

    注意:这是一个非常小的 NFS 实现。

    在主节点上

    安装 NFS 服务器

    $ sudo apt-get install rpcbind nfs-kernel-server
    

    编辑 /etc/exports 并添加共享:

    /home @my_slave_ip(rw,sync,no_subtree_check)
    /usr/local @my_slave_ip(rw,sync,no_subtree_check)
    

    设置 /etc/exports 后,导出共享:

    sudo exportfs -ra
    

    重启rpcbind

    $ sudo service rpcbind restart
    

    NFS 内核服务器也需要重启:

    sudo service nfs-kernel-server restart
    

    恭喜主节点现已准备就绪 :)

    现在在从节点上执行以下操作

    安装

    sudo apt-get install rpcbind nfs-common
    

    然后

    sudo mount ServerIP:/folder/already/setup/to/be/shared /home/username/folder/in/your/local/computer
    
    NOTE: Please do not mount your home directory as it will not work. Rather create a new folder 
    in the home directory and mount that folder.
    

    这就是我所做的

    pi@raspberrypi ~ $ mkdir test         (On master)
    pi@raspberrypi2 ~ $ mkdir test        (On slave)
    

    在奴隶上然后我这样做了

    pi@raspberrypi2 ~/test $ sudo mount 192.168.1.37:/home/pi/test /home/pi/test
    

    它有效 :) 希望它有所帮助。

    参考文献

    http://help.ubuntu.com/community/SettingUpNFSHowTo#NFS_Server https://raspberrypi.stackexchange.com/questions/10403/nfs-server-not-starting-portmapper-is-not-running

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多