c - 如何避免在 MPI 中将可执行文件从主节点复制到从节点?

标签 c raspberry-pi mpi scp nfs

我正在尝试在集群上执行我用 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,请解释如何实现,因为我没有这方面的经验。

谢谢

最佳答案

我通过设置 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

关于c - 如何避免在 MPI 中将可执行文件从主节点复制到从节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25829684/

相关文章:

c - 左值需要作为赋值的左操作数吗?

c - 使用 openGL ES 1.1 渲染 .h Blender 导出到 iPhone

python - 如何同时检查串行输入和键盘输入(同时使用readchar和串行库)

python - 树莓派 Omxplayer OpenCV

ffmpeg - 如何根据触发器缓冲和捕获 RTSP 流到磁盘?

c - MPI 发送和接收死锁

c - 与进程树中的兄弟共享PID

c - char s[] 和 char *s 有什么区别?

c - 找到所有进程的最高等级

c++ - MS-MPI 的 Visual Studio 2013 配置