What is EasyPAP?
EasyPAP aims at providing students with an easy-to-use programming environment to learn parallel programming. The idea is to parallelize sequential computations on 2D matrices (which are images, most of the time) or 3D meshes over multicore and GPU platforms. At each iteration, the current data can be visualized, allowing to visually check the correctness of the computation method. Multiple variants can easily been developed (e.g. sequential, OpenMP, MPI, OpenCL, CUDA, etc.) and compared. EasyPAP is written in C, uses the SDL and OpenGL libraries for fast 2D/3D graphics rendering, and is available on Linux and MacOS platforms. Most of the parameters can be specified as command line arguments, which facilitates automation of experiments through scripts:
- size of input data, image/mesh file to be loaded;
- kernel to use (e.g. blur, pixelize, mandelbrot, life, …);
- variant to use (e.g. seq, omp, omp_task, pthread, mpi, ocl, …);
- code optimization to use (e.g. default, AVX, MIPP, …)
- interactive mode / performance mode;
- monitoring mode;
- tracing mode;
- and much more!
Documentation
Download the Getting Started with EasyPAP Guide!
Download (students)
The EasyPAP Git repository is hosted by GitHub.com. Click the Download Button and follow instructions for cloning the Git repository.
Note: After cloning the Git repository, you may also want to download a set of PNG files to be used as input to some 2D kernels, as well as a set of OBJ files to be used as input to 3D kernels:
- Download images.zip (~40MB) and extract files under your easypap/data/ subdirectory.
- Download mesh.zip (~51MB) and extract files under your easypap/data/ subdirectory.
EasyPAP for HPC practices (teachers)
If you are a CS teacher interested in using EasyPAP for your practice sessions, please contact us (see below) and we will grant you access to the full featured EasyPAP repository which contains suggested AVX/MIPP, Pthread/OpenMP, OpenCL/CUDA and MPI implementations for many kernels. You are obviously welcome to extend this database with new kernels or additional features!
Developers
The EasyPAP software was originally developed by the following people:
- Alice Lasserre
- Raymond Namyst
- Pierre-André Wacrenier
Many great extensions were brought by enthusiastic contributors:
- Alexis Bandet
- Adrien Cassagne
- Marc Fuentes
- Théo Grandsart
- Charles Martin
- Philippe Virouleau
Contact: Raymond Namyst, Pierre-André Wacrenier
Publications, Talks
- [1] Alice Lasserre, Raymond Namyst, Pierre-André Wacrenier. EASYPAP: a Framework for Learning Parallel Programming. Proceedings of 10th NSF/TCPP Workshop on Parallel and Distributed Computing Education (EduPar-20), in conjunction with IEEE IPDPS'20, New Orleans, USA, May 2020. [PDF]
- [2] Alice Lasserre, Raymond Namyst, Pierre-André Wacrenier, EasyPAP: A Framework for Learning Parallel Programming, Journal of Parallel and Distributed Computing, Vol. 158, pp. 94–114, 2021. [link]. Extended version of [1].
- [3] H. M. Bücker, H. Casanova, R. Ferreira da Silva, A. Lasserre, D. Luyen, R. Namyst, J. Schoder, P.-A. Wacrenier, and D. P. Bunde. Peachy Parallel Assignments (EduPar 2022). In 12th NSF/TCPP Workshop on Parallel and Distributed Computing Education (EduPar-22), 2022 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), May 2022. [animated slides].
- Short presentation (10 slides)