OpenCL 3.0 specification introduced

The Khronos concern responsible for development of specifications of family OpenGL, Vulkan and OpenCL, объявил on the completion of the development of OpenCL 3.0 specifications that define 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. Companies such as IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments, and Toshiba have contributed to the standard.

At the current stage of the specification, the status is provisional (provisional), which implies the possibility of improvement based on feedback sent through GitHub. After the comments are taken into account, the specification will receive the status of the final one and the final test suite will be published to check the compatibility of existing implementations.

OpenCL 3.0 specification introduced

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 specification introduced

  • 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 specification introduced

  • 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 specification introduced

Source: opennet.ru

Add a comment