高性能计算导论-MPIProgramming_第1页
高性能计算导论-MPIProgramming_第2页
高性能计算导论-MPIProgramming_第3页
高性能计算导论-MPIProgramming_第4页
高性能计算导论-MPIProgramming_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MPI ProgrammingMPI Introductiono MPI-Message Passing Interfaceo MPI is a library, not a programming languageo MPI is a standard, not a specific implementationImplementations of MPI Specificationo MPICH (Argonne)o MSMPI (Microsoft)MPI程序的初始化o 任何一个任何一个MPI程序在调用程序在调用MPI函数之前,函数之前,首先调用的是初始化函数首先调用的是初始化函数MPI

2、_INIT. o 建立建立MPI的执行环境的执行环境o int MPI_Init(int *argc, char *argv)n Input Parameters: * argc - Pointer to the number of arguments * * * argv - Pointer to the argument vectorn 将命令行参数传给各个进程获取通信域包含的进程数o MPI_Comm_size(MPI_Comm, int *size)n MPI_Comm的默认值为MPI_COMM_WORLD,它包括了初始化时可得的全部进程。n 函数返回时,size中存放指定通信域中的进

3、程数。获取当前进程标识o MPI_Comm_rank(MPI_Comm comm, int *rank)n 函数返回时,rank中存放当前进程在给定的通信域中的进程标识号。n 进程标识号用来将自身和其它的进程区别开来,实现进程间的通信。消息发送o 源进程将缓存中的数据发送到目的进程o MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)o buf:发送缓存的起始地址o count:发送的数据个数o datatype:数据类型o dest:目的进程标识号o Tag:消息标志o

4、 comm:通信域MPI预定义的数据类型消息接收o 目的进程从源进程接受数据,存入缓存中o MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status)o buf:接收缓存的起始地址o count:最多可接收的数据个数o datatype:数据类型o source:发送数据的进程标识号o Tag:消息标志o comm:通信域o Status:返回状态MPI程序结束o MPI程序的最后一个调用必须为:n MPI_Finalize()o 结束

5、MPI程序的执行Hello WorldIllustration of point-to-point message passingSender & receiver must matcho Count and datatypeo Tag and communicatorMPI应用环境o 应用环境的基本元素nN 个进程:0N-1n进程之间的通信路径o 通信域MPI_COMM_WORLDn进程的集合以及通路nMPI_Comm_size:进程的总数NnMPI_Comm_rank:某一进程的具体标识o 编译及运行(linux)nMpicc o hello Mpirun np 4 ./hello

6、Notes on program exampleo Each statement executes independently in each processo MPI_COMM_WORLD is defined by mpi.ho mpi.h must be #includedMPI的常用组通信接口-广播o 根进程将一条消息发送到组内的所有其它的进程,同时也包括它本身在内。o MPI_Bcast(void* buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm)n buffer:通信消息缓存的起始地址n count

7、:数据个数n datatype:数据类型n root:根进程的标识号n comm:通信域MPI的常用组通信接口-归约o 将每个进程缓冲区中的数据按给定的操作进行计算,并将计算结果返回到根进程的输出缓冲区中。nMPI_Reduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype, MPI_Op op, int root, MPI_Comm comm)o sendbuf:发送消息缓存的起始地址o recvbuf:接收消息缓存的起始地址o count:发送缓存中的数据个数o op:归约操作符o root:根进程序列号o comm:通信域MPI预定义的归约操作o 用户也可以使用MPI_Op_create自定义归约操作MPI归约操作的实现MPI_Bcast()和MPI_Reduce()应用Barrierso Blocks until all processes in the communicator have reached this routineo A point at which all processes must wait until all other processes have reached that pointo MPI_Barrier(MPI_Comm comm)Synchronous &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论