并行计算-多媒体课件-并行程序设计-ch06HPF编程指南.ppt
《并行计算-多媒体课件-并行程序设计-ch06HPF编程指南.ppt》由会员分享,可在线阅读,更多相关《并行计算-多媒体课件-并行程序设计-ch06HPF编程指南.ppt(65页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、并行算法实践上篇 并行程序设计导论并行算法实践上篇 并行程序设计导论 单元单元单元单元I I 并行程序设计基础并行程序设计基础并行程序设计基础并行程序设计基础 单元单元单元单元II II 并行程序编程指南并行程序编程指南并行程序编程指南并行程序编程指南 单元单元单元单元III III 并行程序开发方法并行程序开发方法并行程序开发方法并行程序开发方法2023/1/142国家高性能计算中心(合肥)单元II 并行程序编程指南 第四章第四章第四章第四章 MPIMPI编程指南编程指南编程指南编程指南 第五章第五章第五章第五章 PVMPVM编程指南编程指南编程指南编程指南 第六章第六章第六章第六章 HPF
2、HPF编程指南编程指南编程指南编程指南 第七章第七章第七章第七章 OpenMPOpenMP编程指南编程指南编程指南编程指南2023/1/143国家高性能计算中心(合肥)第六章第六章 HPF编程指南编程指南 6.1 6.1 HPFHPF概述概述 6.2 6.2 HPFHPF编程简介编程简介 6.3 6.3 数据映射数据映射 6.4 6.4 数据并行结构数据并行结构 6.5 6.5 HPFHPF语言的过程语言的过程 6.6 6.6 HPFHPF实例分析:实例分析:2 2D FFTD FFT 6.7 HPF6.7 HPF语言其他特性语言其他特性2023/1/144国家高性能计算中心(合肥)6.1 H
3、PF概述 引言引言 HPFHPF的语言特点的语言特点 HPFHPF的语言模型的语言模型2023/1/145国家高性能计算中心(合肥)引言 HPFHPF语言基础语言基础 HPFHPF历史历史 HPFHPF的设计目标的设计目标2023/1/146国家高性能计算中心(合肥)HPF语言基础 HPFHPF语言以语言以FORTRAN90FORTRAN90基础基础 扩展了扩展了FORTRAN90FORTRAN90 在并行机上支持数据对界和分布的控制;在并行机上支持数据对界和分布的控制;加入新的数据并行结构;加入新的数据并行结构;内部过程和标准库提供很多有用的高级抽象功能;内部过程和标准库提供很多有用的高级抽
4、象功能;EXTRINSICEXTRINSIC过程使得和其他语言或风格的接口进行标准化;过程使得和其他语言或风格的接口进行标准化;提供指令用于解决一些顺序和存储关联问题;提供指令用于解决一些顺序和存储关联问题;2023/1/147国家高性能计算中心(合肥)HPF历史 DECDEC,高性能,高性能FORTRANFORTRAN版本,版本,组织组织HPFHPF论坛,论坛,19921992年年1 1月;月;论坛正式成立,论坛正式成立,19921992年年3 3月;月;发布发布HPF1.0HPF1.0,19931993年年5 5月;月;发布发布HPF1.1HPF1.1,19941994年年1111月;月;
5、发布发布HPF2.0HPF2.0,19971997年年1 1月;月;2023/1/148国家高性能计算中心(合肥)HPF设计目标 首要目标:首要目标:对数据并行程序设计的支持;对数据并行程序设计的支持;跨越不同体系结构的可扩展性;跨越不同体系结构的可扩展性;在具有不同存储访问开销的并行计算机上的高性能在具有不同存储访问开销的并行计算机上的高性能 ;以标准以标准FortranFortran作为基础、与其它语言以及其它程序设计风格作为基础、与其它语言以及其它程序设计风格之间的开放接口和互操作性。之间的开放接口和互操作性。次要目标次要目标 能在有限时间内完成实现上的可行性;能在有限时间内完成实现上的
6、可行性;为为FortranFortran和和C C将来的标准活动提供支持;将来的标准活动提供支持;为以一致的方式向语言中增加高级特征提供一条有发展的途径。为以一致的方式向语言中增加高级特征提供一条有发展的途径。2023/1/149国家高性能计算中心(合肥)HPF的语言特点 HPF2.0HPF2.0的组成;的组成;HPF2.0HPF2.0的一些基本特征;的一些基本特征;2023/1/1410国家高性能计算中心(合肥)HPF2.0的组成 HPF2.0HPF2.0语言的组成语言的组成 语言的基本部分;语言的基本部分;已经核准的扩展部分;已经核准的扩展部分;已被承认的外部接口;已被承认的外部接口;20
7、23/1/1411国家高性能计算中心(合肥)HPF2.0的一些基本特征 数据并行制导数据并行制导数据并行制导数据并行制导 ;数据映射制导;数据映射制导;数据映射制导;数据映射制导;新的内部过程和库过程新的内部过程和库过程新的内部过程和库过程新的内部过程和库过程 ;外部过程外部过程外部过程外部过程 ;2023/1/1412国家高性能计算中心(合肥)HPF的语言模型 HPFHPF的并行方式的并行方式 HPFHPF模型的一些不足模型的一些不足2023/1/1413国家高性能计算中心(合肥)HPF的并行方式 HPFHPF支持非协作任务的并行方式支持非协作任务的并行方式 :HPFHPF程序中派生线程来执
8、行细粒度的并行任务程序中派生线程来执行细粒度的并行任务 将全部的将全部的HPFHPF程序作为一个任务,提供了粗粒度的并行性,在程序作为一个任务,提供了粗粒度的并行性,在每个任务中可以利用细粒度的循环或数组并行每个任务中可以利用细粒度的循环或数组并行 2023/1/1414国家高性能计算中心(合肥)HPF模型的一些不足 对以不太结构化的方式来表示并行性支持不够对以不太结构化的方式来表示并行性支持不够 ;对有一些数据并行应用对有一些数据并行应用HPFHPF处理得不好处理得不好 ;HPF HPF 不能和不能和SMPSMP构成的机群系统相结合构成的机群系统相结合2023/1/1415国家高性能计算中心
9、(合肥)6.2 HPF编程简介 一个简单的一个简单的HPFHPF程序实例;程序实例;HPFHPF的基本特征;的基本特征;2023/1/1416国家高性能计算中心(合肥)一个简单的HPF程序实例 program exampleprogram example!declare variable!declare variable integer a(1024)integer a(1024),b(1024)b(1024),c(1024)c(1024)integer:result=0integer:result=0!declare distribute!declare distribute !hpfhpf
10、$distribute$distribute a(blocka(block)!hpfhpf$distribute$distribute b(blockb(block)!hpfhpf$distribute$distribute c(blockc(block)!align values to distributed variables!align values to distributed variables a=1a=1 b=2b=2!add them!add them c=a+bc=a+b!calculate the sum in all elements of c!calculate the
11、 sum in all elements of c result=sum(c)result=sum(c)!print the result!print the result print *print *,“The last element isThe last element is”,c(1024)c(1024)print *print *,“The sum in all elements is”The sum in all elements is”,resultresultendend2023/1/1417国家高性能计算中心(合肥)一个简单的HPF程序实例 它的输出如下:它的输出如下:The
12、 last element is 3The last element is 3The sum in all elements is 3072 The sum in all elements is 3072 2023/1/1418国家高性能计算中心(合肥)HPF的基本特性1 变量声明变量声明 integer:integer:x,yx,y integer:result=0 integer:result=0 real real x,yx,y integer a(1024)integer a(1024),b(1024)b(1024),c(1024)c(1024)指令前缀指令前缀HPF指令是以Fortr
13、an 90语言中注释的形式出现的!hpf$ChpfChpf$*hpfhpf$2023/1/1419国家高性能计算中心(合肥)HPF的基本特性2 数据分布数据分布 作用:允许程序员向编译器建议如何将数组元素指定到处理器作用:允许程序员向编译器建议如何将数组元素指定到处理器存储器中。存储器中。!hpfhpf$distribute$distribute a(blocka(block)实例程序的分布图实例程序的分布图 2023/1/1420国家高性能计算中心(合肥)HPF的基本特性3 顺序变量顺序变量 没有显式指示为分布的数组和所有的标量没有显式指示为分布的数组和所有的标量 处理器的私有变量处理器的私
14、有变量 分布数组的赋值分布数组的赋值 a=1a=1,b=2 b=2 2023/1/1421国家高性能计算中心(合肥)HPF的基本特性4 多个分布数组之间的运算多个分布数组之间的运算 被选择的分布数组需满足如下条件被选择的分布数组需满足如下条件 :在语句中,该数组的同一元素最多只访问一次,该数组多次在语在语句中,该数组的同一元素最多只访问一次,该数组多次在语句中出现时除外;句中出现时除外;根据该数组将运算分配到各处理器后,引起的通信最少;根据该数组将运算分配到各处理器后,引起的通信最少;右部优先于左部右部优先于左部 ;效果图效果图2023/1/1422国家高性能计算中心(合肥)HPF的基本特性5
15、 分布数组的归约分布数组的归约 result=result=sum(csum(c);将将c c数组中所有元素求和,赋给顺序变量数组中所有元素求和,赋给顺序变量resultresult;2023/1/1423国家高性能计算中心(合肥)HPF的基本特性5 打印分布数组元素打印分布数组元素 HPFHPF中中I/OI/O语句在非并行代码段中,在处理器语句在非并行代码段中,在处理器0 0上执行。上执行。例例 :print*print*,“The last element is:”The last element is:”,c(1024)c(1024)处理器处理器0 0访问了处理器访问了处理器3 3上的分
16、布数组元素,上的分布数组元素,引起了处理器间引起了处理器间通信。通信。2023/1/1424国家高性能计算中心(合肥)6.3 数据映射 目的目的:使处理器间的通信开销最小;使处理器间的通信开销最小;负载在可用的处理器间均匀分布;负载在可用的处理器间均匀分布;2023/1/1425国家高性能计算中心(合肥)数据映射说明语句 模版模版 简单的抽象空间,可将其看成一个简单的抽象空间,可将其看成一个 没有内容的数组没有内容的数组 属性:属性:名字、维数、维大小!HPF$TEMPLATE tem(4,8)2023/1/1426国家高性能计算中心(合肥)数据映射说明语句 虚拟处理器阵列虚拟处理器阵列虚拟处
17、理器阵列有名字、维数、维大小三个属性 PROCESSORS指令用于定义虚拟处理器阵列虚拟处理器阵列中的处理器总数不得大于实际的物理处理器数 !HPF$PROCESSORS P(2,4)2023/1/1427国家高性能计算中心(合肥)数据映射说明语句 模板到虚拟处理器阵列的映射模板到虚拟处理器阵列的映射 HPFHPF提供了提供了DISTRIBUTEDISTRIBUTE编译指示编译指示 分布的方式分布的方式 :块分布块分布 循环分布循环分布 块循环分布块循环分布 2023/1/1428国家高性能计算中心(合肥)模板到虚拟处理器阵列的映射 块分布块分布 将数据分成相邻的将数据分成相邻的P P块块(P
18、(P为虚拟处理器阵列上相应维的大小为虚拟处理器阵列上相应维的大小)例子:例子:!HPF$TEMPLATE tem(16)!HPF$TEMPLATE tem(16)!HPF$PROCESSORS p(4)!HPF$PROCESSORS p(4)!HPF$DISTRIBUTE !HPF$DISTRIBUTE tem(BLOCKtem(BLOCK)ONTO p)ONTO p2023/1/1429国家高性能计算中心(合肥)模板到虚拟处理器阵列的映射 循环分布循环分布 将模板该维中的元素依次轮流分给不同的处理器将模板该维中的元素依次轮流分给不同的处理器 ;例子:例子:!HPF$TEMPLATE tem(
19、16)!HPF$TEMPLATE tem(16)!HPF$PROCESSORS p(4)!HPF$PROCESSORS p(4)!HPF$DISTRIBUTE !HPF$DISTRIBUTE tem(CYCLICtem(CYCLIC)ONTO p)ONTO p 2023/1/1430国家高性能计算中心(合肥)模板到虚拟处理器阵列的映射 块循环分布块循环分布块循环分布块循环分布 将模板该维划分为相邻的大小为将模板该维划分为相邻的大小为MM的子块,然后将这些子块依的子块,然后将这些子块依次轮流分给不同处理器次轮流分给不同处理器 例子:例子:!HPF$TEMPLATE tem(6)!HPF$TEMP
20、LATE tem(6)!HPF$PROCESSORS p(4)!HPF$PROCESSORS p(4)!HPF$DISTRIBUTE tem(CYCLIC(2)ONTO p !HPF$DISTRIBUTE tem(CYCLIC(2)ONTO p 2023/1/1431国家高性能计算中心(合肥)模板到虚拟处理器阵列的映射 分布数组与模板分布数组与模板 一个数组要分布必须要有一个模板一个数组要分布必须要有一个模板 模板来源:模板来源:与定义的模板与定义的模板对界对界对界对界(AlignmentAlignment););缺省的模板;缺省的模板;与另一个有模板的数组对界与另一个有模板的数组对界 ;20
21、23/1/1432国家高性能计算中心(合肥)分布数组与模板 与模板对界与模板对界与模板对界与模板对界 ALIGNALIGN编译指示,用来描述数组与模板的关系编译指示,用来描述数组与模板的关系 例子:例子:REAL REAL a(8)a(8)!HPF$!HPF$TEMPLATE tem(16)TEMPLATE tem(16)!HPF$!HPF$DISTRIBUTE DISTRIBUTE tem(BLOCKtem(BLOCK)!HPF$!HPF$ALIGN ALIGN a(ia(i)WITH tem(2*i)WITH tem(2*i)2023/1/1433国家高性能计算中心(合肥)分布数组与模板
22、缺省的模版缺省的模版 HPFHPF中可以用中可以用DISTRIBUTEDISTRIBUTE编译指示直接说明数组的分布方编译指示直接说明数组的分布方式式 例子:例子:INTEGER a(1024)INTEGER a(1024)!HPF$DISTRIBUTE !HPF$DISTRIBUTE a(BLOCKa(BLOCK)等价于:等价于:INTEGER a(1024)INTEGER a(1024)!HPF$TEMPLATE tem(1024)!HPF$TEMPLATE tem(1024)!HPF$DISTRIBUTE !HPF$DISTRIBUTE tem(BLOCKtem(BLOCK)!HPF$A
23、LIGN !HPF$ALIGN a(ia(i)WITH )WITH tem(item(i)2023/1/1434国家高性能计算中心(合肥)分布数组与模板 分布数组之间的对界分布数组之间的对界a(2*i)=a(2*i)=b(ib(i)*2)*2 对应于:对应于:REAL REAL a(200),b(100)a(200),b(100)!HPF$TEMPLATE tem(600)!HPF$TEMPLATE tem(600)!HPF$DISTRIBUTE !HPF$DISTRIBUTE tem(BLOCKtem(BLOCK)!HPF$ALIGN!HPF$ALIGN a(ia(i)WITH tem(3*
24、i)WITH tem(3*i)!HPF$ALIGN!HPF$ALIGN b(ib(i)WITH a(2*i)WITH a(2*i)2023/1/1435国家高性能计算中心(合肥)一个数据映射的HPF程序段分析 考虑如下程序段考虑如下程序段 :INTEGERa(100),b(100),c(101),i!HPF$ALIGN a(i)WITH b(i-1)!HPF$PROCESSORSp(4)!HPF$DISTRIBUTE a(BLOCK)ONTO p!HPF$DISTRIBUTE c(CYCLIC)ONTO p FORALL(i=2:100)a(i)=a(i)+b(i1)c(i)=c(i1)+c(
25、i)+c(i+1)ENDFORALL2023/1/1436国家高性能计算中心(合肥)一个数据映射的HPF程序段分析 数据映射过程:数据映射过程:2023/1/1437国家高性能计算中心(合肥)6.4 数据并行结构 数组运算数组运算 FORALLFORALL语句和语句和FORALLFORALL结构结构 INDEPENDENTINDEPENDENT指示指示2023/1/1438国家高性能计算中心(合肥)数组运算 数组和数组段数组和数组段 全数组和数组段都表示一批数据全数组和数组段都表示一批数据 数组段可以有起点、终点、步长数组段可以有起点、终点、步长 例子:例子:a(1:3,1:2)a(1:3,1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 并行 计算 多媒体 课件 程序设计 ch06HPF 编程 指南
限制150内