Parallel Programming Language with Requirement Description of Shared Resources

(Chinese Version)

This project is a sub-project of Synchronization Mechanisms in Parallel Programming, and focuses on the design and implementation of the high-productivity parallel programming language, at the same time, the program verification is in consideration.

Research Thought

Our general idea about research on high-productivity parallel programming language is: in parallel programming, it is easier to generate high-quality codes when programmers provide some simple abstract descriptions. This information can be used by the compilers to enhance their own capacity. The high quality of codes refers to the high confidence, high efficiency, easy debugging, etc. The abstract description is about shared mutable data structure, pointer fields which are accessed and updated through pointers (such as lists, binary trees, etc), information about shared resource, pre and post conditions of functions, etc. The high-capacity of compilers refers to the more information synthesized by program analysis, the proof of programs¡¯ satisfied specifications, the generation of proof-carrying codes, etc.

Research Objectives

Research a parallel programming language with requirement description of shared resources by solving some key theoretic and technical problems in language design, implementation, and program verification, to lay the groundwork for supporting easy programming on shared memory.

Research Content and Methods

Design a small parallel programming language which contains the pointer type and allows the use of shared mutable data structure for study. It uses shared resource descriptions rather than shared variable access control in programming. In the shared resource description, we collect the maintenance section (the section that shared variables cannot be accessed by other threads) of each shared variable, then generate codes with shared variable access control based on these sections. Besides, we extend the Rely-Guarantee method to certify these parallel programs with shared resource description.


We will carry out our work on existing infrastructure which support C program analysis and transformation, and attempt to develop a tiny language through implementing a source-to-source translator. The key problems in our research are listed below: