最近使用一个系统的分布式版本搭建测试环境,该系统是基于MPI实现的并行计算,MPI是传统基于msg的系统,这个框架非常灵活,对程序的结构没有太多约束,高效实用简单,下面是MPI在多台机器上实现并行计算的过程。
这里准备使用三台机器,假设为A,B,C,对应IP分别为:192.168.86.16(A),192.168.86.108(B),192.168.86.123(C)。在这三台机器上都有同一个用户名songhou2,这三台机器上安装了相同的MPI版本,并且确保都已经设置好了环境变量,我们这里把192.168.86.16作为主节点。
我们首先完成机器A和机器B之间的设置。在机器A上进入songhou2用户目录下,执行如下命令:
命令执行过程中可能要等待你的输入,全部直接选择回车即可,然后接着执行如下命令:
执行完命令后,需要输入songhou2在机器B上的密码,输入密码后回车,继续执行下面的命令:
登陆机器B
继续执行下面的命令:
遇到需要输入yes/no的地方就输入yes,其他一律输入回车,然后再执行如下命令:
最后执行如下命令退出机器B:
执行完上述所有命令后,就完成机器A和机器B之间的设置了,机器A和机器C之间的设置类似,这里就不再进行赘述了。现在我们回到机器A上,编译我们的源代码得到可执行程序:
由于我们的三天机器是相互独立的,他们之间没有共享磁盘,所以如果你想让同一个程序使用MPI在多台机器上执行,就要把可执行程序分别拷贝到另外两台机器上,然后我们把可执行程序分别拷贝到机器B和机器C上,但是要保证可执行程序在三台机器上的文件路径完全相同:
下面你要在可执行程序所在的文件夹下创建一个文本文件,命名为hosts.txt,然后分别把三台机器的IP写到hosts.txt中,然后就可以执行程序了。