分布内存并行程序开发.ppt
《分布内存并行程序开发.ppt》由会员分享,可在线阅读,更多相关《分布内存并行程序开发.ppt(44页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、分布内存并行程序开发 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望 第一章第一章并行计算概述并行计算概述2 2 为什麽要采用并行计算为什麽要采用并行计算?串行程序速度提升缓慢可以加快速度更短的时间内解决相同的问题;相同的时间内解决更多更复杂的问题可以加大规模计算更大规模的问题3 3 并行计算设计的分类并行计算设计的分类 共享内存ccNUMA;SMPccNUMA;SMP 分布式内存MPP;ClusterMPP;Cluster4 4 三种计算模型三种计算模型5 5
2、并行化分解方法并行化分解方法任务分解多任务并发执行功能分解分解被执行的计算区域分解分解被执行的数据6 6 分布内存并行方式分布内存并行方式任务并行任务并行不同参数的大量工况计算不同参数的大量工况计算不同参数的大量工况计算不同参数的大量工况计算区域分解并行区域分解并行大规模多节点分块并行计算大规模多节点分块并行计算大规模多节点分块并行计算大规模多节点分块并行计算7 7第二章第二章 MPIMPI简介简介MPI(Message Passing Interface)是1994年5月发布的一种消息传递接口。它实际上是一个消息传递函数库的标准说明,以语言独立的形式来定义这个接口库,并提供了与C和Fortr
3、an语言的绑定.。8 8 MPIMPI的历史的历史MPI初稿:美国并行计算中心工作会议(92年4月)MPI-1公布:第一届MPI大会(93年1月);MPI标准正式发布:1994年5月;MPI-2发布:MPI论坛(97年)。9 9MPICH:最重要的MPI实现(www-unix.mcs.anl.gov/mpi/mpich),与MPI-1规范同步发展的版本,支持部分MPI-2的特征如动态生成进程等。CHIMP:EPCC(Edinburgh Parallel Computing Center)开发。ftp:/ftp.epcc.ed.ac.uk/pub/packages/chimp/release下载
4、。LAM(Local Area Multicomputer):Ohio State University开发。http:/www.lam-mpi.org/download/下载。MPI的实现1010 第三章第三章 MPIMPI编程编程1111 MPI为程序员提供一个并行环境库,程序员通过调用为程序员提供一个并行环境库,程序员通过调用MPIMPI的库的库程序来达到程序员所要达到的并行目的,可以只使用其中的程序来达到程序员所要达到的并行目的,可以只使用其中的6个最基本的函数就能编写一个完整的个最基本的函数就能编写一个完整的MPI程序去求解很多问题。程序去求解很多问题。这这6个基本函数,包括启动和结
5、束个基本函数,包括启动和结束MPI环境,识别进程以及发环境,识别进程以及发送和接收消息:送和接收消息:MPI_INIT:MPI_INIT:MPI_INIT:MPI_INIT:启动启动启动启动MPIMPIMPIMPI环境环境环境环境MPI_COMM_SIZE:MPI_COMM_SIZE:MPI_COMM_SIZE:MPI_COMM_SIZE:确定进程数确定进程数确定进程数确定进程数MPI_COMM_RANK:MPI_COMM_RANK:MPI_COMM_RANK:MPI_COMM_RANK:确定自己的进程标识符确定自己的进程标识符确定自己的进程标识符确定自己的进程标识符MPI_SEND:MPI_
6、SEND:MPI_SEND:MPI_SEND:发送一条消息发送一条消息发送一条消息发送一条消息MPI_RECV:MPI_RECV:MPI_RECV:MPI_RECV:接收一条消息接收一条消息接收一条消息接收一条消息MPI_FINALIZE:MPI_FINALIZE:MPI_FINALIZE:MPI_FINALIZE:结束结束结束结束MPIMPIMPIMPI环境环境环境环境1212 程序程序1、简单例子简单例子 program maininclude mpif.h character*(MPI_MAX_PROCESSOR_NAME)processor_nameinteger myid,numpr
7、ocs,namelen,rc,ierr call MPI_INIT(ierr)call MPI_COMM_RANK(MPI_COMM_WORLD,myid,ierr)call MPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,ierr)call MPI_GET_PROCESSOR_NAME(processor_name,namelen,ierr)write(*,10)myid,numprocs,processor_name10 FORMAT(Hello World!Process,I2,of,I1,on,20A)call MPI_FINALIZE(rc)end1313
8、 程序程序1、简单例子简单例子#include“mpi.h”main(int argc,char*argv)int numprocs,myrank,i,j,k;MPI_Status status;char msg20;MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);MPI_Comm_rank(MPI_COMM_WORLD,&myrank);if(myrank=0)strcpy(msg,”Hello World”);MPI_Send(msg,strlen(msg)+1,MPI_CHAR,1,99,MPI_COMM_WOR
9、LD);else if(myrank=1)MPI_Recv(msg,20,MPI_CHAR,0,99,MPI_COMM_WORLD,&status);printf(“Receive message=%sn”,msg);MPI_Finalize();1414 MPI程序的一般结构程序的一般结构包含MPI头文件初始化MPI环境消息交换处理及计算等退出MPI环境1515 头文件头文件MPIMPI程序要求:所有包含程序要求:所有包含程序要求:所有包含程序要求:所有包含MPIMPI调用的程序文调用的程序文调用的程序文调用的程序文件头应加入:件头应加入:件头应加入:件头应加入:1616 编译,执行:编译,
10、执行:mpicc-o hello hello.c:生成执行文件hellompirun-np n hello:加载n个进程运行,0号进程发送,1号进程接受并打印字符串1717 通信因子和组通信因子和组MPIMPI通过指定通信因子和组来对进程进行一种逻通过指定通信因子和组来对进程进行一种逻辑上的划分,通讯因子定义了进程组内或组间辑上的划分,通讯因子定义了进程组内或组间通讯的上下文(具体就是指明通讯链路的数据通讯的上下文(具体就是指明通讯链路的数据结构指针)。结构指针)。MPI_COMM_WORLDMPI_COMM_WORLD通信因子是在通信因子是在MPIMPI环境初环境初始化过程中创建始化过程中创
11、建1818 进程号进程号(rank)在一个通信因子中,每个进程都有一个唯一的在一个通信因子中,每个进程都有一个唯一的整数标识符,称作整数标识符,称作“进程进程ID”ID”,进程号是从进程号是从0 0开开始的连续整数。始的连续整数。if(rank=0)第0进程运行的程序段 else if(rank=1)第1进程运行的程序段1919 MPI消息消息MPI消息包括信封和数据两个部分,信封指消息包括信封和数据两个部分,信封指出了发送或接收消息的对象及相关信息,而出了发送或接收消息的对象及相关信息,而数据是本消息将要传递的内容。数据是本消息将要传递的内容。数据:数据:信封:信封:2020 MPIMPI的
12、基本函数的基本函数MPI_InitMPI_Comm_sizeMPI_Comm_rankMPI_SendMPI_RecvMPI_Finalize2121 MPI_Init()MPI_Init()MPI的初始化例行函数,用于初始化MPI运行环境。必须调用;首先调用;调用一次。MPI_Init(*argc,*argv)。每个进程都有一个参数表。2222 MPI_Comm_size()MPI_Comm_size()该函数返回与该组通信因子相关的进程数,显该函数返回与该组通信因子相关的进程数,显然这里的通讯因子必须是组内通讯因子。然这里的通讯因子必须是组内通讯因子。MPI_Comm_size(comm,
13、*size)MPI_Comm_size(comm,*size)2323 MPI_Comm_rank()MPI_Comm_rank()该该函函数数返返回回该该进进程程在在指指定定通通信信因因子子中中的的进进程程号号(0 0 进进程程数数-1-1),一一个个进进程程在在不不同同通通信信因因子子中中的进程号可能不同:的进程号可能不同:MPI_Comm_rank(comm,*rank)MPI_Comm_rank(comm,*rank)2424 MPI_Send()MPI_Send()该函数将发送缓冲区中的count个datatype数据类型的数据发送到目的进程MPI_Send(buf,count,da
14、tatype,dest,tag,comm)2525 MPI_Recv()MPI_Recv()该函数从指定的进程source接收消息,并且该消息的数据类型和消息标识和本接收进程指定的数据类型和消息标识相一致,收到的消息所包含的数据元素的个数最多不能超过count.MPI_Recv(buf,count,datatype,source,comm,status)2626 MPI_Finalize()MPI_Finalize()结结束束MPIMPI执执行行环环境境。该该函函数数一一旦旦被被应应用用程程序序调调用用时时,就就不不能能调调用用MPIMPI的的其其它它例例行行函函数数(包包括括MPI_Init
15、MPI_Init),用用 户户 必必 须须 保保 证证 在在 进进 程程 调调 用用MPI_FinalizeMPI_Finalize之之前前把把与与完完成成进进程程有有关关的的所所有有通通信信结束。结束。MPI_Finalize()MPI_Finalize()2727 参数说明参数说明缓冲区(缓冲区(bufferbuffer)数据个数(数据个数(countcount)数据类型(数据类型(typetype)目的地目的地 (destdest)源源 (sourcesource)标识符(标识符(tagtag)通信因子(通信因子(commcomm)状态(状态(statusstatus)2828 缓冲区(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布 内存 并行 程序 开发
限制150内