OpenMP 5.1 can handle accelerator hardware better
Source: Heise.de added 16th Nov 2020The OpenMP Architecture Review Board (ARB) has announced the release of the latest language release, OpenMP 5.1. In the past two years since the release of OpenMP 5.0, the OpenMP Language Committee has mainly focused on developing new extensions, but also on working out corrections and clarifications to the 5.0 specification. The current release also offers some new functions that should contribute to better interoperability with low-level APIs such as CUDA and HIP (Heterogeneous-Compute Interface for Portability).
Especially with regard to the extended support of accelerator hardware, some improvements can be found in OpenMP 5.1. The interop construct now also offers possibilities for interactions with native device interfaces beyond the OpenMP context. Support includes, for example, CUDA streams, HIP and OpenCL. Device-specific environment variables are also available to developers, and function pointers can now be assigned to a device or accelerator (mapping).
Support for current Language standards While OpenMP already has full support for the language standards C 11, C 18, C ++ 11, C ++ 14 and C ++ 14 can also be used with the update in C ++ 20 parallelize written applications. Instead of the traditional pragma form, the modern C ++ attribute syntax can also be used to specify OpenMP directives. This is intended to facilitate integration with templates. Fortran developers guarantee OpenMP 5.1 the complete implementation of the Fortran – 2008 – standards, the work on the support for Fortran 2018 were at least started.
In order to be able to implement optimizations in the parallelization more reliably, OpenMP now provides additional information for the compilers. The Assume directive, for example, provides additional information on how a program uses OpenMP. In addition, new directives for loop transformation are available – including a tile directive, which is supposed to improve data localization, as well as an unroll directive, which unrolls a loop in whole or in part.
A complete overview of all new functions and improvements can be found in the announcement for the release of OpenMP 5.1.
What is OpenMP? OpenMP has developed since its introduction 1997 to the de facto standard for shared memory parallelization in the technical-scientific environment. It supports the programming languages C, C ++ and Fortran equally and can be found today on embedded platforms, hardware accelerators and even multicore and shared memory systems. The “Open” in the name means that each party can freely implement the standard (even in parts) without license costs and can contribute to the further development. Under the supervision of the OpenMP Architecture Review Board (ARB), a group of users, hardware and software providers are pushing the further development of the specification.
The OpenMP standard consists of a set of directives for expression of parallelism, API routines for additional functions and environment variables for controlling the parallel program at runtime. The directives are implemented in C / C ++ as so-called pragmas and in Fortran as special directives in the form of comments. This means that in many cases an OpenMP program can still be compiled for sequential execution. Further information on OpenMP ARB and the OpenMP API can be found on the organization’s homepage.
(map)
brands: Tile media: Heise.de keywords: Memory Review Software
Related posts
Notice: Undefined variable: all_related in /var/www/vhosts/rondea.com/httpdocs/wp-content/themes/rondea-2-0/single-article.php on line 88
Notice: Undefined variable: all_related in /var/www/vhosts/rondea.com/httpdocs/wp-content/themes/rondea-2-0/single-article.php on line 88
Related Products
Notice: Undefined variable: all_related in /var/www/vhosts/rondea.com/httpdocs/wp-content/themes/rondea-2-0/single-article.php on line 91
Warning: Invalid argument supplied for foreach() in /var/www/vhosts/rondea.com/httpdocs/wp-content/themes/rondea-2-0/single-article.php on line 91