|
||||
实现并行处理的系统软件朱兆明 王玉屏 编译 |
|
现在,并行处理技术几乎成了从工作站到巨型机的所有计算机 的基本构筑技术。经常使用的并行处理方式有下列几种:在微处理机内进行命令级的细粒度 并行处理的超标量(Super Scalar)方式及超长指令VLIW方式;在巨型机中使用的运算流水线 (Pipeline)即向量处理机方式;小巨型机、巨型机中使用的多处理机方式。这些处理方式的 共同特点是都需要软件的强有力支持。在有效发挥硬件的高处理性能方面,尤其需要软件的 支持。 众所周知,硬件的峰值性能和实用性能的差距很大。例如,在对使用了并行度较高的应用 程序进行的性能评测中,16台共享存储式多向量处理机的巨型机,实用性能仅为峰值性能的 16%~50%。128台分布存储式多处理机系统,实用性能仅为峰值的3%~20%。16384台的大规 模并行系统中,实用性能只有峰值性能的3%~12%,这显然是个很低的数值。但这却是并行处 理专家进行优化的最高性能,一般用户还达不到这个水平。其主要原因是并行处理的软件技 术大大落后于硬件技术及在结构设计方面过于注重峰值性能,而对实用性能考虑不充分。 为此,今后一方面要提高并行处理系统软件的档次,同时还要重视开发能最大限度发挥 这些软件性能的硬件,以缩小峰值性能和实用性能的距离,达到即使不懂并行处理专门知识 的用户也易于使用的目的。 实现并行处理的系统软件,主要包括并行操作系统,并行编译程序,并行化支援系统和并 行程序的调试程序。因程序设计语言直接影响用户的使用环境,人们常把并行程序设计语言 与并行处理的系统软件一起来研究。 1、并行操作系统 并行OS担负存储器管理(虚拟存储器、虚拟分布共享存储器等)、处理机管理(虚拟处理 机和物理处理机)、作业管理(作业调度等)、任务管理(并行任务的生成、驱动、终止、调 度)以及处理机间通信等很多重要任务。然而,在以往的多处理机系统的设计中,优先考虑的 是硬件的设计。然后才考虑 OS 和编译程序的设计。又常常出现由于编译程序不完善而把 一些处理委托给OS的情况,因而OS就显得更重要了。 当调用OS来执行并行任务的生成、驱动,任务间的同步,以及向虚拟分布共享存储器存 取数据,在处理机间进行通信时,常常要花费数百、甚至数千时钟周期,这无疑开销太大。在 OS调用频繁的系统中,有可能出现互连网的高速化以及编译程序优化水平的提高,与处理速 度的提高几乎没有关系的情况。 在称之为微内核(microkernel)和超微内核(nano kernel)基础上需要重新考虑硬件、 并行OS、并行编译程序的适当任务分工。例如, (a)采取由编译程序尽可能进行静态调度,或在执行时动态调度的方式,或由编译程序生 成的方式,将过去依赖OS的某些功能转给编译程序。 (b)在实现程序设计简易化方面,如果需要分布共享存储器,则不必局限于传统的分布存 储式结构。实际上,在硬件方面,是把共享存储器作为分散到各处理机上的分布存储式结构 来实现的。这样处理能减轻OS的负荷。 今后,随着大规模并行处理机数量的增加,希望能出现功能越来越强的,能提高各作业的 反应能力以及整个系统生产效率的不同OS。当然,编译程序和体系结构支持技术的开发将越 来越重要。 2、并行编译程序 用串行语言描述的程序,可以用自动并行编译程序译成并行机器代码,并在并行OS的管 理下运行。用扩充语言、并行语言描述的程序,也可以用自动并行编译程序编译,由于扩充 语言及并行语言的编译程序,对并行性的提取,数据的分配,调度等依赖用户的指示较多,一 般也可以使用比自动并行编译程序性能低一点的编译程序。这种自动并行编译程序就是不 了解并行处理知识的用户也能简单地使用、并能使硬件的功能得到最大的发挥。 迄今为止,实用化的自动并行编译程序主要是基于对循环内数据条件分析的自动向量化 和循环的并行化。关于自动向量化,循环并行化方面,有符号数据(symbolic data)条件分析 ,语义数据(Semantic data)条件分析,重用空间数据(Iteration space data)条件分析,相 关向量分析,GCD测试、Benerjee的严格测试、BenerJee-Woife的非严格测试、OMEGA测试等 数据条件分析技术。另外,节点分类(node Splitting)、标量展开式(Scalar expansion)、 循环变换(loop interchange)、循环汇合(loop fusion)、多重循环(multiversion loop) 生成等各种程序重构(program restructuring)等技术的研究也相当深入。今后要提高多处 理机系统的实用性能,寄希望于具有下述新技术的编译程序的实用化。这些新技术是: (a)接近细粒度的并行处理技术。这种技术能做到在处理机间,采用多命令级或语句命 令级的粒度,对传统并行处理办不到的顺序循环(Sequential loop)或循环外的基本程序块 进行并行处理。 (b)粗粒度并行处理(宏数据流处理)技术。这种技术,在处理机或处理机群间,使顺序循 环、子程序、基本程序块间的自动并行处理成为可能。 (c)和宏数据流处理相关,在分布存储式多处理机系统中,或局部存储器加全局共享存储 器、局部存储器加分布共享存储器、局部存储器加分布共享存储器加全局共享存储器等各 种共享存储式多处理机系统中,为有效地利用局部存储器,最大限度减少处理机间数据传递 ,而进行数据自动分配。 (d)引进数据预装入(Data Preload)、预取出(Prefetch)、数据后存储(Data Post ore)等技术,实现任务处理和数据传送的重叠(overlap),使数据传送开销减少到最小限度, 实现数据传送的自动优化。 此外,串行程序的重构,也可以和编译同时进行。有一种预处理程序(preprocessor)能 输出用户易于理解的,用扩充程序设计语言描述的程序代码。若和并行化支援系统联合使用 ,其实用效果更高。 3、并行化支援系统 在使用并行处理机时,由于编译程序的性能不完备等原因,有时需要对程序进行调整,这 时不可缺少与用户友善的并行化支援系统的帮助。这种系统的实现和利用,需要在编译程序 、操作系统、并行处理机之间进行紧密的信息交流。 支援系统的主要功能有: (a)向用户提示编译程序或预处理程序不能自动并行化的原因。 (b)向用户提示适用于程序各部分的重构方法以及给出根据用户指示进行重构后的程序 代码及其实际开销的估值。 (c)向用户提示程序各部分的执行开销(如各循环的处理时间),条件分支概率等各种信 息,重点指出应调整的部分。 4、并行调试程序 并行处理中的程序调式有下述难题需要解决: (a)由于产生故障的原因很多,因此,调试时很难再现故障发生当时的执行状况及其原因 。 (b)在多处理机系统中,要使所有的处理机同时停止动作是很困难的,故障发生点也很难 确定。 (c)对是硬件故障还是软件故障的识别,比串行机还困难。 正因为如此,现在还未定型的调试技术有待今后研究。 在调试程序的开发中,用软件模拟程序来实现对并行程序的同步验证;通过硬件充实调 试支持功能;利用调试中编译程序及预处理程序得到的数据条件、控制条件等信息;利用从 OS得到的程序执行信息;充实同用户的会话功能等等,都是今后要研究的课题。 5、并行程序设计语言 在使用并行处理系统时,多数用户使用Fortran,C等串行语言编写程序,或试图不加修改 地使用已有的串行语言所描述的程序。对并行处理感兴趣的用户或并行处理专家,则注重并 行效率的发挥,因而使用Cray Fortran,Cedar Fortran,CM Fortran,Fortran D,HPF,VPP F ortran等扩充串行语言,或Occam,GHC等并行语言,或DFC,Id,Valid等数据流语言编写程序。 但程序中的并行性,可执行并行处理的任务间的同步,数据的分割、配置或处理机间的通信 等,都由用户自己来描述。 这种程序中并行性的描述是指对能进行并行处理的任务的产生、结束的描述;用向量化 命令对可向量化循环进行的描述。 数据的合理分割、配置能有效地利用各处理机上的局部存储器,使处理机间的通信开销 降到最低。在目前通过编译程序不能实现自动分割、配置的情况下,必须由用户在程序中对 数据的下述分割、配置进行描述: ·分布存储式多处理机系统中,如何向各处理机上的局部存储器进行数据分割、配置; ·在各处理机(或处理机组)具有局部或全局共享存储器的系统中,向局部或全局共享存 储器如何进行数据分割、配置; ·在各处理机上具有局部存储器和分布共享存储器,或具有全局共享存储器的系统中, 如何向存储器进行数据分割、配置。 各公司和厂家提出了许多扩充语言及并行语言,但即使在同一种Fortran基础上扩充的 语言,各公司也有不同的描述方法。因此,每当用户使用不同厂家的并行系统时,就不得不重 写程序。这种情况用户当然不欢迎,他们希望开发出不管在哪个机器上都不经修改即可执行 的标准语言。Rice大学开发的Fortran D及以Fortran 90为基础的HPF就做到了这一点,因而 受到普遍关注。 HPF的最大特点是进行数据分割、配置时,需要编写ALIGN(数据定位),DISTRIBUTE(数据 分割),PROCESSOR(处理机构成)等伪指令(directive)。当然,随着对分割、配置要求的不断 提高,与之相对应的伪指令也需改变,这在技术上会带来一定的难度。〖KH1〗本文概要地介 绍了用于并行处理的系统软件及它们之间的关系,存在的问题和今后发展动向。由于并行处 理的软件大大落后于硬件,因此,今后这方面的研究开发任务还很繁重。 (计算机世界报 1995年 第25期) |
周报全文频道联系方式:010-68130909 |
||||||
| 【关于我们】 【广告服务】 【周报发行】 【投稿指南】 【投稿声明】 【联系方式】 【法律声明】 【媒体手册】 【编读往来】 |
||||||
| Copyright© ccw.com.cn,All rights reserved | ||||||
| 中国计算机世界出版服务公司版权所有 | ||||||