MPICH下载与安装 MPICH ● http://www.mpich.org/ ●支持C/C++/Fortran ●支持编译器:GNU,Clang,Intel,,PGl,XL(lBM),Sun Studio ●安装:apt(Ubuntu4.0.2),yum(Fedora4.0.2) ● 手工安装:下载源代码(4.1.1)后编译 http://math.ecnu.edu.cn/-jypan 6
http://math.ecnu.edu.cn/~jypan 6 MPICH 下载与安装 http://www.mpich.org/ 支持 C/C++/Fortran 支持编译器:GNU,Clang,Intel,PGI,XL (IBM),Sun Studio 安装:apt (Ubuntu 4.0.2),yum (Fedora 4.0.2) 手工安装:下载源代码 (4.1.1) 后编译 MPICH
第一个MPI程序 #include <mpi.h> #include <stdio.h> int main(int argc,char argv[]) MPI_Init(&argc,&argv); printf("Hello World!\n"); MPI_Finalize(); return 0; mpicc -02 -o hello MPI_hello.c mpirun -np 4 hello http://math.ecnu.edu.cn/-jypan 7
http://math.ecnu.edu.cn/~jypan 7 第一个 MPI 程序 #include <mpi.h> #include <stdio.h> int main(int argc, char * argv[]) { MPI_Init(&argc, &argv); printf("Hello World!\n"); MPI_Finalize(); return 0; } mpicc –O2 –o hello MPI_hello.c mpirun –np 4 hello
程序分析 #include <mpi.h> MPICH相对于C语言的头文件 MPI_Init(&argc,&argv) MPI程序的开始 MPI_Finalize() MPI程序的结束。 MPI程序的开始和结束必须是MPI_Init和MPI_Finalize,分别完成MPI 的初始化和结束工作 http://math.ecnu.edu.cn/-jypan 8
http://math.ecnu.edu.cn/~jypan 8 程序分析 #include <mpi.h> MPICH 相对于 C 语言的头文件 MPI_Init(&argc, &argv) MPI 程序的开始 MPI_Finalize() MPI 程序的结束。 MPI 程序的开始和结束必须是 MPI_Init 和 MPI_Finalize,分别完成 MPI 的初始化和结束工作
第二个MPI程序 MPI_hello.c #include <mpi.h> #include <stdio.h> #include <math.h> int main(int argc,char argv[]) { int myid,np; int namelen; char proc_name[MPI_MAX_PROCESSOR_NAME]; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&myid); MPI_Comm_size(MPI_COMM_WORLD,&np); MPI_Get_processor_name(proc_name,&namelen); fprintf(stderr,"Hello,I am proc.%d of %d on %s\n", myid,np,proc_name); MPI_Finalize(); http://math.ecnu.edu.cn/-jypan 9
http://math.ecnu.edu.cn/~jypan 9 第二个 MPI 程序 #include <mpi.h> #include <stdio.h> #include <math.h> int main(int argc, char * argv[]) { int myid, np; int namelen; char proc_name[MPI_MAX_PROCESSOR_NAME]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &np); MPI_Get_processor_name(proc_name,&namelen); fprintf(stderr,"Hello, I am proc. %d of %d on %s\n", myid, np, proc_name); MPI_Finalize(); } MPI_hello.c
程序分析 MPI MAX PROCESSOR NAME 预定义的宏,即MPI所允许的机器名字的最大长度 ●MPI Comm rank 函数,返回到本进程的进程号 ●MPI Comm size 函数,返回所有参加运算的进程的个数 MPI_Get_processor_name 函数,返回运行本进程所在的结点的主机名 http://math.ecnu.edu.cn/-jypan 10
http://math.ecnu.edu.cn/~jypan 10 程序分析 MPI_MAX_PROCESSOR_NAME 预定义的宏,即 MPI 所允许的机器名字的最大长度 MPI_Comm_rank 函数,返回到本进程的进程号 MPI_Comm_size 函数,返回所有参加运算的进程的个数 MPI_Get_processor_name 函数,返回运行本进程所在的结点的主机名