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, 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, …);
  • interactive mode / performance mode;
  • monitoring mode;
  • tracing mode;
  • and much more!


Download the Getting Started with EasyPAP Guide!

Download (students)

The EasyPAP Git repository is hosted by Gtilab.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, Pthread, OpenMP, OpenCL and MPI implementations for many kernels. You are also welcome to extend our database with new kernels or additional features!


The EasyPAP software was originally developed by the following people:

Contact: Raymond Namyst, Pierre-André Wacrenier

Publications, Talks