标签:
序
由于项目需求,最近一段时间学习了MPI,零星的资料拼拼凑凑,终于成功搭好了~
详细过程记录如下,方便日后参考~
一、安装
【2】在/tmp/下创建目录(如/tmp/yangrui/mpich-3.2)保存安装log
【3】在/opt/下创建目录/opt/mpich-install,作为安装目录
【4】在/tmp/yangrui/mpich-3.2下执行安装命令:
出现Configuration completed.
【5】执行make 2>&1 | tee m.txt ;
【6】执行make install |& tee mi.txt ;
【7】配置环境变量:
执行命令vim /etc/profile
#set MPI path
MPI_HOME=/opt/mpich-install/bin
PATH=${PATH}:${MPI_HOME}
export MPI_HOME
如图:
【8】验证安装成功:
二、授权
在每台服务器的/etc/下创建hosts.equiv文件:
文件内容:
含义:
① dell-3 user:代表允许dell-3服务器上的用户user本地执行远程命令而无须提供口令;
② amax user:代表允许dell-3服务器上的用户user本地执行远程命令而无须提供口令;
③+ user:代表允许用户user从任何远程计算机在本地执行远程命令而无须提供口令。
三、测试命令及程序
3.1 命令
[1]编译命令
mpicc –o test test.c 或 mpicxx –o test test.cpp
[2]运行命令
单机服务器
mpiexec –n 6 ./test 或 mpirun –np 6 ./test
说明:mpiexec 和 mpirun为运行命令,-n或-np指定运行的进程个数
=============================================================================
集群环境下
编辑machinefile文件,内容为服务器名称及其运行的进程个数
mpiexec –machinefile mf –n 6 ./test 或 mpirun –machinefile mf –np 6 ./test
3.2 测试程序
#include <math.h>
void main(argc,argv)
int argc;
char *argv[];
{
/*myid 和 numprocs分别记录某一个并行执行进程的标识和所有参加计算的进程的个数*/
int myid, numprocs;
int namelen;
/*MPI_MAX_PROCESSOR_NAME为MPI预定义的宏,代表MPI的具体实现中允许机器名字的最大长度*/
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
//机器名存在processor_name中,namelen是实际机器名的长度
MPI_Get_processor_name(processor_name, &namelen);
fprintf(stderr , "Hello world! Process %d of %d on %s \n",
myid, numprocs, processor_name);
MPI_Finalize();
}
3.3 测试结果
1台服务器:
集群环境下执行:
MPI库安装、配置及测试程序
标签:
原文地址:http://blog.csdn.net/fly_yr/article/details/51251679