SC19 – 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 in device 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 mission of the OpenMP Architecture Review Board (ARB) is to standardize directive-based multi-language high-level parallelism that is performant, productive and portable. Jointly defined by a group of major computer hardware and software vendors, and users, the OpenMP API is a portable, scalable model that gives parallel programmers a simple and flexible interface for developing parallel applications for platforms ranging from embedded systems and accelerator devices to multicore systems and shared-memory systems. The OpenMP ARB owns the OpenMP brand, oversees the OpenMP specification and produces and approves new versions of the specification. Further information can be found at https://www.openmp.org.
OpenMP® is a registered trademark of the OpenMP Architectural Review Board.