Par4All
Par4All is a platform that merges various open source developments to aim at achieving the migration of software to multicore and other parallel processors
Pa4All is an open-source environment to do source-to-source transformations on C and Fortran programs for parallelizing, optimizing, instrumenting, reverse-engineering, etc. on various targets, from multicore system-on-chip with some accelerators up to high performance computers and GPU.
The interest of the source-to-source approach is to capitalize on the real value of an application (its source!) and generating other sources that can be used by the better back-ends available: optimized compilers for a given processor, vendor compilers for embedded processors, CUDA or OpenCL for GPU, OpenMP, MPI... One source, run everywhere!
Par4All current version
The current 1.0 version can generate CUDA code from C code and OpenMP from C and Fortran code with a simple easy to easy-to-use high-level script p4a. With this script, you can get a parallelized version of your sources or even call the backend compiler to generate executable binaries with gcc, nvcc or icc for example.
In the benchmarks folder, there are some performance results with Par4All on multicores and GPU.
Internally, Par4All is currently composed of different components:
- the PIPS source-to-source compiler that began at MINES ParisTech in 1988 and is currently developed also in many other places: HPC Project, TÉLÉCOM Bretagne, IT SudParis, RPI (Rensselaer Polytechnic Institute)
- the PolyLib used by PIPS
- GCC/GFC for the Fortran95 parser
- and of course own tools and scripts to make all these components and the global infrastructure usable.
What is going on?
- Better CUDA generation (loop fusion, interprocedural static and dynamic communication optimizations... )
- Scilab and xcos to CUDA (come to see the prototype demo at the HPC Project booth at GTC 2010 in San Jose on 2010/09/20-23)
- Improving vector code generation (x86 SSE, ARM Neon, CUDA and OpenCL vector)
- Code generation for the CEA SCMP (Scalable Chip Multi Processing) architecture
- Code generation for Scaleo Chip Leon3 MP-SoC
- Improving the OpenMP output
- Better #include recovering in the source output
- OpenCL code generation
- Full C99 support
- Fortran 95 support with the gcc/gfc front-end
- Automatic instrumentation for loop parameters extraction at runtime
- More user-friendly interfaces
Roadmap
- Par4All 0.1 and 0.2 went out to provide Fortran 77 to OpenMP parallelization to modernize legacy code and C to OpenMP parallelization. There were first releases to test the integration process and were not really distributed as packages or with high level compilation scripts
- Par4All 1.0 (07/2010) parallelizes Fortran and C to CUDA and is the first easy to use version
- Par4All 1.1 (09/2010) will parallelize Fortran to CUDA
- Par4All 1.2 (03/2011) will parallelize Scilab to CUDA, OpenCL & OpenMP
Par4All members & SUPPORT
Members
Par4All is currently supported by different organizations:
- HPC Project for the industrial support and development
- Mines ParisTech/CRI
- Institut Télécom/Télécom Bretagne/HPCAS.
- Rensselaer Polytechnic Institute/CS
Support
Par4All is currently funded by different projects:
- French NSF (ANR) FREIA project (2008-2012)
- French Images and Networks research cluster TransMedi@ project (2008-2010)
- European ARTEMIS SCALOPES project (2009-2011)
- French NSF (ANR) MediaGPU project (2010-2013)
- French System@TIC research cluster OpenGPU project (2010-2012)
- European ARTEMIS SMECY project (2010-2013)

