The OpenMP 6.0 parallel programming standard has been published.

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

Key changes in OpenMP 6.0:

  • The process of programming tasks that define independent parts of a program capable of running in parallel with other parts has been simplified.
    • The ability to execute tasks in free-agent threads, which are not tied to teams of threads executing parallel regions (parallel region, a block of code executed in multiple threads), has been added.
    • Support for maintaining a task graph that defines dependencies between tasks and the order of their execution has been provided, enhancing the efficiency of subsequent reproductions.
    • A mechanism for transparent tasks has been implemented to simplify dependency management and automatic handling of the execution of child tasks.
  • Support for computational devices that can be used for executing parallel tasks (CPU, GPU, DSP, etc.) has been expanded.
    • A new array syntax has been added, allowing the use of the 'workdistribute' directive to divide array processing among different work units.
    • Capabilities for managing memory allocation have been expanded, simplifying the management of variables for which memory is allocated dynamically.
    • Support for attributes defining the default data distribution among devices has been expanded.
    • The coding of asynchronous data transfers to additional computational devices (GPU) has been simplified.
    • Memory management and its binding to computational devices have been improved.
    • The 'groupprivate' directive has been added to associate memory with a group of threads running on a specific computational device.
  • Programming certain types of loop transformations, such as merging multiple loops, changing the order of nested loops, and reversing loops, has been simplified.
  • A new induction operation has been added for facilitating parallelization in loops of simple arithmetic computations and user operations that depend on previous values.
  • Full support for parallelizing programs written using C23 standards (including attribute syntax), Fortran 2023, and C++23 has been added. New attributes for C/C++ have been introduced.
  • Storage and memory management capabilities have been expanded. New attributes for controlling how memory should be allocated and used have been added. An API for defining and requesting memory spaces has been introduced.
  • Capabilities declared deprecated in OpenMP specifications 5.0, 5.1, and 5.2 have been removed.

Source: opennet.ru

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