The final specifications of OpenCL 3.0 have already been released

A few months ago we shared here in the blog the news of the release of the development of OpenCL 3.0 by Khronos Concern (Responsible for the development of specifications for the OpenGL, Vulkan and OpenCL family).

And it was until recently that release of final OpenCL 3.0 specifications announced, defining APIs and extensions of the C language to organize multiplatform parallel computing using multi-core CPUs, GPUs, FPGAs, DSPs and other specialized chips from those used in supercomputers and cloud servers to chips that can be found in mobile devices and integrated technology.

At the same time, an open source OpenCL SDK was released with tools, examples, documentation, header files, links for C ++ and C libraries for developing OpenCL 3.0 compliant applications.

The initial implementation of OpenCL 3.0 based on the Clang compiler is also presented, which is in the peer review stage for inclusion in the main LLVM package. Companies such as IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments, and Toshiba have contributed to the standard.

Today, the Khronos® OpenCL ™ Working Group is pleased to announce the release of the finalized OpenCL 3.0 specifications, including a new unified OpenCL C 3.0 language specification, along with an early initial release of a Khronos OpenCL SDK for enable developers to get up quickly speed up with OpenCL.

OpenCL 3.0 main features

OpenCL 3.0 API now covers all versions of OpenCL (1.2, 2.x), without providing separate specifications for each version.

OpenCL 3.0 offers the ability to extend core functionality by integrating additional specifications that will overlap in the form of options without blocking the monolithic nature of OpenCL 1.2 / 2.X.

Only functionality that meets OpenCL 1.2 is declared mandatory, and all the features proposed in the OpenCL 2.x specifications are called optional.

This approach will simplify the creation of specialized implementations that are compatible with OpenCL 3.0 and will expand the range of devices on which OpenCL 3.0 can be used.

For example, Manufacturers can implement support for OpenCL 3.0 without implementing specific OpenCL 2.x features. To access optional language functions, a test request system has been added to OpenCL 3.0 to evaluate support for individual API elements, as well as special macros.

Unification with previously released specifications makes it easy to translate applications to OpenCL 3.0. OpenCL 1.2 applications will be able to run on devices that support OpenCL 3.0 without modification.

The applications OpenCL 2.x also do not require code changes, but if the OpenCL 3.0 environment provides the necessary functionality (for future portability, OpenCL 2.x applications are encouraged to add test queries to evaluate compatibility with the OpenCL 2.x features being used).

Driver developers with OpenCL implementations can easily upgrade their products to OpenCL 3.0 by adding only request processing for certain API calls and gradually increasing functionality over time.

The OpenCL 3.0 specification has been aligned with the environment, extensions, and specifications of the generic intermediate SPIR-V, which is also used in the Vulkan API. Support for the SPIR-V 1.3 specification is included in the main OpenCL 3.0 as an optional feature. Support for operations with subgroups has been added by using the SPIR-V intermediate representation for compute cores.

Besides that added support for an extension to perform DMA operations Asynchronous supported on DSP-like DMA chips.

Asynchronous DMA makes it possible to use DMA transactions to transfer data between global and local memory asynchronously, in parallel with ongoing calculations or other data transfers.

The specification of parallel programming extensions for language C has been updated to version 3.0 and the development of the OpenCL language extensions for C ++ is discontinued in favor of the "C ++ for OpenCL" project.

To translate OpenCL through the Vulkan API, the clspv compiler is proposed, which converts OpenCL kernels to the Vulkan SPIR-V representation, and the clvk layer to ensure that the OpenCL API works on top of Vulkan.

Source: https://www.khronos.org/


Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: AB Internet Networks 2008 SL
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.