论文部分内容阅读
并行程序设计是并行计算中一个公认的难题。其中一个重要原因在于缺乏系统的开发并行程序的方法及其支持工具。现有的大多数并行程序设计模型本质上是对并行程序编码的研究,它们为并行程序设计提供一个抽象平台,但缺乏指导程序员在其上有效地进行并行程序开发的方法。基于skeleton的并行程序设计方法通过为程序员提供通用的问题并行求解skeleton,使得程序员摆脱了琐碎的并行细节,而更关注问题本身,因而是一种更高层次的并行程序设计方法。本文前期研究中,给出了并行模式/skeleton的新定义,并在此基础上,提出一种系统的基于skeleton的并行程序开发模型及其支撑环境。该系统支持从问题规范到并行程序的整个开发过程,Apla+语言、skeleton库、模板库是其中的重要组成部分。Apla+语言的使用为系统提供了一种抽象、简洁的skeleton描述语言;而skeleton库及其模板库的支持,不仅为问题的并行求解提供了算法设计方法与策略上的指导,而且提供了并行算法的实现框架,使程序员在不具备并行领域知识的情况下,就可获得求解问题的(抽象)并行程序。本文的工作是对系统的Apla+语言、skeleton库及其模板库的研究,主要涵盖以下几点:(1)深入研究基于skeleton的并行工作,分析其中skeleton的概念、描述语言等方面存在的问题与困难,探索一种可行的解决方案。(2)对PAR方法中的Apla语言进行了并行扩充,主要包括描述并行运算的运算符、表示并行性的语句等,形成Apla+语言,以提供一种skeleton抽象描述语言。(3)对并行计算中的并行分而治之、Farm和Taskqueue三种典型skeleton进行了深入研究,并使用Apla+语言对其进行抽象描述,以支持问题的抽象并行程序开发。(4)在曙光3000 CPPVM环境下,采用C++模板机制对上述三种skeleton进行了预实现,并集成为模板库。(5)对skeleton库、模板库的组织进行了初步研究,为整个并行编程环境的集成提供了初步的研究思路。