OpenCL 3.0 final specifications published

The Khronos concern responsible for development of specifications of family OpenGL, Vulkan and OpenCL, объявил about the publication of the final specifications OpenCL 3.0, defining APIs and extensions of the C language for organizing cross-platform 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 embedded technology. The OpenCL standard is completely open and royalty-free.

Simultaneously published an open-source OpenCL SDK with tools, examples, documentation, header files, C++ wrappers, and C libraries for developing OpenCL 3.0 compliant applications. Also represented An initial implementation of OpenCL 3.0 based on the Clang compiler, which is in the process of being patched for inclusion in the LLVM mainstream. Companies such as IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments, and Toshiba have contributed to the standard.

OpenCL 3.0 final specifications published

Most notable features OpenCL 3.0:

  • The OpenCL 3.0 API now covers all versions of OpenCL (1.2, 2.x), without providing separate specifications for each version. OpenCL 3.0 provides for the ability to extend core functionality through the integration of additional specifications that will be layered in the form of options without blocking the monolithic nature of OpenCL 1.2/2.X.
  • Only functionality corresponding to OpenCL 1.2 is declared mandatory, and all features proposed in the OpenCL 2.x specifications are classified as optional. This approach will make it easier to create custom implementations compatible with OpenCL 3.0 and expand the range of devices that can use OpenCL 3.0. For example, vendors can implement OpenCL 3.0 support without implementing specific OpenCL 2.x features. To access optional language features, OpenCL 3.0 adds a test-request system that allows you to evaluate support for individual API elements, as well as special macros.
  • Unification with previously released specifications simplifies the transition of applications to OpenCL 3.0. OpenCL 1.2 applications will be able to run on devices that support OpenCL 3.0 without modification. OpenCL 2.x applications will also not require code changes, as long as the OpenCL 3.0 environment provides the required functionality (For future portability, it is recommended that OpenCL 2.x applications add test queries to evaluate support for the OpenCL 2.x features being used). Driver developers with OpenCL implementations will be able to easily upgrade their products to OpenCL 3.0, adding only query processing for certain API calls, and incrementally add functionality over time.
  • The OpenCL 3.0 specification has been aligned with the environment, extensions, and specifications of the SPIR-V Generic Intermediate Representation, which is also used by the Vulkan API. Support for the SPIR-V 1.3 specification has been added to the core OpenCL 3.0 as an optional feature. Through the use of an intermediate representation SPIR-V for computing cores, support for operations with subgroups has been added.
    OpenCL 3.0 final specifications published

  • Added support for an extension to perform asynchronous DMA operations (Asynchronous DMA), supported in DSP-like chips with direct memory access. Asynchronous DMA makes it possible to use DMA transactions to transfer data between global and local memory in an asynchronous manner, in parallel with ongoing calculations or other data transfer operations.
  • Parallel programming extensions specification for C language updated to 3.0 versions, and the development of OpenCL language extensions for C++ has been discontinued in favor of the "C++ for OpenCL" project. C++ for OpenCL is a compiler based on Clang/LLVM and broadcasting C++ and OpenCL C kernels to SPIR-V intermediate representation or low-level native code. Through translation, SPIR-V also organizes the assembly of C ++ applications using the SYCL template library, which simplifies the creation of parallel applications.

    OpenCL 3.0 final specifications published

  • Compiler proposed for translating OpenCL via Vulkan API clspv, which converts OpenCL cores to a Vulkan SPIR-V representation, and a layer clvk to make the OpenCL API work on top of Vulkan.

    OpenCL 3.0 final specifications published

Source: opennet.ru

Add a comment