高性能计算之并行编程技术课件.pptVIP

  • 3
  • 0
  • 约9.94千字
  • 约 43页
  • 2018-06-08 发布于贵州
  • 举报
高性能计算之并行编程技术课件

MPI基本函数 int MPI_Init ( int* argc /* in/out */, char** argv[] /* in/out */) 通常应该是第一个被调用的MPI函数 除MPI_Initialized()外,其余所有的MPI函数应该在其后被调用 MPI系统将通过argc,argv得到命令行参数 三、MPI程序分析及编程入门 MPI基本函数 int MPI_Finalize (void) 退出MPI系统,所有进程正常退出都必须调用。表明并行代码的结束,结束除主进程外其它进程. 串行代码仍可在主进程(rank = 0)上运行,但不能再有MPI函数(包括MPI_Init()) 三、MPI程序分析及编程入门 MPI基本函数 int MPI_Comm_size ( MPI_Comm comm /* in */, int* size /* out */) 获得进程个数 size 指定一个通信子,也指定了一组共享该空间的进程, 这些进程组成该通信子的group. 获得通信子comm中规定的group包含的进程的数量. 三、MPI程序分析及编程入门 MPI基本函数 int MPI_Comm_rank (MPI_Comm comm /* in */, int* rank /* out */) 得到本进程在通信空间中的rank值,即在组中的逻辑编号(该rank值为0到p-1间的整数,相当于进程的ID)。 三、MPI程序分析及编程入门 MPI程序的基本结构 #include mpi.h ... ... int main(int argc, char *argv[]) { int myrank, nprocs; MPI_Init(argc,argv); MPI_Comm_size(MPI_COMM_WORLD,nprocs); MPI_Comm_rank(MPI_COMM_WORLD,myrank); ... ... MPI_Finalize(); } 三、MPI程序分析及编程入门 更新的Hello World (c) #include stdio.h #include mpi.h main( int argc, char *argv[] ) { int myid, numprocs; MPI_Init( argc, argv ); MPI_Comm_rank( MPI_COMM_WORLD, myid ); MPI_Comm_size( MPI_COMM_WORLD, numprocs ); printf(“I am %d of %d\n, myid, numprocs ); MPI_Finalize(); } 三、MPI程序分析及编程入门 mpicc –o hello1 hello1.c mpirun -np 4 hello1 I am 0 of 4 I am 1 of 4 I am 2 of 4 I am 3 of 4 更新后的的Hello World 的允许结果 三、MPI程序分析及编程入门 MPI调用借口的总数虽然庞大,但根据实际编写MPI的经验,常用的MPI调用的个数确什么有限。下面是6个最基本的MPI函数。 MPI_Init(…); MPI_Comm_size(…); MPI_Comm_rank(…); MPI_Send(…); MPI_Recv(…); MPI_Finalize(); MPI_Init(…); … 并行代码; … MPI_Fainalize(); 只能有串行代码; 最基本的MPI 三、MPI程序分析及编程入门 SPMD 编程模式:构成一个程序的所有进程运行的是同一份执行代码. 不同进程根据自己的序号可能执行该代码中的不同分支. MPI 编程中最常用的编程方式. 用户只需要编写、维护一份源代码. MPMD 编程模式:构成一个程序的不同进程运行不同的执行代码. 用户需要编写、维护多份源代码. 主/从编程模式:它是MPMD 编程模式的一个特例, 也是MPMD 编程模式中最常见的方式. 构成一个程序的进程之一负责所有进程间的协调及任务调度, 该进程称为主进程(Master), 其余进程称为从进程(Slave). 通常用户需要维护两份源代码. MPI编程模式 三、MPI程序分析及编程入门 MPI程序设计方法 明确并行任务 设计单个任务的串行程序 所有任务的统一表示--SPMD并行程序 SPMD 三、MPI程序分析及编程入门 线程(Thread) 进程 (Process) 远程分布式主机 (Distributed Node)

文档评论(0)

1亿VIP精品文档

相关文档