Skip to content

pranavk/spatial-computing

Repository files navigation

spatial-computing

This repository contains the LLVM compiler passes that are used to convert a program written in C/C++ to a synthesizable dataflow intermediate representation, called Program Dependence Mesh (PDM). PDM is our own intermediate representation based on Program Dependence Web (PDW), Program Dependence Graph (PDG), etc. It is a synthesizable representation unlike others.

The target of the PDM is a unified platform that can be used as an ASIC, a CPU, or a CGRA.

We use the concept of waves, taken from WaveScalar Architecture, to solve synchronization problems, especially in nested loops and recursion. This compiler pass outputs the PDM in .dot format which can be easily converted to an image and parsed by SystemC for architectural exploration and analysis of the project.

Using LLVM format is quite helpful here since it provides front end for many languages and convert all of them into a Common Intermediate representation (IR). Having said that, the pass should be able to get PDM from any language which has a LLVM frontend; though, this is not something I have tried.

You can read this blog post giving an overview of the project.

About

This repository contains LLVM compiler passes (for now) to convert a C/C++ program to PDM (a synthesizable dataflow intermediate representation)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published