EPEEC releases programming guidelines for parallel applications

Share this on social media:

The European programming framework EPEEC has announced an important milestone with the publication of the EPEEC Programming Guidelines for Parallel Applications. This release highlights the work done by researchers to deliver a highly productive programming environment for heterogeneous exascale computing.

The European Programming Environment for Programming Productivity of Heterogeneous Supercomputers (EPEEC) is a project that aims to combine European made tools for programming models and performance tools that could help to relieve the burden of targeting highly-heterogeneous supercomputers. It is hoped that this project will make researchers' jobs easier as they can more effectively use large scale HPC systems.

These new recommendations are relevant to application developers interested in high productivity, as they are aimed at facilitating the compilers’ work and improving the applications’ execution time. These are compatible with profiling methodology and tools, such as those defined and leveraged in the POP-2 project.

Antonio J Peña, Coordinator of EPEEC and Lead of the Accelerators and Communications for HPC Team at Barcelona Supercomputing Center (BSC) said: 'The EPEEC guidelines will help to increase programmers productivity while developing modern applications.'

The EPEEC guidelines aim to establish a clear path to adapt application codes so they are suited for parallelisation and exploitation of heterogeneous resources. 

Additionally, the guidelines are backed up on the Appentra Parallelware Analyzer tool, which analyses the application code and provides recommendations and opportunities to the program developers.

The document presents the approach for the development of high-performance applications based on parallel programming best practices used by expert developers in the HPC community. It introduces the EPEEC methodological framework, which splits the parallelisation process into three steps:

1.   Prepare the code for parallelism: to code the application in such a way that reduces the cost/effort of parallel software development and maintenance.

2.   Create a first parallel version of your code: to develop a parallel version of existing sequential code that runs faster.

3.   Optimise your parallel code: to fine-tune the parallel code to obtain peak performance of the target hardware platform.

In addition to high-productivity and the development of a high-performance programming environment, EPEEC’s goals include the efficient and energy-aware management of hardware heterogeneity, both in terms of processing elements and memory subsystems, further favouring coding productivity.

A more in-depth look at the EPEEC project and how it is helping to solve some of the challenges of exascale computing can be found in the Spring 2020 issue of Scientific Computing World.