分层并行计算模型_陈国良

合集下载

并行计算课程的教学方法

并行计算课程的教学方法

并行计算课程的教学方法
陈国良;孙广中;徐云;吴俊敏
【期刊名称】《中国大学教学》
【年(卷),期】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]

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).

第一章 绪论
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等。

并行计算方法.

并行计算方法.

2.4并行计算编程环境
1、分布传递并行编程: ❖ 消息传递 MPI ❖ PVM并行虚拟机(Parallel Virtual Machine)
2.4并行计算编程环境
2、共享存储并行编程 ❖ OpenMP 是一种面向共享内存以及分布式共享内存的多处理器多线
程并行编程语言
2.4并行计算实现过程
并行计算实现过程
1.2 并行计算机分类
并行计算机 就是由多个处理单元(处理器或计算机)组成的计算机系统,这些处理单 元相互通信和协作,能快速、高效地求解大型复杂问题。
1、单指令多数据流(SIMD)型并行
2、多指令多数据流(MIMD)型并行机: 并行向量处理机、大规模并行处理机、分存共享存储多处理机、 对称多处理机、、工作站机群
雅可比迭代法 超松弛迭代法 多重网格法
3.3 稀疏矩阵向量乘法算例
1、坐标存储法
Creativity
4 稀疏矩阵向量乘法算例
2、矩阵向量串行算法
Creativity
4 稀疏矩阵向量乘法算例
3、矩阵向量的并行化分析
Creativity
4 稀疏矩阵向量乘法算例
4、矩阵向量并行算法
Creativity
1.3 并行计算机体系结构
并行计算机体系结构是指在所应用的并行 处理系统中各个节点机之间的连接方式。
1、总线结构
2、网格结构
3、超立方体结构
1.4 基本性能指标
1、 CPU和存储器: 工作负载:执行时间、指令数目、浮点运算数。 并行执行时间:计算时间+并行开销时间+相互通信时间 存储器的层次结构:容量、延迟、带宽
3.1矩阵运算
1、矩阵的划分: 带状划分:块带状划分、循环带状划分 棋盘划分:块棋盘划分、循环棋盘划分

高性能计算中的并行计算模型与算法

高性能计算中的并行计算模型与算法

高性能计算中的并行计算模型与算法前言在当今信息时代,高性能计算已经成为各个领域研究与应用的重要工具。

而在高性能计算中,实现并行计算是提高计算效率的重要手段之一。

本文将探讨高性能计算中的并行计算模型与算法,以期对该领域的研究与应用有一定的了解与启发。

一、并行计算模型1.1 SPMD模型(Single Program Multiple Data)SPMD模型是一种常用的并行计算模型,它将计算任务划分为多个子任务,每个子任务独立执行相同的程序代码,但操作不同的数据。

这种模型适用于问题的规模较大,而且子任务之间不需要进行过多的通信与同步的场景。

1.2 SIMD模型(Single Instruction Multiple Data)SIMD模型是一种特殊的并行计算模型,它同样将计算任务划分为多个子任务,但是每个子任务执行的是相同的指令,且操作相同的数据。

这种模型适用于需要大量重复计算的场景,如图像处理和视频编码等。

1.3 MIMD模型(Multiple Instruction Multiple Data)MIMD模型是一种更加灵活的并行计算模型,它将计算任务划分为多个子任务,每个子任务可以执行不同的指令,操作不同的数据。

这种模型适用于需要更细粒度的任务划分和复杂的并行计算场景,如科学计算和大规模数据分析等。

二、并行计算算法2.1 分而治之算法分而治之算法(Divide and Conquer)是一种常用的并行计算算法。

它将原始问题划分为多个子问题,并通过递归地解决子问题来得到最终的结果。

在并行计算中,每个子问题可以由一个独立的处理器来处理,从而加快问题的求解速度。

2.2 并行排序算法并行排序算法是一类重要的并行计算算法,它通过将原始数据划分为多个子集,每个子集在独立的处理器上进行排序,最后通过合并操作来得到全局有序的结果。

这种算法适用于需要对大规模数据进行排序的场景,如数据挖掘和搜索引擎等。

2.3 并行搜索算法并行搜索算法是一种解决搜索问题的并行计算算法。

并行程序设计模型和语言

并行程序设计模型和语言

Vol.13, No.1©2002 Journal of Software 软 件 学 报1000-9825/2002/13(01)0118-07并行程序设计模型和语言á安 虹, 陈国良(中国科学技术大学 计算机科学技术系,安徽 合肥 230027);(国家高性能计算中心(合肥),安徽 合肥 230027)E-mail:han@摘要:并行计算技术的发展已有20多年的历史了.时至今日,高性能并行计算仍然缺乏有效的并行程序设计方法和工具,使得编写并行程序调试和优化并行程序的性能都很困难.从分析并行程序设计困难的原因入手,指出了当前各种高性能并行机系统支持的并行程序设计方法存在的诸多问题,综述了并行程序设计模型和语言的研究现状,给出了并行程序设计模型的评价标准,并提出了这一研究领域所面临的挑战性问题,指出了一些未来可能的发展方向.关 键 词:并行程序设计;模型;语言;可移植性;可扩放性;局部性中图法分类号:TP312 文献标识码: A并行计算技术的发展已有20多年的历史了,高性能并行计算机系统正在进入越来越多的应用领域.与硬件的发展相比,并行软件的发展则显得更加滞后,影响了硬件效率的发挥,限制了并行机系统的广泛应用.并行程序设计理论和技术的研究已成为发展并行处理技术当务之急的课题.并行程序设计方法经历了多年的发展和实践检验,进一步的发展面临着诸多挑战性问题,现在应该是很好地进行总结的时候了.1 并行程序设计困难的原因时至今日,高性能并行计算机上至今仍然缺乏有效的并行程序设计方法和工具,使得编写并行程序调试和优化并行程序的性能都很困难.并行程序设计困难的深层原因在于,高性能并行计算技术在发展过程中存在着以下问题:(1) 迄今为止,并行计算所需的理论仍然是不成熟的,没有理论或很少有理论为技术的发展指明方向.我们还不知道更多的表示并行计算的方法,也不知道逻辑上如何推理它们,甚至不知道在实际的体系结构上,什么样的并行算法才是有效的.(2) 人们花了很长时间才理解并行计算机的不同部分的性能需要平衡以及这个平衡是如何影响性能的.要获得好的性能,则需要仔细控制处理器速度和互连通信性能的关系,同时也需要与存储器层次的性能取得平衡.许多并行系统无法很好地支持实现这种平衡,甚至把这个艰难的工作交给用户去做.(3) 人们已经习惯于以串行的方式来理解),女,山东胶州人,博士,副教授,主要研究领域为并行计算机体系结构,并行程序设计环境与工具,高性安虹等:并行程序设计模型和语言119第三,数据也必须在处理器间进行划分,以保持数据的局部性,因为移动数据是要开销的.(4) 与串行程序设计相比,并行程序设计中存在的可移植性问题更加严重.由于至今还没有哪个并行体系结构家族是独立于技术变化的,当需要将一个软件系统从一个并行平台移植到另一个上时,则可能意味着要完全重建这个软件.许多用户至今还未能从高性能并行计算中得到实际的好处,就是因为重写代码的难度太大.并行软件用户期望在他们所使用的并行计算平台上能获得平滑的过渡,这样可以平滑地重新设计和重建软件.(5) 长期以来,并行系统的设计目标只面向市场较小的科学和工程计算,而忽视了大的工业和商用市场,使得并行机十分昂贵,增加了制造商和用户的投资风险,减小了用户使用并行机的热情,从而势必造成其上的软件技术发展缓慢.并行程序设计环境和工具从来都缺少较长的生长期,无法通过不断的版本更新,形成与现今的PC机或工作站一样好用的环境和工具.2 研究现状并行程序设计模型是硬件和软件之间的桥梁,是并行计算的低层实现与高层抽象的界面.为了帮助程序员解决并行程序设计面临的挑战性问题,并行程序设计模型和语言的研究者们已经研究了许多种不同的模型和语言,但迄今为止,还没有哪一种模型是通用的和完美的.2.1 模型研究的硬件结构抽象观点尽管模型的建立应独立于具体的硬件结构,但现有的大多数并行程序设计模型和语言的产生与发展还是深受并行硬件系统结构发展的影响,尤其在并行系统发展的早期.在20世纪80年代后期有两个相互竞争的硬件方法:SIMD(single instruction multiple data)和MIMD (multiple instruction multiple data),最后是MIMD占了上风.硬件也可区分为共享存储和分布存储机器.近年来,共享存储和分布存储的概念本质上已趋于合一.现今大规模并行一般使用多个计算节点和分布存储来实现,每个计算节点内部采用共享存储.一些商家试图在分布存储的机器上提供一个单一的存储映像,使并行机看上去更像一台大的工作站.目前,分布共享存储程序设计只是在处理器数较少的情况下获得了成功,随着处理器数量的增加很少能获得成功.其原因主要不在硬件方面,而在于编译器不能识别和利用数据的局部性.例如,Cray T3E 的通信模式已经做得开销很低了,但显式的消息传递依然是使用多个处理器时最有效的方式.因此,我们认为分布共享存储程序设计可能并非并行计算的圣杯,尽管它是当前许多研究者所追寻的目标.究竟采用哪种方法才是正确的,可能取决于可得到的硬件以及想要得到什么量级的并行.模型和语言代表了用户与并行体系结构之间的中介,应该保障有更多的应用领域能简单而有效地使用并行计算.从体系结构中抽象出来的模型和语言的可用性对并行软件的开发过程有着很重要的影响,也对并行计算系统能否获得广泛应用产生重要影响.第2.2~2.4节主要从这一角度来讨论模型和语言的发展现状.2.2 共享存储的模型和语言共享存储的程序设计模型大多是由PVP(parallel vector processor)和SMP(symmetric multiprocessor)平台提供,共享存储的程序大多是在特定的多处理器平台上用平台专用的语言写成.在这种模型上,数据处在单一地址空间,分为共享和私有两种,数据通信通过共享存储来完成.平台独立的共享存储并行程序设计的标准模型有X3H5[1]¿âÀý³ÌºÍ»·¾³±äÁ¿ÎªUNIX和Wondows NT平台提供共享存储的应用程序接口.支持共享存储并行的标准Fortran语言有PCF(parallel computing forum)[4].它是在Fortran 77里加入并行结构,使程序员能对并行性进行控制,但需要程序员关注进程同步和数据共享问题.商用共享存储语言的例子有SGI P ower C[5].它在串行C语言的基础上扩展了编译制导(compiler directives)和库函数,用于支持共享变量的并行程序设计.SGI对Fortran也提供了类似的扩展结构.120Journal of Software软件学报 2002,13(1)2.3 消息传递的模型和语言分布存储结构的出现带来了两大焦点问题:局部性要求和并行程序设计的复杂性.一种解决局部性的方法是使用显式描述并行的方法,对应于采用消息传递库的消息传递模型和采用说明语句的数据并行模型.在消息传递模型中,一个并行应用由一组进程组成,每个进程的代码是本地的,只能访问私有数据,进程之间通过传递消息实现数据共享和进程同步.消息传递的优点是用户可以对并行性的开发模块化的并行程序.其他的消息传递软件系统还有P4,Vertex,PARMACS,Zipcode,UNIFY和PICL等.在当前所有的消息传递软件中,最重要SMP工作站和PC组成的机群系统,并已经在Windows NT和Windows 95这样的非Unix平台上实现,提供了对C语言银河和曙光上都实现了对MPI和PVM的支持[12].2.4 数据并行的模型和语言数据并行模型的目的是要在分布存储的机器上实现在全局名空间进行并行程序设计,以屏蔽显式的通信问题.它是一种细粒度的并行.数据并行语言用单线程控制配合用户定义的数据和计算在处理器上的分布注释,使用户能够有效地将一些低层细节留给编译器和运行时系统去实现,用户所要做的全部工作就是给出有关并行的指示(parallel directives),说明哪段程序要并行执行.与消息传递模型相比,数据并行程序设计能在一定程度上减轻程序员的负担,但是完全依赖于程序员能否确定一个好的数据分布.最早允许用户控制数据布局(the layout of data)的语言是为SIMD机器ILLIAC IV开发的语言IVTRAN[13].在MIMD环境下第一个引入分配声明(distribution declarations)的语言是Kali[14].Kali编译器[15]是第一个集成静态和运行时通信策略的编译器.Thinking Machines联合COMPASS公司在Connection Machine上的Fortran-8x的子集中引入了静态布局说明(static layout directives)以及数组对准(alignment of arrays)说明[16].Fortran D[17]采用了稍有不同的指示数据分布的方法,即所谓“分解(decompositions)”的方法.它通过先将数据数组对准虚拟数组的方法来指示数据分布,然后用类似于CM-Fortran中的方法,对不同维使用相对权重分配到一个隐式的处理器集合中.该语言允许根据简单规则的分布和不规则的分布来扩展一组对准.Vienna Fortran[18]是上述Fortran 语言中第一个提供了完整的定义映射结构的语言,它主要基于Kali模型.允许数组与数组的对准,因此能够将数组显式地分布到一个处理器阵列上.Thinking Machines公司为它的Connection Machine CM-2和CM-5开发了几个有影响的数据并行语言,像C*,C M F ortran和*Lisp.一些其他的项目也对促进数据并行及其编译技术的开发有所贡献,其中包括很多商业上的努力[19].最重要的数据并行语言是Fortran 90[20]和HPF(high performance Fortran)[19,21].HPF是Fortran 90的扩充.它们都与现有的Fortran语言标准兼容.随着体系结构的发展和科学计算程序设计越来越复杂,该语言的局限性变得越来越明显.对HPF的批评主要有3个方面:认为HPF是一个太低层的语言,通过改进语言编译技术和体系结构,完全可以避开HPF风格的语言所要求安虹等:并行程序设计模型和语言121应用的需要.2.5 模型研究的其他观点以模型的抽象性作为分类的依据,并行程序设计模型还可以分为显式(抽象层次低)和隐式(抽象层次高)两种类型.D.B.Skillicorn和D.Talia从模型的抽象性角度对各种引入了重要思想的并行程序设计模型和语言进行了评价,阐述了它们的发展历史和相互关系,着力描述了各种模型的关键特性[22].我们还可区分基于并行计算理论的模型(如PRAM[23],BSP[24]和LogP[25]模型)基于程序构造的模型(如CSP[28]和Linda[29]模型),也可以根据模型的可表达性和可扩放性来对模型进行分类.限于文章的篇幅,在此不一一讨论.总的说来,尽管有关并行程序模型和语言的研究异彩纷呈,但根据厂家支持和用户人数的规则,当前在实际应用中两种最成功的并行程序设计模型是显式的消息传递标准MPI和共享存储的标准OpenMP.在这两者当中,只有MPI的成功是名副其实的.OpenMP比较新,还需要时间的考验.3 并行程序设计模型的评价标准通过对大量现有的各种并行程序设计模型和语言的分析,可以总结出一个好的并行程序设计模型所应具备的性质.我们可以将这些性质作为模型的评价标准,用于比较各种模型的主要性能和指导新模型的设计.这些性质包括:(1) 尽可能抽象和简单,易于学习与理解.大规模并行程序设计通常是非常复杂的,常常要产生大量并行执行的进程(或线程),并要求能可靠地控制它们的执行,提供进程之间交互的手段.为了减少算法或程序设计人员的负担,模型应能通过一定的抽象,将尽可能多的指示程序并行执行的程序结构由转换机制(如编译器和运行时系统)来插入,而不应由程序员手工去做.这就意味着模型应该尽可能隐藏以下编程细节:线程到处理器的映射;线程间的同步,从而为用户提供一种简洁的描述程序并行的手段,使得模型易于学习和理解,否则,软件开发者就不会愿意使用它.(2) 体系结构独立.由于处理器和互连网络技术发展迅速,计算机系统结构只有较短的生命周期.并行计算的用户必须准备好可能每隔5年甚至更短的时间就要更换他们所用的并行机,并且新的并行计算机不可能与被更换掉的完全一样.如果想普及并行计算,就必须将并行软件从并行计算机底层的更新变化中隔离出来.模型应能够描述在不同体系结构的并行机上实现的并行算法或程序.模型越抽象,其体系结构的独立性越强,算法和软件的可移植性也就越强.(3) 能提供一套完整的软件开发方法.迄今为止已有的大量并行软件都是数值的或用于科学计算的,对它们的开发都没有优先考虑开发方法.这有两方面的原因:由于科学计算类的应用大多属于研究性质,而不是生产性的,因此很少强调这类软件发展的长期性,因为许多程序只打算短期使用.随着生产性并行应用的增加,比起串行程序设计,完整的并行软件开发方法似乎是更为基本的问题.我们需要经过长期的工作来建立正确的并行软件构造方法.模型的研究必须充分地考虑这一点.(4) 能够保障性能.模型应该能在各种并行系统结构上保障性能.现在我们已经完全明白,通信性能是对系统结构的基本限制.系统性能降低的原因通常是由于通信拥塞.只有支持限制通信频度的模型,或者是作了足够的限制来实现程序和数据局部性的模型,才能在所设计的并行计算机上保证好的性能.(5) 可测量程序的成本.程序的成本主要包括程序的执行时间,其次是处理器的利用率和软件开发的成本.在并行程序开发中对并行程序作小的改变和对目标计算机的选择都会影响程序的成本.一个程序在模型中的性能与其在实现中的性能之间应该存在等价关系.成本测量还要与模块性配合好.现代软件几乎都是在不同的时间里以分块的方式开发出来的,这意味着要能给每个开发小组限定一个资源预算.如果每个小组都能满足分配给他们的个别成本,就可以实现总的成本目标.这就意味着成本测量必须是可合成的,总的成本易于由其部分122Journal of Software软件学报 2002,13(1)在上述并行程序设计模型的评价准则之间不可避免地存在着一定的相互对立和矛盾.如,高层抽象提高了模型的通用性和简洁性,但同时失去了模型应具有的精确性;低层抽象虽然保证了模型的精确性,但却限制了模型的通用性,并增加了描述并行的复杂性.为了缓和这种矛盾,目前对模型的设计和使用大多是在这些性质之间进行了某种权衡.4 未来的挑战和发展趋势在过去10年里,并行计算的应用领域发生了两方面的变化:一方面是由市场较小的科学和工程计算转向市场巨大的商业和工业应用;另一方面是并行计算应用的规模和复杂性大大增加,呈现出高性能代码可移植软件包多学科并行程序框架(中间层)和代码(低层)三个设计层次,在每个层次上分别研究新的或集成现有的成功的设计方法.(2) 可视化的并行软件构造方法.在高层进行并行程序设计时,应该特别强调可视化的设计方法[31].用可视编程语言开发并行软件,设计者可以把头脑中的概念模型先用一张图“画”出来,这张图就是可视的并行程序.可视并行程序由系统提供的变换程序自动或半自动地翻译成在具体的并行机上可并行的执行代码,用户主要关心系统的概念模型,不必一开始就陷入复杂的并行语言的编程细节之中.我们正在研究以可视化的标准建模语言UML(unified modeling language)[32]为框架,建立面向对象的可视化并行软件开发方法.(3) 面向对象的并行程序设计语言.传统的并行程序设计方法主要基于功能分解,存在着功能抽象较为困难调试和复用,并发的面向对象程序设计语言正在成为新的研究热点[33].近年来,计算科学界也开始倾向于采用更先进的面向对象方法,而不再是抱着Fortran语言不放[34].从短期来看,让计算科学界学习新的面向对象语言和方法似乎很费时间,但从长远来看,这将有利于从根本上产生更好的并行软件,提高并行软件的生产效率.(4) 并行程序动态行为分析理论.由于并发同步和不确定的特性,使得并行程序的正确性验证和性能效率的判断非常困难.并行程序的正确性调试并行和分布系统[35],是一个值得重视的研究方向.(5) 异质环境下的并行计算问题.我们注意到,中间件技术CORBA[36]和跨平台的面向对象语言Java[37]已经解决了传统的硬件安虹等:并行程序设计模型和语言123于在模型层解决并行程序设计所面临的一系列问题.目前,在中国科学技术大学计算机科学技术系和国家高性能计算中心(合肥)正在进行的并行程序设计模型环境和工具的研究[38,39]正是沿着这个方向进行的.References:[1] American National Standards Institute. ANSI Technical Committee X3H5. Parallel Processing Model for High-Level ProgrammingLanguages, 1993.[2] IEEE. POSIX P1003.4a: Threads Extension for Portable Operating Systems. Piscataway, NJ: IEEE Press, 1994.[3] OpenMP Standards Board. OpenMP: a Proposed Industry Standard API for Shared Memory Programming. 1997. http://www./openmp/mp-documents/paper/paper.Html.[4] Parallel Computing Forum. PCF: parallel Fortran extensions. Fortran Forum, 1991,10(3):1.[5] Silicon Graphics, IRIS Power C User’s Guide, Silicon Graphics Computer Systems, Mountain View, CA, 1989.[6] Tucker, L.W., Mainwaring, a. CMMD: active messages on the CM-5. Parallel Computing, 1994,20(4):481~496.[7] Kolawa, A. Parasoft: a comprehensive approach to parallel and distributed computing. In: IEEE Computer Society, ed. Proceedingsof the Workshop on Cluster Computing. Los Alamitos, CA: IEEE Press, 1992.[8] Pierce, P., Regnier, G. The paragon implementation of the NX message passing interface. In: IEEE Computer Society, ed.Proceedings of the Scalable High-Performance Computing Conference. Los Alamitos, CA: IEEE Press, 1994, 184~190.[9] Foster, I., Chandy, K.M. Fortran M: a language for modular parallel programming. Journal of Parallel and Distributed Computing,1995,26(1):24~35.[10] CORPORATE the MPI Forum. MPI: a message passing interface. In: ACM, ed. Proceedings of the conference onSupercomputing’93. New York: ACM, 1993. 878~883.[11] PVM Home Page at UTK. /pvm.[12] Chen, Guo-liang. Parallel Computing: Architecture Programming. Beijing: Higher Education Press, 1999 (in Chinese).[13] Millstein, P.E. Control structures in ILLIAC IV Fortran. Communications of the ACM, 1973, 16(10):621~627.[14] Mehrotra, P., Rosendale, J.V. Programming distributed memory architectures using Kali. In: Nicolar, A., Gelernter, D., Gross, T., etal., eds. Advances in Languages and Compilers for Parallel Processing. Pitman: MIT Press, 1991. 364~384.[15] Koelbel, C., Mehrotra, P. Compiling global name-space parallel loops for distributed execution. IEEE Transactions on ParallelDistributed System, 1991,2(4):440~451.[16] Albert, E., Knobe, K., Lukas, J.D., et al. Compiling Fortran-8×array features for the connection machine computer system. In:Proceedings of the Symposium on Parallel Programing: Experience with Applications, Languages, and Systems (PPEALS). New Haven, CT, 1988. 42~56.[17] Fox, G., Hiranandani, S., Kennedy, K., Koelbel, C., et al. Fortran D language specification. Technical Report, TR90079, Houston:Department of Computer Science, Rice University, 1991.[18] Chapman, B., Mehrotra, P., Zima, H. Programming in Vienna Fortran. Scientific Programming, 1992,1(1):1~35.[19] Mehrotra, P., Rosendale, J.V., Zima, H. High performance Fortran: history, status and future. Parallel Computing, 1998,24(3-4):325~354.[20] Adams, J., Brainerd, W., Martin, J., et al. The Fortran 95 Handbook. Menlo Park, CA: MIT Press, 1997.[21] High performance FORTRAN language specification. 1993. ftp://.[22] Skillicorn, D.B., Talia, D. Models and languages for parallel computation. ACM Computing Surveys, 1998,30(2):123~169.[23] Fortune, S., Wyllie, J. Parallelism in random access machines. In: ACM, ed. Proceedings of the 10th ACM Symposium on Theoryof Computing. New York: ACM Press, 1978. 114~118.[24] Valiant, L. G. A bridging model for parallel computation. Communications of the ACM, 1990,33(8):103~111.[25] Culler, D., Karp, R., Patterson, D., et al. LogP: towards a realistic model of parallel computation. In: Proceedings of the 4th ACMSIGPLAN Symposium on Principles and Practices of Parallel Programming (PPoPP’93). San Diego, CA: ACM Press, 1993. 1~12.[26] Banatre, J.P., Metayer, D.L. Introduction to gamma. In: Banatre, J.P., LeMetayer, D., eds. Research Directions in High-LevelParallel Programming Languages. LNCS574, Springer-Verlag, 1991. 197~202.[27] Bickford, M. Composable specifications for synchronous systems using UNITY. In: Proceedings of the International Symposium onAdvanced Research in Asynchronous Circuits and Systems. 1994. 216~227.[28] Hoare, C.A.R. Communicating Sequential Processes, International Series in Computer Science. Englewood Cliffs, NJ: Prentice-Hall, Inc., 1985.[29] Carriero, N., Gelernter, D. Application experience with Linda. In: ACM, ed. Proceedings of the ACM/SIGPLAN Symposium on124Journal of Software软件学报 2002,13(1)[30] Womble, D.E., Dosanjh, S.S., Hendrickson, B., et al. Massively parallel computing: a Sandia perspective. Parallel Computing,1999,25(13-14):1853~1876.[31] Beguelin, A., Nutt, G. Visual parallel programming and determinancy: a language specification, an analysis technique, and aprogramming tool. Journal of Parallel and Distributed Computing, 1994,22(2):235~250.[32] Booch, G. UML in action. Communications of the ACM, 1999,42(10):26~28.[33] Yang, Da-jun, Zhang, Ming, Lü, Jian. The study of concurrent object oriented programming language. Computer Research andDevelopment, 1998,35(9):769~775 (in Chinese).[34] Gosling, J. Extensions to Java for numerical computation. In: ACM, ed. Proceedings of the ACM 1998 Workshop on Java for High-Performance Network Computing. 1998. /conferences/java98.[35] Lin, Chuang. Stochastic Petri Net and System Performance Evaluation. Beijing: Tsinghua University Press, 2000 (in Chinese).[36] Zhan, Yong-zhao, Xie, li, Sun, Zhong-xiu. The strategies of implementation of distributed application systems by using CORBA.Computer Science, 1999,26(4):13~16 (in Chinese).[37] Arnold, K., Gosling, J. The Java Programming Language. Reading, MA: Addison-Wesley, 1996.[38] An, Hong, Li, Hong, Wu, Ming, et al. A Java/CORBA based universal framework for super server user-end integrated environments.In: Chen, Jian, Lü, Jian, Meyer, B., eds. Proceedings of the 31st International Conference on Technology of Object Oriented Languages and Systems (TOOLS’ 31). Los Alamitos, CA: IEEE Computer Society Press, 1999. 336~341.[39] Wang, Feng, Zheng, Qi-long, An, Hong, et al. A parallel and distributed debugger implemented with Java. In: Chen, Jian, Lü, Jian,Meyer, B., eds. Proceedings of the 31th International Conference on Technology of Object Oriented Languages and Systems (TOOLS’31). Los Alamitos, CA: IEEE Computer Society Press, 1999. 342~346.附中文参考文献:[12]陈国良.并行计算结构编程.北京:高等教育出版社,1999.[33]杨大军,张鸣,吕建.并发面向对象程序设计语言研究与进展.计算机研究与发展,1998,35(9):769~775.[35]林闯.随机Petri网和系统性能评价.北京:清华大学出版社,2000.[36]詹永照,谢立,孙钟秀.使用CORBA实现各种分布式应用系统的策略.计算机科学,1999,26(4):13~16.Parallel Programming Models and LanguagesáAN Hong, CHEN Guo-liang(Department of Computer Science and Technology, University of Science and Technology of China, Hefei 230027, China);(National High Performance Computing Center at Hefei, Hefei 230027, China)E-mail: han@Abstract:Parallel computing is about 20 years old. Till now, there is a lack of effective parallel programming methods and tools in high performance computing as a result that it is very difficulty to parallel programming, understanding behaviors of parallel program, debugging parallel codes and optimizing performance. In this paper, the reasons why so difficulty parallel programming is are analyzed, while the issues about parallel programming methods existing in recent high performance parallel machines are addressed, the current status of parallel programming models and languages are surveyed, the view of the criteria is offered to evaluate parallel programming models, the challenge problems in this area are brought forward, and some future research directions are pointed out.Key words:parallel programming; models; languages; portability; scalability; localityáReceived April 20, 2000; accepted July 12, 2000Supported by the National High Technology Development 863 Program of China under Grant No.863-306-ZD01-02-3; the Youth。

陈国良院士报告会— 并行计算的研究方法

陈国良院士报告会— 并行计算的研究方法

陈国良院士报告会—并行计算的研究方法2011年11月18日,计算机科学与工程学院举办了陈国良院士报告会—并行计算的研究方法。

主要针对陈国良院士关于并行计算的研究方法。

并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程。

为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。

并行计算的主要目的是快速解决大型且复杂的计算问题。

此外还包括:利用非本地资源,节约成本―使用多个“廉价”计算资源取代大型计算机,同时克服单个计算机上存在的存储器限制。

陈国良院士是现任中国科学技术大学软件学院院长,国家高性能计算中心(合肥)主任,深圳大学计算机与软件学院院长,智能感知与图像理解教育部重点实验室(西安电子科技大学)学术委员会主任。

中国计算机学会高性能计算专业委员会主任,享受国家政府特殊津贴。

陈国良院士是我国非数值并行算法研究的学科带头人,这次讲座他介绍了并行算法的教学与研究:“算法理论-算法设计-算法实现-算法应用”一套完整的并行算法学科体系,提出了“结构-算法-编程”一体化的并行计算研究方法。

80年代初在国内最早开展了非数值并行算法的研究。

在该方面取得了许多国际同期最好的成果,包括分组选择网络、Benes网络选路算法、VLSI平面嵌入算法和网络最大流算法等;改进了某些图灵奖获主的研究工作,包括改进Yao的选择网络时间界、并行化Knuth的顺序串匹配算法和修正Karp的随机串匹配为确定串匹配算法;在国际上首次分析了(0,d]均匀分布调和装箱算法和二维条形装箱NFDH算法的平均性能。

受到国内外同行的高度评价。

90年代初在国内早期开展了神经网络组合优化和遗传算法的研究,促进了交叉学科的研究与发展;与国际同期研制出具有世界先进水平的并行神经信息处理系统,为我国神经网络的教学、研究与应用提供了良好的工具与环境。

90年代中期开展了高性能计算及其应用的研究,率先成立了我国第一个国家高性能计算中心,推进了我国该领域的发展;开发了自主版权的国产曙光并行机“用户开发环境”商用软件,为推广国产并行机应用做出了重要贡献;研制了基于曙光1000的安徽省防灾减灾决策支持系统,在安徽省灾害性天气预报和汛期淮河流域群库优化调度中起了重要作用,产生了显著的社会和经济效益。

VLSI并行计算

VLSI并行计算

VLSI并行计算
陈国良
【期刊名称】《计算机工程与应用》
【年(卷),期】1989(000)002
【摘要】本文是一篇面向研究的综合报告,就VLSI并行计算的以下几个方面作了论述:VLSI设计基础及理论计算模型:VLSI面-时下界和布局:VLSI并行算法,包括数值(计算)的、非数值(计算)的以及图论方面的一些典型计算法。

【总页数】35页(P1-35)
【作者】陈国良
【作者单位】无
【正文语种】中文
【中图分类】TN47
【相关文献】
1.VLSI技术与并行计算机体系结构趋势 [J], 裴志军;国澄明;姚素英
2.二维正交子波变换的VLSI并行计算 [J], 陈崚
3.基于四种并行计算模式的自然对数底并行计算方法 [J], 刘荣;朱建伟;李富合;李磊
4.MPI网络并行计算系统通信性能及并行计算性能的研究 [J], 孟杰;孙彤
5.并行计算,“时”半功倍——并行计算在大型汽车覆盖件冲压成形仿真分析中价值凸显 [J], 谢晖;王元;李锋
因版权原因,仅展示原文概要,查看原文内容请购买。

《并行计算》教学大纲

《并行计算》教学大纲

教学大纲课程名称:并行计算预修课程:计算机体系结构、数据结构等开课学期:总学时:60学分:大纲撰写人:陈国良、徐云、孙广中一、教学目标及要求本课程是为计算机科学与技术专业的高年级本科生开设的专业课,也可作为面向科学和工程计算的非计算机专业的高年级本科生和研究生的选修课程。

通过此课程的学习,可使学生了解和掌握计算机学科中以及大型科学与工程问题中的基本的并行与分布计算方法及其软硬基础。

二、教学重点和难点重点:并行计算机系统结构、模型、互连方式和性能评价,并行计算模型,并行算法设计策略、基本设计技术和PCAM设计方法学,典型的并行数值算法,并行程序设计等。

难点:并行结构模型和计算模型的理解,并行算法基本设计技术,并行数值算法等。

三、教材及主要参考书教材陈国良,《并行计算:结构,算法,编程》,北京:高教出版社,1999(初版),2003(修订版)主要参考书:1.陈国良等,《并行计算机体系结构》,北京:高教出版社,20022.陈国良,《并行算法的设计与分析》,北京:高教出版社,2002 (修订版)3.陈国良等,《并行算法实践》,北京:高教出版社,20034.Barry Wilkinson等,陆鑫达等译,《并行程序设计》,北京:机械工业出版社,2001四、课程章节及学时分配第一部分并行计算硬件基础1.并行计算机系统结构和模型4课时(1)并行计算机系统结构(PVP、SMP、MPP、DSM、COW)。

(2)并行计算机存储器访问模型(UMA、NUMA、COMA、NORMA)。

2.并行计算机系统互连4课时(1)系统互连技术(节点内的互连:总线,开关,Buses,switches;节点间的互连:SAN;系统间的互连:LAN,MAN,WAN)。

(2)互连网络拓扑(静态互连网络:LA,RC,MC,TC,HC,CCC;动态互连网络:Buses,crossbar,MINI)。

标准网络(FDDI、ATM、SCI)。

3.并行系统性能评价4课时(1)加速比(Amdahl负载固定加速定律;Gustafson负载可扩放加速定律;Sun和Ni存储受限加速定律)。

并行计算-哈尔滨工程大学计算机科学与技术学院

并行计算-哈尔滨工程大学计算机科学与技术学院

063820并行计算32学时/2学分英文译名:Parallel Computing and Distributed Computing适用领域:计算机科学与技术,科学、工程计算开课单位:计算机科学与技术学院教学目的:当今,计算科学已成为与理论科学和实验科学并列的第三门科学,学生有必要了解、初步掌握高性能计算(并行与分布计算)的理论、技术及应用。

预备知识或先修课程要求:算法设计与分析,计算机系统结构,操作系统。

教学主要内容以及对学生的要求:并行计算系统结构介绍,并行计算性能评测,并行算法设计基础及一般设计方法。

分布式系统模型,通信、进程、命名和复制。

内容摘要:高性能计算的应用需求极为广泛,以美国等国家为代表已制订长远发展规划。

本课程将介绍并行计算机结构模型、系统互联技术,当代并行机系统:SMP、MPP和COW。

介绍并行计算性能评测方法与标准,并行算法的基础知识及模型。

并行算法的一般设计方法,包括串行算法的直接并行化,从问题描述开始设计并行算法,借用已有算法求解新问题。

并行算法的基本设计技术,并行算法的一般设计过程及PCAM设计方法学。

分布式系统的目标,分布式计算模型,远程过程调用,远程对象调用,消息通信,代码迁移,软件代理,移动实体的定位,时钟同步,分布式事务,以数据为中心的一致性模型,以客户为中心的一致性模型,分发协议,一致性协议。

基于协作的分布式系统:TIB/Rendezvoas,Jini,及二者的比较,协作模型。

协作系统中心通信、命名、同步、缓存和复制,容错性、安全性等。

考核方式:大作业;平时成绩(出勤情况+研讨情况)占20%。

课程主要教材:[1] 并行计算.陈国良.高等教育出版社,2011[2]分布式系统原理与范型(第2版). Andrew S. Tanenbaum Maarten Van Steen著,辛春生,陈宗斌等译.清华大学出版社,2008主要参考书目:[1]网络并行计算与分布式编程环境,孙家祖等,科学出版社,1996。

并行计算系列课程教学团队建设

并行计算系列课程教学团队建设

并行计算系列课程教学团队建设摘要:教学团队的建设是“质量工程”的主要内容之一,是精品课程的支撑者和执行者,是保证课程教学质量的关键因素。

本文首先介绍中国科学技术大学并行计算课程教学团队的组成和结构,然后说明团队在并行计算系列教材建设、教学基地建设中的重要作用以及在全国范围内推广教学成果的情况,接着介绍了并行计算教学团队建设带动了并行计算的学科建设和人才培养。

最后是几点体会和教学团队下一步建设的打算。

关键词:并行计算;系列课程:教学团队近几年来,高性能并行计算机的发展取得了长足的进展,每秒数十万亿次乃至数百万亿次计算能力的高端并行机已相继研制成功。

同时,廉价的PC机群、多CPU(多核)的桌面系统和个人高性能计算机的出现与发展,更是使得今日的并行计算机,已经“飞入寻常百姓家”了。

价廉的桌面式并行系统中,有多个处理器可供使用,迫使人们必须学习并行计算,才能有效地利用手边的丰富资源。

这就为并行计算的教学的发展和推广带来了新机遇,也对并行计算系列课程的建设与推广提出了新要求。

在此条件下,为了适应高性能并行计算迅速发展的需要,充分发挥计算学科在现代科学和技术发展中的作用,在高校中普遍开设高性能并行计算类的课程就显得尤为重要。

与之相应的,配合该学科发展的课程建设也是刻不容缓。

20多年来,中国科学技术大学在并行计算相关的教学和科研中积累了许多经验,取得了一些成绩,逐渐形成了并行计算系列课程的教学团队。

教师是教学过程中最为重要的因素,教学团队的建设决定了课程建设的效果。

本文主要介绍我们在教学团队建设过程中的一些经验和体会,希望可以有助于并行计算课程的推广,并为其他课程教学团队建设提供有益的思路。

一、教学团队的基本情况1并行计算系统课程特色并行计算系列课程包括并行计算、并行计算机体系结构、并行算法和并行程序设计等课程,力图适应培养面向21世纪的宽口径、通才、适应性强的高等人才的培养需要,定位于全国计算机专业的专业基础课,面向全国普通高校中计算机专业,兼顾全国高校中面向计算型的非计算机专业。

《并行与分布式计算》课程教学大纲

《并行与分布式计算》课程教学大纲

《并行与分布式计算》课程教学大纲课程基本信息注:L课程类别:选填“通识核心课/通识拓展课/通修课/学科基础课/专业主干课/专业选修课/专业实践/ 素质拓展”2.课程性质:选填“选修/必修”3.授课语言:选填“中文/双语/全英文或其他语种”二、课程目标注:1.支撑毕业要求指标点:选填项。

需要进行专业认证,有毕业要求指标点可参照的课程必填,无明确毕业要求指标点可参照的可不填。

三、理论教学内容注:L2.学生学习预期成果:描述学生在学完本节内容后应获得的知识、能力或素养水平(下同).教学方式:包括讲授、讨论、案例、演示等,但不限于所列,根据课程实际需要列举、实践(实验)教学2.实验类型:选填”验证性/综合性/设计性”;实习类型:选填“认识实习/生产实习/毕业实习”五、课程评价(一)考核内容、考核方式与课程目标对应关系注:1.课程目标在考核方式及占比:主要根据课程目标自行设计和制定多元化考核方式,表中所列仅为参考(红色数据可删除)。

但所列考核方式必须覆盖全体学生,可根据当学期具体教学情况酌情调整。

2.各考核方式占总成绩权重:根据课程实际情况对各考核方式占总成绩的权重予以赋值。

(二)考核方式评分标准.课程作业评分标准1.课程实验评分标准(笔试类评分标准可在大纲中按以下格式予以说明,也可在通过“试 卷分析表”予以说明)3.课程考试评分标准注:考核方式和课程目标在考核方式中占比应与“(一)考核内容、考核方式与课程目标对应关系” 一致。

所列考核环节,除了笔试类均须依次给出评分标准,格式同上。

笔试类课程考核评分标准可以在本课程大纲里进行说明,也可以通过提交“试卷分析表”予以说明。

五、参考书目及学习资料1 .《并行计算:结构,算法,编程》,陈国良,高教出版社,2003.《并行算法实践》,陈国良等,高等教育出版社,20042 .《分布式算法导论(第二版)》,(荷)Gerard Tel译者:霍红卫,机械工业出版社,2004.93 .《分布式计算(第二版)》,Hagit Attiya, Jennifer Welch著,骆志刚等译,电子工业出版社,2008.4。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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卷。

相关文档
最新文档