CPF is a compiler infrastructure that automatically parallelizes sequential C/C++ programs to run efficiently on shared-memory multicore systems.
This work is described in the ASPLOS '20 paper by Apostolakis et al. titled "Perspective: A Sensible Approach to Speculative Automatic Parallelization" (ACM DL, PDF).
To reproduce the evaluation results presented in the ASPLOS 2020 paper, please refer to the artifact of the paper:
This work builds upon Privateer (PLDI '12 by Johnson et al., ACM DL).
If you use CPF in a publication, we would appreciate a citation to the ASPLOS '20 paper:
@inproceedings{apostolakis:2020:asplos,
author = {Apostolakis, Sotiris and Xu, Ziyang and Chan, Greg and Campanoni, Simone and August, David I.},
title = {Perspective: A Sensible Approach to Speculative Automatic Parallelization},
year = {2020},
isbn = {9781450371025},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3373376.3378458},
doi = {10.1145/3373376.3378458},
booktitle = {Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems},
pages = {351–367},
numpages = {17},
keywords = {speculation, privatization, automatic parallelization, memory analysis},
location = {Lausanne, Switzerland},
series = {ASPLOS ’20}
}
The version number is in the form of [v Major.Minor.Revision ]
CPF relies on LLVM, SCAF and NOELLE. Follow bootstrap/README.md
to install all dependences automatically or customize it.
We also provide a Dockerfile using Ubuntu 20.04 for building and testing CPF. Simply run
docker build . -t cpf:1.0
to build the image and docker run -it cpf:1.0
to start
a container. By default, the build command will compile LLVM, CPF, and NOELLE, with SCAF
being built as a dependency by NOELLE. Again, refer to bootstrap/README.md
to change
this as needed.
If you have any trouble using this framework feel free to create an issue! We will try our best to help.
We welcome contributions from the community to improve this research-grade framework and evolve it to cater for more users.
CPF is licensed under the MIT License.