新一代并行程序设计语言日渐升温
当前国际上对新一代并行程序设计语言的研究正日渐升温。其中美国HPCS项目(高生产率计算系统,http://www.highproductivity.org/ )资助开发的新的高生产率并行编程语言有三种,分别属于三个公司,包括IBM的X10、SUN公司的Fortress和Cray公司的Chapel。这三个语言目前还处在原型开发阶段,大规模推广还需要时间。
此外,还有一类称为分割全局地址空间系统(PGAS)的并行程序设计语言,包括UPC(Unified Parallel C,C语言的扩展)、CAF(Co-Array Fortran,Fortran的扩展)和Titanmin(Java的扩展),目前已经开始在部分实际项目中得到应用,且效果不错。对于新并行程序设计语言的研发,国内目前还没有国家项目进行资助,这一点需要引起关注。
HPCS语言是美国为了支持从千万亿次机器到单个多核芯片的应用范围所研发的高效能计算系统的配套语言,属于研究型语言,有很多新的设计思想。其主要设计思路是降低并行程序设计的难度,提高软件生产效率,同时提供高性能、可移植和健壮性的支持。由于存储层次很复杂,还需要在语言里支持进行数据局部性的描述,要明确指出数据所在位置。
举例来说,IBM的X10的意思就是10倍,提高高性能程序设计的生产效率10倍,是2003年启动的,目前已经完成了原型系统的开发,估计还需要较长的时间投入商业使用,现在只是小范围内试用。该语言对多核系统与集群系统提供了统一的支持。为了保持可移植性和安全性,该语言继承了JAVA的虚拟机,是其子集的扩展。它基于JAVA 1.4进行扩展。把JAVA里的并发库用它自己的并行库替换,数组用X10数组替代。X10把存储分成三类,一类是不可变数据、一类是共享堆、一类是活动堆栈。为描述局部性,引入了Place的概念。一般共享多线程的计算将局限于一个Place里,且线程被更轻量级的Activity取代。如果支持分布存储全局并行,就需要多个Place,它们之间全局共享一定的数据,同时也允许每个Place有自己的私有数据。这一点与PGAS语言类似。多个 Place之间的并行通过异步操作来进行支持。
PGAS语言是比HPCS语言早一些的语言,但比MPI和OpenMP要晚。PGAS语言的细节虽然不同但内涵相似,特别是在支持SPMD(单程序多数据)计算方面。该类语言仍然需要用户提供数据和任务映射的细节,虽然还是有难度,但对专家来说已经降低了不少。
下表是当前几个比较流行和正在研究的并行程序设计语言的比较。它们都可以部分解决多核带来的软件设计问题,各有不同的特点。当前正在研究的新并行程序设计语言追求的总目标是在保障性能的同时,降低编程的复杂性。
表1:当前并行程序设计语言的比较
![]() |
