Type Architectures and Parallel Programming Languages

Project Details

Project Lead
Andrew Grimshaw 
Project Manager
Andrew Grimshaw 
Project Members
Andrew Grimshaw, Muhammad Yanhaona  
University of Virginia, Computer Science  
Computer Science (401) 


Even after several decades of continuous research programming parallel computers still remains a complicated endeavor. Many parallel programming languages have been proposed in past and present as an alternative to the dominant MPI based parallelism, where a sequential language (C or FORTRAN) is been extended with communication primitives to exploit parallelism  however none succeeded to get a stronghold. Although the failure of these parallel programming languages is partially due to communitys reluctance in switching to an alternative programming approach, but we hold that these languages did not make programming parallel computers much easier. Particularly, parallel programming languages of recent time such as Chapel and X10 are extremely bulky and it is difficult to see any underlying model of computing in any of them that could guide a programmer in writing an efficient, clean, parallel program for his problem.

The proliferation of heterogeneous hardware architectures makes the task of parallel programming even harder. While hardware vendors continue to tout about the performance increase in new every generation of their parallel hardware, exploiting that performance potential most often comes by using vendor specific libraries as typical programmer is most often incapable to master the peculiarities of hardware that are essential for achieving a good performance.

We would argue that we are so far unsuccessful in exploiting the modest potential provided by parallel architectures as Snyder emphasized on in his seminal paper on type architecture, and that too largely due to the reason he mentioned there: we do not have a good type architecture describing parallel hardware.
A part of the goal of this project is to develop a type architecture that can adequately describe most parallel computing architectures of our time. Having just the type architecture is not enough; we have to show that a clean and efficient model for parallel programming can be developed on top of it. So the other part of the project is focused on developing a programming language that aid in efficient expression and execution of parallel programs.
To summarize, we have to proof three points to make this project a success
  1. Construct a type architecture accurately modeling present generation parallel computing platforms.
  2. Develop a parallel programming language that make writing parallel programs easier than what it is now.
  3. Write a runtime engine that can execute programs written in the new languages with acceptable performance. 
This allocation proposal is targeted at developing and testing the run-time for the project on multi-level architectures, of which stampede is an excellent example.

Intellectual Merit

To be completed....

Broader Impacts

To be completed....

Scale of Use

To be completed....