DENVER, Colo., Nov. 13, 2019 — The OpenMP Architecture Review Board (ARB) has released Technical Report 8, the first preview for the future OpenMP API, version 5.1.
“We are excited about this first public step towards OpenMP 5.1,” said OpenMP Language Committee Chair Bronis R. de Supinski. “While 5.1 will include only a small set of new features, TR8 demonstrates that those additions, such as the assume directive, will provide important usability enhancements.”
New Features included in Technical Report 8
The key features that are added in Technical Report 8 include:
- Providing more information to the compiler to allow improved optimization:
- The assume directive gives the implementation additional information about the way a program uses OpenMP which allows additional optimizations to be safely applied by compilers, or safe OpenMP subsets to be implemented.
- Loop transformation directives are being introduced, starting with the tile directive which can improve data locality. More loop transformation directives are expected in the future.
- Improvements in the use of OpenMP from modern C++:
- Instead of the traditional pragma formalism, the C++ attribute syntax can be used to specify OpenMP directives making their integration with templates much simpler.
- Full support for C11, C18, C++11, C++14, and C++17: Programs written in these languages can now be parallelized with OpenMP.
- Almost full support for Fortran 2008: Fortran 2003 was already fully supported in OpenMP 5.0. In TR8 the support for Fortran 2008 has been greatly improved.
- Improvements indevice interactions:
- The interop construct, which enables interoperability with non-OpenMP device execution contexts, has been improved with native device support (e.g. for UDA streams, or OpenCL);
- Function pointers can now be mapped to a device or accelerator.
- Easier declaration of environment specific functions: Multiple functions can now be included in a single declare variant construct, and code can be more closely tailored to a specific environment.
- Allowing the user to generate compile-time errors and warnings: A new error directive has been added.
“We wanted to give vendors of OpenMP implementations a chance to breathe after the major additions we have made in version 5.0 of the OpenMP API.”, says Michael Klemm, CEO of the OpenMP ARB. “Yet, Version 5.1 will significantly refine existing features, constitutes a major milestone on the path to OpenMP API Version 6.0, and demonstrates the industry-wide commitment to full support of modern languages and hardware from the OpenMP ARB.”
Please provide feedback on the Technical Report
TR8 is an important milestone on the path to OpenMP 5.1. Users and implementers are encouraged to provide feedback on the proposed API. Feedback can be posted on the OpenMP Forum.
The OpenMP Application Program Interface (API) is a multi-platform shared-memory parallel programming model for the C, C++ and Fortran programming languages. It is a portable, scalable model that gives shared-memory parallel programmers a simple and flexible interface for developing parallel applications for platforms ranging from multicore systems and SMPs, to embedded systems. Incorporated in 1997, the OpenMP ARB is the non-profit corporation that oversees the OpenMP specification and produces and approves new versions of the specification. More information at https://www.openmp.org/.