Archives

OpenMP 6.0 Released for Simplified Programming

OpenMP

The OpenMP Architecture Review Board (ARB) is pleased to announce Version 6.0 of the OpenMP API Specification, a major upgrade of the OpenMP language. This new version opens up parallel programming to new applications, makes it easier to develop parallel programs, and gives more fine grain control to the developer. The OpenMP API is used in a range of fields including physics, automotive and aeronautical simulations, biotech (including drug design), automation, robotics and financial analysis. It covers the entire hardware spectrum from embedded and accelerator devices to multicore systems with shared-memory.

Improvements in usability and fine grain control

Parallel programs are now easier to write through simplified task programming, finer management of allocatable variables, and simplified writing of synchronous data transfers and loop transformations with more fine grain control of the memory to developers. The range of applications where OpenMP can be used has been greatly extended with better support for Fortran array syntax, and the latest versions of C and C++. Iterative applications, applications that use dynamic memory management, and applications that use task programming will also benefit from the new enhancements.

“OpenMP 6.0 includes several significant new features,” said Bronis R. de Supinski, the Chair of the OpenMP Language Committee. “In particular, the improvements to OpenMP tasking support will impact a large number of users, as OpenMP tasking is pervasive, with a key role in OpenMP device constructs as well as for programs that use tasking constructs on a host device.”

Also Read: Palantir Launches AIP for Developers at DevCon Event 

Standard development

Version 6.0 of the OpenMP specification was jointly developed by the OpenMP ARB, a group of major computer hardware and software vendors, as well as users throughout the OpenMP community. In addition to several minor improvements, the updated specification includes the following major additions:

  • Simplification of task programming:
    • Support for task execution by free-agent threads, which are threads that are not assigned to any team that is executing a parallel region;
    • Enabling the recording of task graphs for efficient replay;
    • Addition of transparent tasks that expand the set of tasks between which dependencies may be specified.
  • Enhanced device support:
    • Added support for array syntax applications: The workdistribute directive divides the execution of array notation into separate units of work, enhancing device support for Fortran;
    • Enhanced control of memory allocations and accessibility, which makes it easier to manage allocatable variables;
    • Expanded support for default data environment attributes;
    • Easier writing of asynchronous data transfers by adding structured asynchronous data mapping regions;
    • Better control of memory by extended mapping of data to devices;
    • Added functionality to have per team memory on a device with the groupprivate directive
  • Easier programming of loop transformations: Simplifying the use of loop fusion, reversal and interchange.
  • Support for induction: Support to parallelize basic arithmetic operations and user-defined operations in loops that follow well-defined patterns.
  • Support for parallelization of the latest C, C++ & Fortran language standards:
    • Full support for C23, including C attribute syntax, Fortran 2023 and C++23;
    • The introduction of new C/C++ attributes.
  • Greater user control of storage resources and memory spaces:
    • Addition of new memory traits for greater control of memory allocation;
    • Provision of new API routines to define and to query memory spaces;
  • Removal of Deprecated features: Features that were deprecated in versions 5.0, 5.1, and 5.2 have been removed.

“OpenMP 6.0 is a significant achievement that demonstrates the industry-wide collaboration and the hard work and dedication within the OpenMP community”, says Michael Klemm, CEO of the OpenMP ARB. “We strive to deliver high-level parallelism that is portable across three widely-implemented common general purpose languages. OpenMP API version 6.0 will help programmers write highly efficient parallel software for heterogeneous systems.”

Implementations

Implementers have already added parts of the OpenMP 6.0 specification in their products. Intel has added groupprivate and a feature enabling interoperability with libraries that may or may not use OpenMP offloading in the current release (2024.2). GNU has features including full support for C23, C++23 and Fortran 2023 available in GCC 14, the current release of GCC. In addition, vendors’ debugging and performance tools are being extended with OpenMP 6.0 features. More information can be found on the Resources tab of the OpenMP website, where you can also find links for OpenMP benchmarks and OpenMP research projects.

Source: Businesswire