OpenMP 6.0 Parallel Programming Standard Released

After three years of development, the OpenMP 6.0 (Open Multi-Processing) specification set has been published, defining the API and methods for using parallel programming methods for the C, C++, and Fortran languages ​​on multi-core and hybrid (CPU+GPU/DSP) systems with shared memory and vectorization units (SIMD). Initial support for individual OpenMP 6.0 features is expected to be included in LLVM/Clang 20 and GCC 15 releases.

Key changes in OpenMP 6.0:

  • The process of programming tasks, which define independent parts of a program that can be executed in parallel with other parts, has been simplified.
    • Added the ability to execute tasks in free-agent threads that are not tied to teams that execute parallel regions (a block of code executed in multiple threads).
    • Support is provided for maintaining a taskgraph that defines the dependencies between tasks and the order in which tasks are executed, to improve the efficiency of subsequent replay.
    • A mechanism of transparent tasks has been implemented to simplify dependency management and automatically manage the execution of child tasks.
  • Expanded support for computing devices that can be used to perform parallel tasks (CPU, GPU, DSP, etc.).
    • Added new array syntax that allows using the "workdistribute" directive to split array processing between different work units.
    • Enhanced memory allocation management capabilities make it easier to manage variables for which memory is allocated dynamically.
    • Expanded support for attributes that define the default distribution of data between devices.
    • Simplified writing of code for asynchronous data transfer to additional computing devices (GPU).
    • Improved memory management and its binding to computing devices.
    • Added the "groupprivate" directive to assign memory to a group of threads running on a specific computing device.
  • Programming of some types of loop transformations, such as combining multiple loops, changing the order of nested loops, and loop reversal, has been simplified.
  • Added a new induction operation to organize parallelization in cycles of simple arithmetic calculations and user operations that depend on previous values.
  • Added full support for parallelization of programs written using C23 (including attribute syntax), Fortran 2023 and C++23 standards. Added new attributes for C/C++.
  • Expanded storage and memory management capabilities. Added new attributes to control how memory should be allocated and used. Added an API to define and query memory spaces.
  • Features deprecated in the OpenMP 5.0, 5.1, and 5.2 specifications have been removed.

Source: opennet.ru

Buy reliable hosting for sites with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster