分层并行计算模型_陈国良
并行计算课程的教学方法

并行计算课程的教学方法
陈国良;孙广中;徐云;吴俊敏
【期刊名称】《中国大学教学》
【年(卷),期】2004(000)002
【摘要】教育部高等学校计算机科学与技术教学指导委员会,曾于1998年将并行计算课程定位在高等学校计算机专业高年级本科生或研究生以及面向计算学科的非计算机专业的研究生层次上。
设置该课程的宗旨是为了我国培养面向21世纪的厚基础、宽口径、强能力、高素质具有时代性多样化人才的需要。
为此在编写此课程的教材时着重强调专业知识的宽广和内容的先进。
【总页数】3页(P35-37)
【作者】陈国良;孙广中;徐云;吴俊敏
【作者单位】中国科学技术大学;中国科学技术大学;中国科学技术大学;中国科学技术大学
【正文语种】中文
【中图分类】G64
【相关文献】
1.变革高中历史教学方法适应新课程改革要求——浅谈在新课程下高中历史教学方法的改革与创新
2.变革高中历史教学方法适应新课程改革要求——浅谈在新课程下高中历史教学方法的改革与创新
3.以国家精品课程建设推动教学方法改革--国家精品课程"天气学"教学方法探索实践
4.“并行计算”课程中课程思政教育研究与实践
5.多核时代"并行计算"课程教学模式研究与实践
因版权原因,仅展示原文概要,查看原文内容请购买。
一、国家高性能计算中心(合肥)—大数据挖掘与计算研究室二、研究方向

欢迎希望成为我的学生们阅读,包括本科生毕业设计、推免硕士研究生、统招硕士研究生和直博研究生。
下面先介绍我们的情况,然后提出对新学生的要求和期望。
本材料共4页,成稿于2018年8月14日。
一、国家高性能计算中心(合肥)—大数据挖掘与计算研究室本实验室隶属于安徽省重点实验室—国家高性能计算中心(合肥),从事高性能计算与应用方向,是计算机学院的重点方向。
实验室由陈国良院士创建并领衔负责,现有100多名博士后、博士生和硕士生。
上图为实验室位于东区科研楼五楼一角。
现在本实验室共有1名博士后(与讯飞联合培养)、5名博士生、11名硕士生。
二、研究方向1.文本序列异同分析:开源程序集,DNA和蛋白质序列,学术文献挖掘;2.软件分析:代码克隆,代码推荐和生成,软件架构改良;3.并行计算及性能优化:自适应并行编程框架,并行算法及系统性能优化;4.区块链技术及应用。
三、研究成果本研究室早期得到985工程“信息科技前沿理论与应用”创新平台、教育部“大规模科学工程计算”长江学者和创新团队、教育部和外专局“计算科学及其应用基础”111引智计划等重大项目支持,目前得到教育部“高性能计算协同创新”2011计划、科技部“大数据分析及应用创新团队”、“面向大规模序列同源问题的并行分布式算法及其关键技术研究”基金委面上项目等新近支持。
程序集和基因组中原版片段或祖先片段搜寻和分析称之为序列同源分析,是软件源码补全、代码自动生成和推荐等新一代软件开发技术中的理论基础和关键技术,也是文本异同分析共性技术和关键。
我们发展的Large Gap克隆工具CCAligner 和序列比对算法BitMapper,分别在软件工程顶会ICSE2018和Bioinformatics2018上发表,其他研究成果有发表在数据挖掘顶刊TKDE和并行计算顶刊TPDS上。
四、研究意义左图说明并行计算需要学习和训练,右图说明并行计算是大数据和人工智能的核心技术和支撑。
我们开展的大数据挖掘与计算,主要是进行大规模序列数据的异同分析和挖掘,依靠的是并行算法和并行计算技术。
并行计算教学探讨

292学苑论衡一、概述并行计算是高性能计算的代表,是一个国家经济和科技实力的综合体现,也是促进经济、科技发展,社会进步和国防安全的重要工具,是世界各国竞相争夺的战略制高点。
受半导体发热效应的影响,单处理器上的运算速度已经达到极限。
2003年以后,“多核”的并行计算架构逐步成为人类追求更高计算性能的重要途径,并在行业中迅速普及。
并行计算一直应用于航天、国防、气象、能源等国家级重大科研项目,成为“贵族产品”。
随着微电子技术的发展,使用微处理器构建并行计算系统的成本不断下降。
同时,互联网和物联网的发展使高性能计算在“大众市场”的需求日益迫切,Hadoop 的诞生让并行计算“大众化”成为现实,并催生了云计算和大数据。
产业的迅速发展刺激着人才需求的变化,并行计算人才需求开始由研究生向本科生延伸。
总之,无论是计算性能发展的要求,还是产业发展的需求,都给计算机人才的培养带来了重大的影响。
具体的影响是什么?本科教育如何应对?文章就这些问题做了进一步的探讨。
二、并行计算综述(一)并行计算的定义并行计算(Parallel Computing)是一种相对于串行的计算模式,是指使用多种计算资源并行性地解决问题的过程。
狭义上的并行计算尤指同时使用多种计算资源解决计算问题的过程,它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分由一个独立的处理机来并行处理。
(二)并行计算的层次架构时间重叠、资源重复和资源共享是并行计算的三种实现技术。
可以在处理单元、CPU、板载和主机等级别上重复资源构建并行架构。
(1)处理单元级并行即以处理单元(PU)为资源重复单位在CPU 内部实现并行计算。
比如阵列处理机、向量处理机和图形处理器(GPU)。
(2)CPU 级并行以CPU 为资源重复单位建立并行架构,即多处理机系统。
比如共享存储模式的对称多处理机(SMP 系统)和分布式存储模式的大规模并行处理机(MPP)系统。
大数据计算理论基础[2014-05]
![大数据计算理论基础[2014-05]](https://img.taocdn.com/s3/m/94c241fd4693daef5ef73d73.png)
8
2、计算理论(Theory of computation)
(3) 串行计算类:P,NP,NPC,NPH
• • • • P类问题:在确定图灵机上多项式(Polynomial)时间内可求解的一类问题。 NP类问题:在非确定图灵机上多项式时间内可求解的一类问题(所有NP问题均必 须在有限步内是可判定的)。 NPC问题:对于L∈NP的问题,且NP类中的每一个L’均可在多项式时间内归约 (转换)到L,L’≤P L,则称L为NPC(NP完全)的(第一个被证明是NPC问题的 是布尔满足性问题:Boolean Satisfiability Problem,SAT)。 NPH(难)问题:一个问题H称为NP难的,当且仅当存在着一个NPC问题L,L可 在多项式时间内图灵归约(Turing-Reduction)到H。简记之为:L(NPC) ≤T H(NPH) (例如判定停机问题是NPH问题)。
2
目 录
1. 1. 计算科学与计算问题分类 计算机科学与计算问题分类 (1) (1) 计算科学 计算机科学的经典定ቤተ መጻሕፍቲ ባይዱ (2) 算法定义的数学解释 计算机科学定义的数学解释 (2)
(2) 支撑点空间的定义 (3) 举例 (4) 完全支撑点空间
6.
数据的划分技术
(1) 超平面划分 (2) 有利点划分 (3) 包络球划分
•
14
4、度量空间:大数据统一化抽象表示
supinf d x, y
xX yY
supinf d x, y
yY xX
d H X , Y max{supinf d x, y , supinf d x, y }
xX yY yY xX
15
4、度量空间:大数据统一化抽象表示
并行算法的设计与分析(1).

第一章 绪论
1.2.1 并行计算机的体系结构: 并行计算机分类
结构模型-物理机模型
VP VP 虚拟分布共享存储(DSM) P/C P/C
…
VP
…
P/C
LM
LM
LM
交叉开关 SM (a) PVP
总线或交叉开关 SM (b) SMP, 物理上单一地址空间 LM
P/C
P/C
…
P/C
定制网络 (d) DSM (MPP/Cluster), 逻辑上单一地址空间 LM LM
并行算法设计与分析
钟诚
3236396, chzhong@
教材 陈国良.并行算法的设计与分析,第3版. 北京:高等教育出版社,2009
参考书 [1] 陈国良. 并行计算——结构•算法 •编程, 第3版. 北京:高等 教育出版社,2011 [2] 陈国良等. 并行算法实践.北京:高等教育出版社,2004 [3] 苏德富,钟诚. 计算机算法设计与分析,第2版. 北京:电子 工业出版社, 2005 [4] C. Xavier, S. S. Iyenger著, 张云泉等译. 并行算法导论.北京: 机械工业出版社, 1998 [5] Ananth Grama. 并行计算导论, 第2版,英文版. 北京:机械 工业出版社,2003
版权声明
本教学PPT仅供课堂教学教师使用
第一章 绪论
1.1 引言
1. 并行处理 (Parallel Processing) 挖掘计算(Computing)过程的并发事件的信息处理. 2. 并发性 (Concurrency) 并行性(Parallelism) 同时性(Simultaneity) 流水线(Pipelining) 3. 并行处理的级别(Parallel Processing Level) 指令级并行(Instruction Level Parallelism-ILP, 指令内部并行,指令之间并行) 细粒度并行 (fine grain parallelism/ tiny granularity parallelism ) 线程级并行(Thread Level Parallelism-TLP) 中细粒度并行 (fine- medium grain parallelism) 进程级(Process Level Parallelism-PLP)/过程级/算法级并行 中粒度并行 (medium grain parallelism) 任务级并行(Task Level Parallel) 粗粒度并行 (coarse grain parallelism) 4. 并行计算(Parallel Computing)学科 并行计算机体系结构 (Parallel Computer Architectures) 并行算法 (Parallel Algorithms) 并行程序设计 (Parallel Programming) 5. 多核处理器(Multi-core Processors,又称片上多处理器-Chip Multi-Processor, CMP) 、众核处理器(Many-core Processors, 如GPU)、多线程并行技术(Multithread Parallel Techniques) 的出现与应用,使得并行算法的研究与开发显得极其 迫切且富有挑战性。
并行计算(陈国良版)课后答案

第三章 互连网络3.1 对于一颗K 级二叉树(根为0级,叶为k-1级),共有N=2^k —1个节点,当推广至m —元树时(即每个非叶节点有m 个子节点)时,试写出总节点数N 的表达式。
答:推广至M 元树时,k 级M 元树总结点数N 的表达式为:N=1+m^1+m^2+。
.。
+m^(k —1)=(1—m^k)*1/(1-m);3.2二元胖树如图3.46所示,此时所有非根节点均有2个父节点.如果将图中的每个椭圆均视为单个节点,并且成对节点间的多条边视为一条边,则他实际上就是一个二叉树。
试问:如果不管椭圆,只把小方块视为节点,则他从叶到根形成什么样的多级互联网络? 答:8输入的完全混洗三级互联网络.3.3 四元胖树如图3.47所示,试问:每个内节点有几个子节点和几个父节点?你知道那个机器使用了此种形式的胖树?答:每个内节点有4个子节点,2个父节点。
CM —5使用了此类胖树结构.3.4 试构造一个N=64的立方环网络,并将其直径和节点度与N=64的超立方比较之,你的结论是什么?答:A N=64的立方环网络,为4立方环(将4维超立方每个顶点以4面体替代得到),直径d=9,节点度n=4B N=64的超立方网络,为六维超立方(将一个立方体分为8个小立方,以每个小立方作为简单立方体的节点,互联成6维超立方),直径d=6,节点度n=63.5 一个N=2^k 个节点的 de Bruijin 网络如图3。
48。
个节点的二进制表示,。
试问:该网络的直径和对剖宽度是多少?答:N=2^k 个节点的 de Bruijin 网络 直径d=k 对剖宽带w=2^(k-1)3.6 一个N=2^n 个节点的洗牌交换网络如图3.49所示.试问:此网络节点度==?网络直径==?网络对剖宽度==?答:N=2^n 个节点的洗牌交换网络,网络节点度为=2 ,网络直径=n —1 ,网络对剖宽度=43.7 一个N=(k+1)2^k 个节点的蝶形网络如图3.50所示.试问:此网络节点度=?网络直径=?网络对剖宽度=?答:N=(k+1)2^k 个节点的蝶形网络,网络节点度=4 ,网络直径=2*k ,网络对剖宽度=2^k3。
并行计算(陈国良版)课后答案解析

第三章互连网络3.1 对于一颗K级二叉树(根为0级,叶为k-1级),共有N=2^k-1个节点,当推广至m-元树时(即每个非叶节点有m个子节点)时,试写出总节点数N的表达式。
答:推广至M元树时,k级M元树总结点数N的表达式为:N=1+m^1+m^2+...+m^(k-1)=(1-m^k)*1/(1-m);3.2二元胖树如图3.46所示,此时所有非根节点均有2个父节点。
如果将图中的每个椭圆均视为单个节点,并且成对节点间的多条边视为一条边,则他实际上就是一个二叉树。
试问:如果不管椭圆,只把小方块视为节点,则他从叶到根形成什么样的多级互联网络?答:8输入的完全混洗三级互联网络。
3.3 四元胖树如图3.47所示,试问:每个内节点有几个子节点和几个父节点?你知道那个机器使用了此种形式的胖树?答:每个内节点有4个子节点,2个父节点。
CM-5使用了此类胖树结构。
3.4 试构造一个N=64的立方环网络,并将其直径和节点度与N=64的超立方比较之,你的结论是什么?答:A N=64的立方环网络,为4立方环(将4维超立方每个顶点以4面体替代得到),直径d=9,节点度n=4B N=64的超立方网络,为六维超立方(将一个立方体分为8个小立方,以每个小立方作为简单立方体的节点,互联成6维超立方),直径d=6,节点度n=63.5 一个N=2^k个节点的de Bruijin 网络如图3.48。
试问:该网络的直径和对剖宽度是多少?答:N=2^k个节点的de Bruijin网络直径d=k 对剖宽带w=2^(k-1)3.6 一个N=2^n个节点的洗牌交换网络如图3.49所示。
试问:此网络节点度==?网络直径==?网络对剖宽度==?答:N=2^n个节点的洗牌交换网络,网络节点度为=2 ,网络直径=n-1 ,网络对剖宽度=43.7 一个N=(k+1)2^k个节点的蝶形网络如图3.50所示。
试问:此网络节点度=?网络直径=?网络对剖宽度=?答:N=(k+1)2^k个节点的蝶形网络,网络节点度=4 ,网络直径=2*k ,网络对剖宽度=2^k3.9 对于如下列举的网络技术,用体系结构描述,速率范围,电缆长度等填充下表中的各项。
并行算法研究进展

并行算法研究进展陈国良并行算法为并行计算的发展奠定理论基础,是我国高性能计算技术发展的关键之一。
要使其研究健康发展必须从学科建设入手,重视人才培养。
引言什么是并行算法简单地讲,算法就是求解问题的方法和步骤,而并行算法就是用多台处理机联合求解问题的方法和步骤,其执行过程是将给定的问题首先分解成若干个尽量相互独立的子问题,然后使用多台计算机同时求解它,从而最终求得原问题的解。
人们之所以对并行性感兴趣,是因为在现实世界中存在着固有的并行性。
其实在日常生活中,你可能自觉或不自觉地都在运用着并行,比如一边听演讲,一边记笔记就是听觉、视觉和手写的并行。
这类例子不胜枚举。
然而,在处理很多事务时,比如进行推理和计算,人们又习惯用串行方式,在这种情况下,要改用而且要用好并行性也并非易事。
同时,就计算科学而言,并行计算理论仍处于发展阶段,特别是早期的并行机均很昂贵,编写并行软件又很难,所以并行性的优点尚未被普遍的认同。
为什么需要并行首先,对于那些要求快速计算的应用问题,单处理机由于器件受物理速度的限制而无法满足要求,所以使用多台处理机联合求解就势在必行了;其次,对于那些大型复杂的科学工程计算问题,为了提高计算精度,往往需要加密计算网格,而细网格的计算也意味着大计算量,它通常需要在并行机上实现;最后,对于那些实时性要求很高的应用问题,传统的串行处理往往难以满足实时性的需要而必须在并行机上用并行算法求解。
并行算法的分类并行算法可以分为数值并行算法和非数值并行算法:前者研究基于代数关系运算的数值计算问题的并行算法,主要包括矩阵运算、方程组的求解和数字信号处理等;后者研究基于比较关系运算的符号处理问题的并行算法,主要包括图论问题、数据库操作和组合优化等。
本文重点讨论非数值并行算法。
并行算法研究的层次并行算法的研究可分为并行计算理论、并行算法的设计与分析以及并行算法的实现三个层次。
其中并行计算理论主要研究并行计算模型、计算问题的下界、问题的可并行化、NC类问题1和P-完全问题2等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第38卷第7期V ol .38,No .72008年7月JOU RNAL OF UNIVERSI TY OF SCIENCE AND TECHNOLOGY OF CH I NAJul .2008文章编号:0253-2778(2008)07-0841-07 收稿日期:2008-05-22;修回日期:2008-06-23基金项目:国家自然科学基金重点项目(60533020)资助.作者简介:陈国良(通讯作者),中国科学院院士.E -mail :glchen @u stc .edu .cn分层并行计算模型陈国良1,2,苗乾坤1,2,孙广中1,2,徐 云1,2,郑启龙1,2(1.中国科学技术大学计算机科学与技术系,安徽合肥230027;2.安徽省高性能计算重点实验室,安徽合肥230027)摘要:传统单一的并行计算模型变得越来越复杂,对并行计算各阶段针对性不强、指导能力差的特点,为此提出了对并行计算模型分层研究的思想,依此把并行计算模型分为并行算法设计模型、并行程序设计模型、并行程序执行模型三个层次,分别给出了各个模型的特点及研究内容.理论分析结果表明,通过分层,每个阶段的模型分工明确,目标单一,指导性强.关键词:分层并行计算模型;并行算法设计模型;并行程序设计模型;并行程序执行模型中图分类号:TP302,TP338.6 文献标识码:ALayered models of parallel computationCH EN Guo -liang1,2,MIAO Qian -kun1,2,SUN Guang -zhong1,2,XU Yun1,2,ZH ENG Qi -long1,2(1.Depar tmen t o f Compu ter S cience and Tech no logy ,University o f S cience &Technolog y of China ,H ef ei 230027,China ;2.Anhu i P rovince Key Laboratory o f Com pu ting and Communication S o ftware ,H ef ei 230027,China )Abstract :The conventional unified parallel co mputatio n mo del becomes mo re and m ore com plex ,w hich has w eak pertinence and little g uidance fo r each parallel com puting stag e .A layered idea for parallel co mputatio n model research w as propo sed ,in w hich the layered parallel com putation m odel w as com po sed of parallel alg orithm design model ,parallel pro gramming model and parallel executio n model .The proper ties o f each model w ere described ,and research spots w ere also given .Theoretical analysis results show that the layered parallel computation model is clear and sing le -go aled for each parallel computing stage .Key words :parallel co mputatio n layered model ;parallel algo rithm desig n m odel ;parallel prog rammingmo del ;parallel execution mo del0 引言当今几乎所有学科都在向定量化和精细化的方向发展,为此必须使用计算,比如:计算生物,计算物理,计算化学等.通常这些计算都是非常耗时的,单个PC 的计算能力远远不能满足人们的需求,提高计算速度的有效方法是采用并行计算[1].并行计算现在已经广泛应用于气象、能源、生物、制药、航天、抗灾、国防、制造、科研等关系到国计民生等重要领域[2~4],成为一个国家科技水平的标志.近年来,国内外并行计算机的发展不断地迈向新台阶,采用国产高性能通用处理器芯片龙芯2F 的国产万亿次高性能计算机KD -50-I [5]的研制成功是我国并行计算机国产化的重大突破.不久的将来,并行计算机将会广泛出现在人们的日常生活中.并行计算就是在并行/分布式计算机上所做的计算.并行计算的过程可分为如下几个步骤[1,6]:对于一个给定的问题,计算科学家首先要将其描述为 待求解的数值或非数值计算问题;然后要为该计算问题设计一个并行算法,并选择某种并行程序设计语言编程来实现它;最后领域专家/程序使用者要在具体的并行机上编译和运行程序(软件)最终求解出此问题.从以上并行计算的一般过程可以看出,并行计算以并行算法为理论基础,以并行计算机为硬件平台,以并行程序设计为软件支撑.计算模型是为了计算目的将真实体(计算机软/硬件)进行一定的抽象而成的[1,7].并行计算模型是算法设计者所看到的参数化了的并行机,是提供给编程者的计算机软/硬件接口,是程序执行时的系统软/硬件支撑环境.并行计算模型是算法设计者、程序设计者和系统运行者在实现并行计算时所看到的虚拟并行计算机,是他们共同执行任务的桥梁.传统的并行计算模型一般指的是并行算法设计模型,为并行算法的研究者提供一个独立于具体并行机体系结构的抽象的并行机.一般模型中通常定义了机器参数、计算行为、开销函数,它们被称为计算模型三要素.随着并行计算机体系结构的飞速发展,为了使计算模型能够反映体系结构的变化,人们不断地向该单一模型中加入旨在反映机器特性的新参数,调整计算行为,修改开销函数.因此,单一模型变得越来越复杂,在实际的算法设计中难以使用.根据并行计算的一般过程,我们提出将并行计算模型的下一步研究分为并行算法设计、并行程序设计、并行程序执行三个层次来考虑.通过分层,在并行计算的各个阶段,模型的职能各有侧重,分工明确,目标单一,从而适合不同阶段的设计人员关注主要的问题.按照分层的观点,并行计算模型可定义为如下的三元组并行计算模型={并行算法设计模型, 并行程序设计模型,并行程序执行模型} 并行算法设计模型,从算法的角度,将不同的并行机抽象为一种通用虚拟并行机,算法设计者在其上设计和分析并行算法;并行程序设计模型,从编程的角度指导程序员,按照程序的执行流程,选用某种并行语言,正确编程实现某并行算法;并行程序执行模型,从性能效率的角度指导程序运行者,将不同的并行语言实现的程序,在具体的并行机上编译和优化运行并行程序.1 研究背景1.1 并行计算模型相关工作传统的并行计算模型,主要是针对算法研究者,比较抽象、理论性强,不实用,只关心并行算法的设计与分析,不考虑算法的具体实现和执行.文献[8]介绍了并行计算模型的发展历史,总结了各阶段中一些典型的并行计算模型的特点.并行计算模型的演变历史,首先是模型以CPU计算为中心,再以网络通信为中心,最后逐步过渡到以存储访问为中心.根据并行计算模型的发展历史,可以把并行计算模型分为三代[8].早期的并行机为共享存储器的SIM D和M IMD的计算机,相应地,提出了以计算为核心的所谓第一代并行计算模型PRAM[9,10]和A PRAM[11]等.在此期间,还出现了不少各种不同互连结构的SIM D机器,相应地也提出了SIMD-IN模型,并在其上开发了不少优秀的并行算法.后来出现了分布存储的大规模并行机M PP,相应地提出了以网络通信为核心的所谓第二代并行计算机模型BSP[12],LogP[13],NH BL[14]等.最近分布共享的并行机成为主流并行机,CPU和主存之间的速度差异越来越大,存储系统逐渐成为影响系统性能的主要瓶颈,为此提出了以存储访问为核心的所谓第三代并行计算机模型UM H[15],DRAM(h)[16]等.另外,在第三代并行计算机模型的基础上,又提出了同时考虑层次存储和层次并行的所谓第三代半并行计算机模型H PM[17]等.从并行计算模型的发展演变过程可以看出,并行计算模型沿着丰富、强化单一模型的路线发展.在单指令流共享存储模型PRAM的基础上,扩展为多指令流共享存储模型A PRAM等.在多指令流共享存储模型的基础上,扩展为多指令流分布存储模型BSP,Lo gP等.在多指令流分布存储模型的基础上,扩展为考虑不同层次存储模型UM H,DRAM(h)等.在层次存储模型基础上,又进一步扩展为考虑层次并行模型H PM等.1.2 模型分层的基本出发点利用并行计算所能获得的性能综合体现在算法、实现、编译器、操作系统、处理器体系结构、网络互连技术等因素,因此实际的计算行为相当复杂.一味追求单一模型的功能强和多目标,致使单一模型越来越复杂,最终导致模型不实用和不可操作性.单一模型中,反映机器不同特性的参数过多,会使单一模型描述越来越困难,最终导致成本函数过于复杂而无法求解.当在单一模型中又考虑到机器的底层特性和不同的硬件并行度时,使得模型很难建立.对算法设计者而言,单一模型太复杂,设计算法时考虑的因素过多, 842中国科学技术大学学报第38卷影响设计低时空开销的优秀算法.所以,并行计算模型应按算法的设计、算法的实现和算法的执行进行分层,即模型可分为:并行算法设计模型,并行程序设计模型和并行程序执行模型,前者面向并行算法研究者,中者面向并行程序设计者,后者面向程序运行者.并行算法设计模型是算法设计者和计算机体系结构之间的桥梁,主要用来指导并行算法的设计与分析.并行程序设计模型是程序设计者与计算机软/硬件的接口,主要负责把算法转换成可在并行机上正确执行的程序.并行程序执行模型是编程人员在并行机软/硬件支撑下,编译和运行机器目标代码,以优化程序的性能.分层计算模型可将单一模型中的功能按要求分配到模型不同的层次中,缓解了单一计算模型的精确性与可使用性之间的矛盾.分层后,各层次模型职能不同,目标单一,各负其责,易于设计与实现.分层并行计算模型中的并行算法设计模型和并行程序设计模型目前相对比较成熟,从而可集中精力重点研究并行程序执行模型.三层并行计算模型功能如图1所示.三层并行计算模型从几何形状上看,呈现哑铃形状:从不同的并行计算机来(抽象计算参数建立模型),经过统一的加工后(用语言编程实现算法),又回到不同的并行计算机中去(运行代码,求解问题).文献[18]从编程者的角度把并行程序的编写过程分为若干层次,本文将并行计算的整个过程分为三个层次,而并行编程是我们提出的三层模型中的一个层次.图1 并行计算的分层模型示意图Fig .1 Overview of layered models for parallel computing2 分层的并行计算模型从给定的计算问题开始,首先用伪代码设计并行算法,然后用源语言算法的时空复杂度实现算法,最后编译成机器代码在实际并行机上运行,整个并行计算过程表现出来的性能取决于一系列的因素.算法的伪代码数和通信次数决定算法的时空复杂度和通信复杂度;程序设计语言、编译器、运行环境的选择决定每条源级语句转换成机器指令的数量和优化的程度;操作系统、处理器、存储系统、体系结构决定每条机器指令实际执行的速度;I /O 系统决定整个程序I /O 操作的数量.为了在实际并行机上获得高的编程和运行效率,并行计算的各个阶段都要在各自模型的限制和约束下进行,即并行算法设计模型、并行程序设计模型、并行程序执行模型.下面我们分别给出每个模型的定义、参数、行为描述以及当前已有的相关模型.2.1 并行算法设计模型算法设计模型需要反映机器硬件关键特性,同时又必须非常简单易于算法描述和表达,是算法设计者与机器结构之间的桥梁,面向算法的研究者.算法设计模型重点关注算法的设计原理,确保设计出来的算法的正确性和较低的时间、空间复杂度.算法设计模型主要体现在如下三要素:机器参数(抽象出的CPU ,M emo ry ,I /O 网络参数等)、执行行为(算法的同步,异步执行等)、成本函数(算法的复杂度函数,它是机器参数的函数),其功能特性如图2所示.长期以来,计算机科学家研究并行算法的设计模型,提出了各种反映当时并行机体系结构的模型[8].图2 并行算法设计模型示意图Fig .2 Overview of parallel algorithm design model并行算法设计模型理论性较强,计算机科学家们为此做出了诸多的贡献.随着并行机的发展,不少计算机结构科学家,参与了所谓第二代并行计算模型的研究.第三代并行计算模型,涉及并行机底层的很多硬件知识,所以参与研究该模型的科学家越来越多.并行算法设计模型的出现,首先使得并行算法的研究不再仅限于针对某台具体的并行计算机专门设计和分析并行算法,更重要的是,可在一类抽象的843第7期分层并行计算模型 并行机上研究算法,从而使得并行算法本身更趋普适化,可广泛适用于某一类并行机;其次,在并行算法设计模型上设计出的并行算法,可以利用数学工具严格定量地分析其性能,这样使得并行算法学科本身更加定量化,更趋成熟;最后,因为有了统一的并行算法设计模型,这样在其上设计出的很多不同的并行算法,可以根据算法的复杂度统一标准对其优劣进行相互比较.按照我们的研究思路,并行算法设计模型是我们提出的三层计算模型中最基础的部分,其他两层模型(并行程序设计模型和并行程序执行模型)都尽量参照该模型进行研究.2.2 并行程序设计模型并行算法设计出来后,我们需要考虑如何正确、方便、快速地在某种并行程序设计模型下用编程语言实现[19].并行程序设计模型也可以称为并行程序编程模型,是提供给程序员使用的,为程序员提供了一些计算机软/硬件的编程接口,隐藏了通信和任务调度的细节,在一定程度上简化了并行程序的编写.程序设计模型主要确保并行算法使用某种程序设计语言可以正确地在并行计算机上编程实现.并行程序设计模型应该尽量缩减与传统串行编程模型的差异,让串行程序设计人员可以快速地掌握并行程序编写的方法,降低大规模并行程序设计的难度.一个成功的并行程序设计模型需要具有可编程性、可移植性、可扩展性、通用泛化性.通过提高并行程序设计模型和相应并行程序设计系统的抽象层次,屏蔽并行系统中的底层实现细节,支持通用的并行数据结构和并行程序的开发,最终提高程序的开发效率.程序设计模型需要有自己的高级语言或者对当前语言进行扩展,用语言对程序员进行约束,使他们在该语言下实现算法,其功能特性如图3所示.当今流行的并行程序设计模型主要有大粒度的进程级的消息传递模型,如M PI[20,21];中、细粒度的线程级共享变量模型,如OpenM P[22],Pthread[23];细粒度进程级图3 并行程序设计模型示意图Fig.3 Overview of parallel programming model的数据并行模型,如H PF[24].并行计算机体系结构的快速发展[2~4],多核桌面计算机的普及[25~27]及更大规模并行计算机的设计与研制,给并行程序设计模型的研究带来新的机遇,也提出了挑战.要充分利用这些并行计算资源,就需要设计更加易于使用的并行编程模型,以满足普通程序员开发并行程序的需求.由于并行程序要比串行程序复杂的多,加之并行执行的不确定性、易出错性,并行程序设计一般由并行领域的专业人员来完成.多个线程同时运行时,通常有对共享数据的访问,产生数据竞争问题,最终的执行结果跟多个线程对共享数据区读写的先后顺序有关.并行程序执行时,每次执行的指令流的顺序有差别,执行中遇到的错误往往很难重现,这就导致了对并行程序执行的分析、调试、优化非常困难.一般来说,不同的并行算法会有一些共同的结构,可以抽取出这些结构,把它们放到编程模型中.这样程序员编程时可以集中在应用问题本身的实现上,考虑如何把算法映射到适合的编程模型,其他并行处理相关的细节,诸如通信如何完成、任务怎么映射到各个线程、如何进行同步等,在编程时不需要显式考虑;利用编程模型提供的一些接口,并行相关的细节都交给运行环境处理.一些常见的并行编程风范有fo rk/join,pipeline,w o rk-farms,meshes等模型.这些模型可以解决很大范围的问题,并且它们都是经过仔细检验和多次验证的、保证可以开发出来的正确的并行程序.模型中定义了程序的控制流,所有并行相关的部分都放在编程模型中解决,应用相关的一些代码就可以直接使用已有的串行程序,程序员只需要把这些应用相关的代码填入到控制流的各个阶段,一个并行程序就可以快速地设计出来了.研究者近年来基于并行编程模型的思想开发了许多简化并行程序设计的支持系统,如M apReduce[28],Dry ad[29],Hadoop[30],CO2P3S[31].这些系统在保证程序正确性的前提下,都尽量使程序员从高层入手,不要求有并行编程的经验,就可以很容易地编写出高效的可并行执行的程序.目前这些系统支持的应用还有一定的局限性,只有能和系统提供的编程模型匹配的应用才可以很好地在以上系统上实现,主要应用在诸如信息检索、数据挖掘等领域.随着研究的深入,它们支持的编程模型也将越来越多.并行编程语言是并行程序设计模型的一个重要组成部分.随着多核核技术的迅猛发展,学术界和工844中国科学技术大学学报第38卷业界对高生产率并行编程语言需求迫切,对新一代并行编程语言的研究正日渐升温.S tanfo rd 大学开发的Sequoia [32]面向Cell 多核处理器和机群系统,提供对存储层次进行程序设计的方法,通过把存储层次暴露给程序员,允许他们显式地对数据在各级存储中进行分配,在保证高可移植性的前提下,取得了很好的性能和效率.美国HPCS[33]项目资助三种新型并行编程语言,IBM 的X10[34]、Sun 的Fortress[35]以及Cray 的Chapel [36].它们都属于研究型语言,从降低并行编程难度出发,力争提高并行软件的生产率,同时还要提供高性能、便于移植和健壮性的支持.目前只在小范围内使用,还没有对当前并行编程和并行软件的开发产生革命性的影响.随着时间的推移,CPU 和存储器性能差异会日益加大,存储层次也会变得更加复杂,这些新出现的编程语言与以往最大的不同是提供了对存储层次的显式控制,允许程序员在编程语言中对存储局部性进行描述,明确指出数据所在的位置,试图解决目前存储系统的性能瓶颈问题.2.3 并行程序执行模型并行程序的执行过程包括:将高级语言编写的程序编译成机器语言,运行时的资源分配和线程调度,数据在各级存储系统中的移动,每条指令在实际机器上的执行过程以及指令流水线的动态执行.这些因素在使用算法设计模型进行算法设计和使用程序设计模型编写程序时,不需要考虑或者有些时候没法考虑.由于在设计算法和编写程序时并不清楚最终程序会在什么样的机器上执行,而且为一台机器编写的代码往往需要移植到其他体系结构特性相差很大的机器上,所以很难取得最好的性能.并行程序编写好之后,还需要花大量的时间对它进行优化才能取得满意的性能,因此需要使用并行执行模型来指导如何在实际的机器上进行性能优化.并行程序执行模型将具体的并行计算机抽象成若干个影响程序执行性能的因素,从而可以使程序运行者针对具体的机器环境,进行程序的优化工作.并行执行模型使用执行时间、加速和效率、可扩展性等标准来衡量程序性能.并行程序执行模型通过对程序执行环境进行抽象,得到一个面向程序执行者的简洁的统一模型.执行模型定义了低层次的系统结构的编程抽象,表示程序在一个并行计算机上真实的执行行为.程序执行模型是编译器设计人员与系统实现人员之间的接口,编译器设计人员决定如何将一种高级语言程序按某种程序执行模型转换成一种机器代码;系统实现人员则决定该程序执行模型在具体目标机器上的有效实现.程序执行模型的适用性决定并行计算机是否以最低的代价提供最高的性能.根据程序执行模型进行调整的并行程序,可以在一台具体的并行计算机上获得最优的性能.并行应用程序去匹配这个模型,匹配的程度越高应用程序可以取得的性能就越好.影响并行程序执行性能的因素包括硬件和软件的诸多方面,如缓存共享、处理器连接方式、通信的次数和每次通信的数据量、同步开销,多个处理器之间的负载平衡等,使得并行程序的性能优化更加复杂,这些都是串行程序不需要考虑的.并行程序执行模型中,需要考虑如下机器硬件因素对程序执行性能的影响:(Ⅰ)中央处理器性能参数:时钟频率,功能单元执行速度,寄存器数量,片内缓存大小,指令流水线,指令多发射,指令和数据预取等;(Ⅱ)存储系统性能参数:存储系统的层次,每级存储系统的容量,块大小,延迟,带宽等;(Ⅲ)互连网络性能参数:存储一致性协议,网络的延迟,带宽等;(Ⅳ)输入/输出系统性能参数:磁盘的容量,速度以及其他的I /O 设备的性能等.并行执行模型中,需要考虑如下应用程序和运行时软件环境相关的问题:(Ⅰ)并行性级别问题:例如,任务级并行(考虑任务划分、映射、调度),数据级并行(考虑数据划分,迭代和循环分解),指令级并行(考虑如何高效发挥向量流水线,多发射,执行预取的效率等);(Ⅱ)线程问题:如何来进行线程调度,如何分配任务到细粒度的线程,尽量使得负载平衡,线程间如何通讯以及使得线程间通讯代价更小;(Ⅲ)存储和通信问题:对共享地址空间的支持,存储一致性的支持,通过分块、数据重新组织调整提高程序的空间局部性和时间局部性,通信协议的选择,通信软件的额外开销等;(Ⅳ)同步问题:锁和临界区的代价;(Ⅴ)性能剖析问题:相应工具的在线剖析,垃圾收集,动态编译,自适应多版本执行,实现反馈式的性能优化,提供一些简单的自动优化.线程问题是并行程序相对串行程序所独有的,用线程来表示并行执行的任务,定义了各线程间数据同步和数据通信的方式.在并行程序设计模型中定义了一些线程的实现接口,在程序实际运行时并行程序执行模型通过运行时环境和硬件执行部件来具体负责创建线程、维护线程、销毁线程以支持这些接口.近年来有研究者提出使用投机多线程[37]845第7期分层并行计算模型表1 分层模型的对照比较Tab.1 Comparisons of layered models比较对象并行算法设计模型并行程序编程模型并行程序执行模型面向对象算法设计者编程者程序运行者作用算法设计者和机器结构设计者之间桥梁程序设计者与计算机软/硬之间接口编译设计者与系统实现者之间接口关注点算法正确性低时、空开销确保算法正确语义,正确编程实现优化程序执行性能要素机器计算参数计算行为计算复杂度函数编程模式编程基本单元易用性,可编程性机器实际性能因素运行时系统的行为性能指标方法学设计方法(划分,分治,流水线,平衡树)编程风范(S PM D,循环并行,主从法M PM D,Fork/Join,放牧法,流水线法)执行模式(线程/进程产生,管理与撤消;同步;通信)复杂度算法步数高级语句条数机器指令条数支撑条件算法理论硬件平台软件支撑并行语言工具环境应用编程接口API编译器OS运行时系统硬件结构(CPU,M emory,I/O)现有模型PRAM,APRAM,BSP,LogP,DRAM(h),NHB LM PI,OpenM P,Pth read,HPF有待进一步的工作(speculative multithreading)和事务内存[38](transaction mem ory)来处理多线程并发的行为,解决多线程程序的相关性及同步问题,把同步控制的压力由程序开发人员转换到了编译运行时的系统设计人员.使用这两种执行模型时,程序员使用的编程模型就是传统的串行编程模型,编译器和运行系统进行并行任务的划分及执行.采用这种方式的并行应用程序没法用并行算法设计模型和用并行编程模型来分析,因为直到执行前它们的设计都与串行程序无异;也没法用串行程序的分析方法来分析,因为实际执行的时候它是并行执行的.因此,我们需要在并行程序执行模型中考虑这种应用的行为,对应用的执行性能进行分析.图4给出了并行执行模型相关的一些组成部分以及功能特性等.图4 并行执行模型图示Fig.4 Overview of parallel execution model3 结论根据并行计算模型的发展和演变的趋势,对并行计算模型进行分层是势在必行的.按照并行计算模型的功能和使用对象,我们认为把并行计算模型分为三个层次(并行算法设计模型,并行程序设计模型和并行程序执行模型)是充分和必要的,每层模型的特点如表1所示.并行算法设计模型和并行程序设计模型,目前相对比较成熟,而并行程序执行模型尚处于酝酿阶段,有待进一步研究与开发.我们认为,并行执行模型关注点在并行程序的性能,相应的研究应该从并行程序的性能优化入手,而性能优化应首先从编译系统、操作系统和运行系统等方面入手,兼顾考虑处理器、存储器和输入/输出设备等因素.参考文献(References)[1]陈国良.并行计算———结构·算法·编程[M].2版,北京:高等教育出版社,2003.[2]Z hang Y Q,Sun J C,Yuan G X,et al.A briefintroduction to China HP C top100:fr om2002to2006[C]//P ro ceeding s o f the2007A sian T echnologyI nfo rmatio n Pro g ram s3r d Wo rksho p o n HighP erfo rmance Computing in China:So lutio n A ppro achesto Impediments fo r High P erfo rmance Co mputing.Reno,U SA:A CM P ress,2007:32-36.[3]Sun J C,Yuan G X,Zhang L B,et al.2007Chinatop100list o f high per formance com puter[EB/O L].ht tp://w w w.samss.o /2007-China-H PC-T OP100-20071110-eng.htm[4]T OP500Superco mputing Site[EB/O L].http://ww w.top500.o rg/.[5]张俊霞,张焕杰,李会民.基于龙芯2F的国产万亿次高性能计算机KD-50-I的研制[J].中国科学技术大学学报,2008,38(1):105-108.[6]Chen G L,Sun G Z,Z hang Y Q,e t al.Study on 846中国科学技术大学学报第38卷。