This project focuses on the design and implementation of the high-productivity parallel programming language, especially on synchronization, simultaneously, the program verification is in consideration.
SPC-I SPC-II Publications
Research Thought
Our general idea about research on high-productivity parallel programming language is: programmers need to provide some simple abstract descriptions on shared resources and their usage, and these information can be used by compilers to be capable of generating high-quality codes. The high quality of codes refers to the high confidence, high efficiency, easy debugging, etc. The abstract description involves shape infomation of shared mutable data structures(such as lists, binary trees, etc), shared resources and their usage, pre and post conditions of functions, etc. The high-capacity of compilers refers to more information synthesized by program analysis, the proof of programs satisfying specifications, the generation of proof-carrying codes, etc.
Research Objectives
Research a parallel programming language with shared resource usage declarations by solving some key theoretic and technical problems in language design, implementation, and program verification, in order to lay the groundwork for supporting easy programming on shared memory.
Research Content and Methods
Design a small parallel programming language which contains pointer type and allows the use of shared mutable data structure for study. It uses shared resource usage declarations rather than shared variable access controls in programming. Compiler can collect the holding information of shared variables from the shared resource usage declarations in a program, then generates codes with shared variable access control based on these holding information. Besides, we extend the Rely-Guarantee method to certify these parallel programs with shared resource usage descriptions.
We 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:
p->front->next), obtaining the correct holding information of shared variables needs precise alias information. Precise pointer analysis depends on the loop invariants. However, it is unacceptable to require programmers provide loop invariants, and automatic inference of loop invariant is a classical problem, so far with only limited success.Documents