12
22
open MPI 妙用[转]
作者:独木舟 日期:2009-12-22
工作需要,刚想到跟本文一样的思路,顺着思路找到本文,转以留念
是不是经常需要在多台机器上做同样的繁琐操作?
或许open MPI可以帮你的忙。
在所有的节点上,做下面的1—3操作
1,安装openmpi,有三个包需要装:
openmpi
openmpi-libs
openmpi-devel
2,配置无密码ssh登录:
请参考:如何配置无密码SSH
3,在工作目录下编制配置文件(文件名随意),内容包括所有节点的名称,例如:
#>cat hosts
host1
host2
host3
————————
所有节点上的工作目录必需相同,配置文件名和内容也必需相同,简单的办法是所有节点的工作目录都mount到同一个nfs输出上
————————
在主节点上写程序并编译执行4—8
4,例子程序:
[root@dhcp-beijing-cdc-10-182-120-155 ~]# cat hello.c
#include
#include "mpi.h"
int main(int argc, char *argv[])
{
int nproc;
int iproc;
char proc_name[MPI_MAX_PROCESSOR_NAME];
int nameLength;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&nproc);
MPI_Comm_rank(MPI_COMM_WORLD,&iproc);
MPI_Get_processor_name(proc_name,&nameLength);
printf("Hello World, Iam host %s with rank %d of %d\n", proc_name,iproc,nproc);
MPI_Finalize();
return 0;
}
5,编译这个例子:
mpicc -o hello hello.c
6,拷贝可执行文件hello到所有节点的相同工作目录(如果使用nfs可忽略此步)
7,执行hello
#> mpirun -np 2 hello -hostfiles hosts
(上面的数字2代表在两个节点上运行hello)
此时,是不是已经看到了来自其它节点的问候?
8,当然,你可以用其他命令来替换hello比如:
#> mpirun -np 3 ls -hostfiles hosts
此命令在各节点上执行ls操作,并显示结果在主节点上。
9,发挥你的想象力吧,有1000台机器需要同时做同一件事情 。。。
10,当然了,此文章并不是关于分布式计算的,有兴趣的朋友参考相关文章
是不是经常需要在多台机器上做同样的繁琐操作?
或许open MPI可以帮你的忙。
在所有的节点上,做下面的1—3操作
1,安装openmpi,有三个包需要装:
openmpi
openmpi-libs
openmpi-devel
2,配置无密码ssh登录:
请参考:如何配置无密码SSH
3,在工作目录下编制配置文件(文件名随意),内容包括所有节点的名称,例如:
#>cat hosts
host1
host2
host3
————————
所有节点上的工作目录必需相同,配置文件名和内容也必需相同,简单的办法是所有节点的工作目录都mount到同一个nfs输出上
————————
在主节点上写程序并编译执行4—8
4,例子程序:
[root@dhcp-beijing-cdc-10-182-120-155 ~]# cat hello.c
#include
#include "mpi.h"
int main(int argc, char *argv[])
{
int nproc;
int iproc;
char proc_name[MPI_MAX_PROCESSOR_NAME];
int nameLength;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&nproc);
MPI_Comm_rank(MPI_COMM_WORLD,&iproc);
MPI_Get_processor_name(proc_name,&nameLength);
printf("Hello World, Iam host %s with rank %d of %d\n", proc_name,iproc,nproc);
MPI_Finalize();
return 0;
}
5,编译这个例子:
mpicc -o hello hello.c
6,拷贝可执行文件hello到所有节点的相同工作目录(如果使用nfs可忽略此步)
7,执行hello
#> mpirun -np 2 hello -hostfiles hosts
(上面的数字2代表在两个节点上运行hello)
此时,是不是已经看到了来自其它节点的问候?
8,当然,你可以用其他命令来替换hello比如:
#> mpirun -np 3 ls -hostfiles hosts
此命令在各节点上执行ls操作,并显示结果在主节点上。
9,发挥你的想象力吧,有1000台机器需要同时做同一件事情 。。。
10,当然了,此文章并不是关于分布式计算的,有兴趣的朋友参考相关文章
评论: 0 | 引用: 0 | 查看次数: -
发表评论