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) over multicore and GPU platforms. At each iteration, the current matrix can be displayed, 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 library for fast 2D graphics, 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 the 2D matrices to be allocated/image 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 Gitlab.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 kernels. Download the images.zip file (~40MB), and extract files under your easypap/images/ 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:
- Adrien Cassagne
- Nathan Edely
- Théo Grandsart
- Charles Martin
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)