Best Practice Guides
INTERTWinE Best Practice Guides address the challenges of programming model interoperability on exascale systems.
INTERTWinE is producing a series of Best Practice Guides, focusing on specific combinations of programming models and the interoperability challenges which these will present on the exascale systems of the near future. Best Practice Guides on the following topics are now available:
- Hybridizing pure MPI applications with tasks
- Migration of MPI legacy code towards the GASPI-SHAN data-flow model
- Hybrid PaRSEC + OpenMP Programming
- OpenMP/OmpSs/StarPU + Multi-threaded Libraries Interoperable Programs
- MPI + OmpSs Interoperable Programs
- MPI + OpenMP Programming
- GASPI-MPI Interoperable Programs
We have also produced a brief Best Practice Guide for Minimising Gender Bias in HPC Training, which is equally applicable to training in most other fields too.
Best Practice Guide for hybridizing pure MPI applications with tasks
In this Best Practice Guide for parallel application developers, we introduce how to develop hybrid applications using the MPI version as the starting point. The idea is then to incorporate a task-based programming model such as OpenMP Tasking. Among all the techniques presented in this guide we also include the use of features that are not yet implemented in these two programming models, so we use the OmpSs-2 model that already incorporates them as a representative for the task-based runtime system, and an MPI interposition library, that will simulate the implementation of the required services in MPI. Read further details and download this Best Practice Guide.
Best Practice Guide for the migration of MPI legacy code towards the GASPI-SHAN data-flow model
The Global Adress Space Programming API (GASPI) programming model has been designed to provide interoperability with MPI. However, there is no shared memory implementation for GASPI, making it difficult to migrate 'flat’ MPI legacy code (where MPI is being used in shared memory) to GASPI. In order to address this, the INTERTWinE project has developed a GASPI shared memory extension (GASPI-SHAred Notifications, GASPI-SHAN), which extends the notified communication of GASPI into shared memory windows. This Best Practice Guide will serve as a guide for application developers that are considering an improved scalability for their applications via notified intra- and inter-node communication. Read further details and download this Best Practice Guide.
Best Practice Guide to Hybrid PaRSEC + OpenMP Programming
Hybrid application programs using MPI + OpenMP are now common on large HPC systems. This Best Practice Guide considers a hybrid programming model combining PaRSEC - a generic framework for architecture-aware scheduling and management of micro-tasks on distributed many-core heterogeneous architectures - on the inter-node level with OpenMP used intra-node. Read further details and download this Best Practice Guide.
Best Practice Guide for Writing OpenMP/OmpSs/StarPU + Multi-threaded Libraries Interoperable Programs
This Best Practice Guide is aimed at application developers who plan to exploit task-parallelism from within a task-based runtime system concurrently with the use of a multi-threaded numerical library to execute the runtime tasks. In particular, the document pays special attention to the interoperability issues that arise due to oversubscription when exploiting thread-level parallelism simultaneously from within the task-based runtimes OpenMP/OmpSs/StarPU and the MKL numerical library from Intel. Read further details and download this Best Practice Guide.
Best Practice Guide for Writing MPI + OmpSs Interoperable Programs
OmpSs is a task-based parallel programming model based on tasks. This Best Practice Guide offers advice on programming hybrid applications using MPI + OmpSs and is aimed at application developers who are considering taking advantage of the multilevel parallelism offered by modern HPC systems using these two programming models (i.e. invoking MPI calls within asynchronous tasks). Read further details and download this Best Practice Guide.
Best Practice Guide for Hybrid MPI + OpenMP Programming
Hybrid application programs using MPI + OpenMP are now commonplace on large HPC systems. This Best Practice Guide discusses the motivations for using this combination, as well as the possible downsides. It covers the technical details of thread support in the MPI library, and describes some different styles of MPI + OpenMP program and their relative advantages and disadvantages. It also provides some best practice tips for developers of hybrid MPI + OpenMP applications. Read further details and download this Best Practice Guide.
Best Practice Guide for Writing GASPI-MPI Interoperable Programs
This document serves as a guide for application developers who are considering either complementing MPI with a Partitioned Global Address Space, or combining legacy MPI applications or libraries with (bundled) notified communication in PGAS, or complementing their MPI code with highly multithreaded communication calls. Read further details and download this Best Practice Guide.
Best Practice Guide for Minimising Gender Bias in HPC Training
This short Best Practice Guide is an aide-mémoire, to remind you of measures that should be taken to improve the accessibility of HPC training and to minimise the impact of real and perceived gender bias. It is written with INTERTWinE in mind, but is applicable to any HPC training courses, or indeed to any training courses in any subject area. Download this Best Practice Guide.