基于共享资源需求描述的并行编程语言研究

(英文版)

本项目是并行编程中同步机制的设计、实现与验证的子项目,其研究围绕高生产率的基于共享内存的并行编程语言的设计、实现和程序验证。

研究思路

我们对高生产率并行编程语言研究的总体思路是:要想获得易编程的语言且能生成高质量的代码,程序员相应地要多提供一些简单的抽象描述,编译器利用这些信息可以提高自身的能力。其中代码的高质量指高可信、高效率、易排错等,程序员的抽象描述指共享易变数据结构(shared mutable data structure,指结构中含有通过指针访问并更新的域,如各种链表、二叉树等)的形状信息、共享资源的需求信息、函数的前后断言等,编译器的高能力指通过程序分析综合出程序更多的信息、完成程序满足规范的证明、产生携带证明的代码(PCC)等。

研究目标

研究基于共享资源需求描述的并行编程语言的设计、实现和程序验证,解决其中的核心理论和技术问题,为设计易于共享内存编程的并行编程语言奠定基础。

研究内容与方法

设计一种研究性的包含指针类型并允许使用共享易变数据结构的并行编程小语言,其特点是用共享资源需求描述来代替对共享变量访问控制的直接编程。研究从共享资源需求描述收集每个共享变量维持区间(即共享变量不能被其他线程访问的程序区间)的程序分析理论和技术,以及依据共享变量维持区间信息来生成共享变量访问控制代码的代码生成技术。扩展并行程序的Rely-Guarantee验证技术,使之能用到基于共享资源需求描述的并行程序的验证。

我们将在现有的支持C程序分析的编译基础设施上开展工作,通过实现源语言-源语言的翻译器来完成对这种研究性小语言的实现。研究中的关键问题是: