第2讲-并行计算框架及案例课件.ppt

上传人(卖家):三亚风情 文档编号:2271791 上传时间:2022-03-28 格式:PPT 页数:47 大小:1.62MB
下载 相关 举报
第2讲-并行计算框架及案例课件.ppt_第1页
第1页 / 共47页
第2讲-并行计算框架及案例课件.ppt_第2页
第2页 / 共47页
第2讲-并行计算框架及案例课件.ppt_第3页
第3页 / 共47页
第2讲-并行计算框架及案例课件.ppt_第4页
第4页 / 共47页
第2讲-并行计算框架及案例课件.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、并行计算产生背景并行计算是相对于串行计算并行计算概念并行计算并行计算-高性能计算高性能计算并行计算并行计算(Parallel Computing) 高端计算高端计算(High-end Parallel Computing) 高性能计算高性能计算(High Performance Computing) 超级计算超级计算(Super Computing)任何高性能计算和超级计算都离不开使用并行技术任何高性能计算和超级计算都离不开使用并行技术nThe simultaneous use of more than one computer to solve a problem.n由由由运行在多个部件上的

2、小任务合作来求解一个规模很由运行在多个部件上的小任务合作来求解一个规模很大的计算问题的一种方法大的计算问题的一种方法4并行计算的应用需求并行计算的应用需求5计算科学计算科学与传统的两种科学,即与传统的两种科学,即理论科学理论科学和和实验实验科学科学,并列被认为是人类认识自然的三大支柱,他,并列被认为是人类认识自然的三大支柱,他们彼此相辅相成地推动科学发展与社会进步。在许们彼此相辅相成地推动科学发展与社会进步。在许多情况下,或者是理论模型复杂甚至理论尚未建立多情况下,或者是理论模型复杂甚至理论尚未建立,或者实验费用昂贵甚至无法进行时,计算就成了,或者实验费用昂贵甚至无法进行时,计算就成了求解问题

3、的唯一或主要的手段。求解问题的唯一或主要的手段。并行计算的应用需求并行计算的应用需求6n程序级并行程序级并行n子程序级并行子程序级并行n语句级并行语句级并行n操作级并行操作级并行n微操作级并行微操作级并行并并行行粒粒度度细细粗粗并行的层次后三层大都由硬件和编译器负责处理,程序员通常处理前两层的并行 硬件(并行机)硬件(并行机) 组成要素:节点,互联网络,内存组成要素:节点,互联网络,内存 结构模型:结构模型:PVP, SMP, DSM, MPP, COWPVP, SMP, DSM, MPP, COW 并行算法设计(略)并行算法设计(略) 并行编程环境并行编程环境 系统环境:常见主流系统环境:常

4、见主流Unix/LinuxUnix/Linux操作系统操作系统 编程语言:编程语言:Fortran 77/90/9,Fortran 77/90/9, C/C+C/C+并行计算基本条件并行计算机的分类SISDSIMDMIMD并行计算科学中主要研究的是空间上的并行问题。并行计算科学中主要研究的是空间上的并行问题。 空间上的空间上的并行导致了两类并行机的产生,按照并行导致了两类并行机的产生,按照Flynn的说法分为:单的说法分为:单指令流多数据流(指令流多数据流(SIMD)和多指令流多数据流()和多指令流多数据流(MIMD)。)。我们常用的串行机也叫做单指令流单数据流(我们常用的串行机也叫做单指令流

5、单数据流(SISD)。)。10并行计算机体系结构q 组成要素l 结点(node):一个或多个处理器组成l 互联网络(interconnetct network):连接结点l 内存(memory):多个存储模块组成1并行计算框架 PVP( Parallel Vector Processor,并行向量处理机)代表:代表:银河银河I INECNEC地球模拟器地球模拟器2 SMP( Symmetric Multiprocessor,对称多处理机) 单一操作系统管理,共享内存及计算机的其他资源. 代表:代表:曙光曙光1 1号号IBM RS/6000IBM RS/6000并行计算框架4 MPP(Massi

6、vely Parallel Processor,大规模并行处理机) 每个结点均有自己的 操作系统,独立的内存. 代表:代表:Intel Option RedIntel Option RedIBM SP2IBM SP2Dawning 1000Dawning 1000并行计算框架5 COW(Cluster of Workstation,集群工作站)代表:代表:IBM Cluster 1350/1600IBM Cluster 1350/1600曙光曙光2000, 30002000, 3000目前分布式计算、云计算体系目前分布式计算、云计算体系 的原型的原型并行计算框架GoogleGoogle云计算数

7、据中心云计算数据中心并行计算机发展食物链并行计算的性能分析并行计算的性能分析2、并行效率、并行效率并行语言的实现方式和实现难度的关系图改动多少改动多少实现难度实现难度提供并行库提供并行库扩充语法成分扩充语法成分新语言新语言 并行程序设计方式:并行程序设计方式: 设计全新的并行语言设计全新的并行语言 扩展串行语言语法,使其支持并扩展串行语言语法,使其支持并行特征行特征 为串行语言提供可调用的并行库为串行语言提供可调用的并行库 MPIMPI( (M Message essage P Passing assing I Interface,nterface,消息传递接口消息传递接口):):是消是消息传

8、递函数库的标准规范,采用息传递函数库的标准规范,采用提供并行库提供并行库的方式的方式MPI产生背景一个简单的MPI程序 Hello.c#include “mpi.h” /* 导入包含有导入包含有MPI库函数的头文件库函数的头文件*/ #include /* 导入导入C语言头文件语言头文件 */* * 使用使用C语言作为宿主语言,调用语言作为宿主语言,调用MPI库编写简单库编写简单Hello.c并行程序并行程序 */int main(int argc, char *argv) MPI_init(&argc, &argv); /* MPI库函数库函数 */ printf(“hello parall

9、el world!n”); /* C库函数库函数 */ MPI_Finalize(); /* MPI库函数库函数 */ return 0;MPI_Init();并行代码并行代码;MPI_Fainalize();只能有串行代码只能有串行代码; 启动机器集群中的启动机器集群中的3 3个机器节点:个机器节点: 编译编译Hello.cHello.c程序:程序: 执行执行HelloHello程序:程序: 注意:可执行程序注意:可执行程序Hello.oHello.o必须同时位于必须同时位于3 3个机器节点的个机器节点的test3test3目录下。目录下。一个简单的MPI程序 Hello.c运行:运行:MP

10、I消息 消息消息(message)(message): MPIMPI程序中在进程间通信所传送程序中在进程间通信所传送的所有信息称为消息。的所有信息称为消息。 作用:作用:控制整个集群内的所有机器节点进行协同工作控制整个集群内的所有机器节点进行协同工作对底层异构系统进行抽象,实现程序可移植性对底层异构系统进行抽象,实现程序可移植性 组成:组成:消息信封消息信封消息内容消息内容MPI消息传递过程 分三个阶段:分三个阶段:消息装配消息装配消息发送消息发送消息拆卸消息拆卸数据发送缓冲区数据发送缓冲区消息装配消息装配消息传递消息传递消息拆卸消息拆卸数据接收缓冲区数据接收缓冲区MPIMPI消息传递过程消息

11、传递过程MPI常用六个基本函数1.MPI_Init();2.MPI_Comm_size();3.MPI_Comm_rank();4.MPI_Send();5.MPI_Recv();6.MPI_Finalize(); int MPI_Init(int *argc, char *argv) 启动启动MPIMPI环境环境, ,标志并行代码的开始标志并行代码的开始. .并行代码之前并行代码之前, ,第一个第一个mpimpi函数函数( (除除MPI_Initialize()MPI_Initialize()外外).).接收接收mainmain函数传递的参数函数传递的参数. . int MPI_Finali

12、ze(void) int MPI_Finalize(void) 标志并行代码的结束标志并行代码的结束, ,结束除主进程外其它进程结束除主进程外其它进程. . int MPI_Comm_size ( MPI_Comm comm, int int MPI_Comm_size ( MPI_Comm comm, int * *size )size )获得通信空间获得通信空间commcomm中规定的组包含的进程的数量中规定的组包含的进程的数量. . int MPI_Comm_rank ( MPI_Comm comm, int int MPI_Comm_rank ( MPI_Comm comm, int

13、* *rank ) rank ) 得到本进程在通信空间得到本进程在通信空间commcomm中的中的rankrank值值, ,即在组中的逻即在组中的逻辑编号辑编号( (从从0 0开始,类似于进程开始,类似于进程IDID).).int MPI_Send( void int MPI_Send( void * *buff, int count, MPI_Datatype datatype, buff, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)int dest, int tag, MPI_Comm comm)标

14、准阻塞发送消息标准阻塞发送消息buffbuff:消息发送缓冲区:消息发送缓冲区count: count: 指定数据类型指定数据类型MPI_DatatypeMPI_Datatype的消息个数的消息个数, , 而不是而不是字节数字节数. .dest: dest: 发送消息的目的地发送消息的目的地tag: tag: 消息标签消息标签comm: comm: 通信空间或通信域通信空间或通信域int MPI_Recv( void int MPI_Recv( void * *buff, int count, MPI_Datatype datatype, buff, int count, MPI_Dataty

15、pe datatype, int source, int tag, MPI_Comm comm, MPI_Status int source, int tag, MPI_Comm comm, MPI_Status * *status)status)标准阻塞接收消息标准阻塞接收消息buffbuff:消息接收缓冲区:消息接收缓冲区count: count: 指定数据类型指定数据类型MPI_DatatypeMPI_Datatype的消息个数的消息个数, , 而不是字而不是字节数节数. .source: source: 发送消息源发送消息源tag: tag: 消息标签消息标签comm: comm: 通

16、信空间或通信域通信空间或通信域statusstatus:记录消息接收状态(成功或失败):记录消息接收状态(成功或失败)简单消息发送与接收案例HelloWord.c#include “mpi.h”main(int argc, char* argv) int p; /*进程数进程数,该变量为各处理器中的同名变量该变量为各处理器中的同名变量 */ int my_rank; /*我的进程我的进程ID,存储也是分布的存储也是分布的 */ MPI_Status status; /*消息接收状态变量消息接收状态变量,存储也是分布存储也是分布 */ char message100; /*消息消息buffer,

17、存储也是分布的存储也是分布的 */ MPI_Init(&argc, &argv); /*初始化初始化MPI*/ /*该函数被各进程各调用一次该函数被各进程各调用一次,得到自己的进程得到自己的进程rank值值*/MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);/*该函数被各进程各调用一次该函数被各进程各调用一次,得到进程数得到进程数*/MPI_Comm_size(MPI_COMM_WORLD, &p); if (my_rank != 0) /*建立消息建立消息*/ sprintf(message, “Hello Word, I am %d!,my_rank); /

18、* 发送长度取发送长度取strlen(message)+1,使使0也一同发送出去也一同发送出去*/ MPI_Send(message,strlen(message)+1, MPI_CHAR, 0,99, MPI_COMM_WORLD); else /* my_rank = 0 */ for (source = 1; source = 2; source+) /* 指定指定3个进程的并行环境个进程的并行环境*/ MPI_Recv(message, 100, MPI_CHAR, source, 99, MPI_COMM_WORLD, &status); printf(“%sn, message);

19、 MPI_Finalize(); /*关闭关闭MPI,标志并行代码段的结束标志并行代码段的结束*/ /* main */简单消息发送与接收案例HelloWord.cHelloWord.c的编译与运行 mpicc HelloWord.c 默认生成默认生成a.outa.out的可执行代码的可执行代码. . mpicc o HelloWord HelloWord.c生成生成HelloWorld的可执行代码的可执行代码. . mpirun n 3 ./a.out 或或 mpirun n 3 ./HelloWord3 3:指定执行该并行程序的机器节点数:指定执行该并行程序的机器节点数, ,由用户由用户指

20、定指定. .a.out / HellowWord: a.out / HellowWord: 要运行的要运行的MPIMPI并行程序并行程序. .案例执行过程MPI_Init()MPI_Comm_rank()MPI_Comm_rank()MPI_Comm_rank().Recv();.Recv();.Send();.Send();.MPI_Finalize()串行程序串行程序进程进程0 0进程进程1 1进程进程2 2串行程序串行程序HelloWord, I am 1HelloWord, I am 2进程0接收进程2的消息进程0接收进程1的消息案例程序解析 上述案例程序以上述案例程序以C C语言为宿

21、主语言,结合语言为宿主语言,结合MPIMPI提供的并行库提供的并行库,实现,实现3 3个机器节点执行该个机器节点执行该MPIMPI程序的功能。程序的功能。 上述程序在上述程序在0 0号机器节点上打印输出:号机器节点上打印输出: HelloWord, I am 1HelloWord, I am 1 HelloWord, I am 2 HelloWord, I am 2 MPIMPI并行程序约定:并行程序约定: 程序开头必须包含程序开头必须包含mpi.h.mpi.h. MPIMPI函数返回出错代码或函数返回出错代码或 MPI_SUCCESS MPI_SUCCESS成功标志成功标志. . MPI_

22、MPI_ 前缀,且只有前缀,且只有MPIMPI名称以及名称以及MPI_MPI_标志后的第一个字母大写,其余小标志后的第一个字母大写,其余小写写. . 程序的并行部分以程序的并行部分以MPI_Init()MPI_Init()开头,以开头,以MPI_Finalize()MPI_Finalize()结束,其它部分结束,其它部分为程序的串行部分为程序的串行部分. .参考文献 参考资料参考资料 主要的主要的MPIMPI主页及主页及MPIMPI标准标准http:/www.mpi-forum.org MPIFMPIF主页主页http:/www.mcs.anl.gov/mpi MPIMPI主页主页http:/

23、lib.org/mpi/index.html netlibnetlib上的上的MPIMPI站点站点http:/www-unix.mcs.anl.gov/mpi/mpich/ ANL/MSUANL/MSU实现的实现的MPICHMPICHhttp:/www-unix.mcs.anl.gov/mpi/tutorial/ MPIMPI相关材料相关材料http:/www.mcs.anl.gov/mpi/usingmpi MPIMPI教程教程http:/www.mcs.anl.gov/mpi/usingmpi2 MPIMPI教程教程 都志辉著都志辉著. . 高性能计算并行编程技术高性能计算并行编程技术MP

24、IMPI并行程序设计并行程序设计. . 北京北京: :清华大学出版社清华大学出版社, 2001., 2001.THANKSMPI并行程序设计 什么是什么是MPI?MPI?M Message essage P Passing assing I Interface(nterface(消息传递接口消息传递接口):):是消息是消息传递函数库的标准规范。传递函数库的标准规范。MPIMPI一种新的库描述。一种新的库描述。MPIMPI是一种标准或规范的代表。是一种标准或规范的代表。MPIMPI是一种是一种消息传递编程模型消息传递编程模型。目前MPI的主要实现实现名称实现名称研制单位研制单位网址网址MPICH

25、Argonne & MSUhttp:/www.mpich.org/OpenMPI一些大学、科研机构,以及大型企业http:/www.open-mpi.org/LAMOhio State Universityhttp:/www.lam-mpi.org/消息信封 消息信封(消息信封(envelopenvelop)格式)格式n 邮编 通信地址 XXX(收) tag 目的(目的(DestinationDestination):):消息的接收者,由消息的接收者,由sendsend函数参数确定函数参数确定 源(源(SourceSource):):消息的提供者,由发送进程隐式确定,由进程的消息的提供者,由发

26、送进程隐式确定,由进程的rankrank值唯一标识值唯一标识 隐含目隐含目/ /源:源:组通信组通信 tagtag作用:作用:区别同一进程的不同消息,使程序员以一种有序的方式处理到达区别同一进程的不同消息,使程序员以一种有序的方式处理到达的消息。的消息。必要的,但不充分,因为必要的,但不充分,因为“tag”tag”的选择具有一定的随意性。的选择具有一定的随意性。MPIMPI用一个新概念用一个新概念“上下文上下文”(context)(context)对对“tag”tag”进行扩展。系统进行扩展。系统运行时分配,不允许统配。运行时分配,不允许统配。消息内容 内容(内容(datadata),在组通信

27、中有变化形式),在组通信中有变化形式 MPI标识一条消息 MPIMPI标识一条消息的四个限定域标识一条消息的四个限定域: :源源目的目的TagTag标识标识通信子通信子 数据类型数据类型: :预定义数据类型预定义数据类型派生数据类型派生数据类型MPI数据类型 作用:作用:提高程序设计的灵活性提高程序设计的灵活性提高程序的可移植性提高程序的可移植性提高程序设计的抽象性提高程序设计的抽象性分类:分类:预定义数据类型预定义数据类型派生数据类型派生数据类型MPIMPI标准所支持的数据类型为标准所支持的数据类型为强类型强类型预定义数据类型(C语言环境)MPIMPI预定义数据类型预定义数据类型相应的相应的

28、C C语言数据类型语言数据类型MPI_CHAR signed char MPI_SHORT signed short intMPI_INT signed int MPI_LONG signed long intMPI_UNSIGNED_CHAR unsigned char MPI_UNSIGNED_SHORT unsigned short intMPI_UNSIGNED unsigned int MPI_UNSIGNED_LONG unsigned long intMPI_FLOAT float MPI_DOUBLE doubleMPI_LONG_DOUBLE long double MPI_

29、BYTE 无对应类型无对应类型MPI_PACKED 无对应类型无对应类型MPI消息类型匹配 分为:分为:宿主语言的类型宿主语言的类型( (如:如:C C、FortranFortran语言语言) )与与MPIMPI通信操作所指定的类通信操作所指定的类型型(MPI(MPI消息类型消息类型) )相匹配;相匹配;发送方和接收方的类型相匹配发送方和接收方的类型相匹配(MPI(MPI消息在机器之间传递过程中的消消息在机器之间传递过程中的消息类型息类型) )。 哪些阶段需要匹配:哪些阶段需要匹配:消息装配阶段:消息装配阶段:发送方宿主语言的数据类型和发送方宿主语言的数据类型和MPIMPI消息类型相匹配消息类

30、型相匹配消息传递阶段:消息传递阶段:发送端的消息类型必须和接收端的消息类型相匹配发送端的消息类型必须和接收端的消息类型相匹配消息拆卸阶段:消息拆卸阶段: MPI MPI消息类型和接收方宿主语言的类型相匹配消息类型和接收方宿主语言的类型相匹配匹配规则:匹配规则:装配阶段和拆卸阶段:装配阶段和拆卸阶段:采用采用MPIMPI预定义的数据类型和相应宿主语言预定义的数据类型和相应宿主语言类型的对应关系类型的对应关系传递阶段:传递阶段:要求在发送方和接收方对要求在发送方和接收方对MPIMPI数据类型的指定必须一致数据类型的指定必须一致并行计算机的发展早期电子数字计算机4040年代末年代末5050年代初年代

31、初7070年代初年代初1972年第一台并行计算机ILLIAC IV1976年向量机 Cray-1投入运行,被称为“超级计算元年”8080年代百家争鸣年代百家争鸣早期:以 MIMD 并行计算机的研制为主中期:共享存储多处理机模型的提出,以SMP为代表 后期:具有强大计算能力的并行机9090年代年代体系结构趋于统一,以DSM、MPP、COW为代表9090年代年代 未来未来以COW为原型的由大规模商用普通PC机构成的机器集群为主并行程序设计模型 分类分类特征特征消息传递消息传递共享变量共享变量数据并行数据并行典型代表典型代表可移植性可移植性存储方式存储方式学习难度学习难度可扩展性可扩展性MPIMPI、PVMPVM好好分布式存储分布式存储较难较难好好OpenMPOpenMP较差较差共享存储共享存储容易容易较差较差HPFHPF一般一般共享存储共享存储偏易偏易一般一般MPI特点 基于消息传递的通信机制基于消息传递的通信机制 结合串行语言的并行库结合串行语言的并行库 支持支持Fortran、C和和C+常用串行语言常用串行语言 可移植性好可移植性好 程序设计方式灵活、简单程序设计方式灵活、简单

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第2讲-并行计算框架及案例课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|