OpenCL™ is being actively evolved to meet the growing demands for the use of parallel processing to deliver higher levels of compute performance. The OpenCL Working Group at Khronos regularly extends OpenCL for enhanced functionality and flexibility, as well as increasing the quality and diversity of tools, libraries, and language compilers.
This Resource Guide is curated by the OpenCL Working Group to assist computing specialists, developers and researchers of all skill levels find documentation and tools to start effectively harnessing the power of OpenCL. The OpenCL Working Group will continuously evolve the guide and welcomes any feedback on how it can be improved via GitHub.
Khronos also hosts an OpenCL Community Resource Page where anyone can submit links to OpenCL resources with a pull request on GitHub! or by emailing the webmaster at khronos.org.
- OpenCL Home Page is the starting place to discover all things OpenCL
- OpenCL Registry contains the definitive OpenCL specifications and reference materials
- Official list of OpenCL Adopters that have conformant OpenCL implementations
- List of conformant OpenCL implementations
- OpenCL C Kernel Language is the Khronos-defined C99-based dialect
- C++ for OpenCL Programming Language is a community-based C++ kernel language for OpenCL that combines full OpenCL C with most features of C++17, implemented in open source Clang and LLVM
List of individual tools supporting OpenCL and SPIR-V:
- Clang is a compiler front-end for the C family of languages including OpenCL C. It is part of the LLVM compiler infrastructure project, and there is information regarding OpenCL kernel language support and standard headers
- Libclc is a generic and portable implementation of OpenCL builtin function libraries for OpenCL 1.1 - and some functions from later versions of OpenCL can be found there too
- The SPIRV-LLVM Translator, is a library and tool for translating between LLVM IR and SPIR-V
- The open source clspv compiler and clvk runtime layer enable OpenCL applications to be executed on Vulkan
- SPIR-V Tools provide a set of utilities to process SPIR-V modules including an optimizer, linker, (dis-)assembler, and validator
OpenCL-Guide contains a detailed description of how to compile OpenCL kernels offline into SPIR-V using the available open source tools.
- Open source OpenCL Headers
- Open source OpenCL ICD Loader
- Intercept Layer for OpenCL Applications that can intercept and modify OpenCL calls for debugging and performance analysis
- OpenCL C++ bindings to enable host code to be conveniently written using C++ abstractions
- Intel SDK for OpenCL Applications is a development platform for OpenCL: Maximize performance; Optimize tasks for the best available compute engine; Tap into an easy-to-use development environment
- Intel FPGA SDK for OpenCL is a world class development environment that enables software developers to accelerate their applications by targeting heterogeneous platforms with Intel CPUs and FPGAs
- NVIDIA OpenCL SDK supports a variety of GPU-accelerated libraries and high-level programming solutions that enable developers to get started quickly with GPU Computing
- Arm Mali GPU OpenCL driver and compiler as well as libraries to accelerate machine learning and neural network inferencing applications using OpenCL
- Radeon GPU Profiler for profiling OpenCL code on AMD GPUs
- Intel(R) Graphics Compute Runtime for OpenCL is an open source project to converge Intel's development efforts on OpenCL compute stacks supporting the GEN graphics hardware architecture
- AMD ROCm is an open source based solution that includes drivers and compilers with installation information. Note that for Windows-based platforms OpenCL support is shipped in the Adrenalin driver
- TI OpenCL-DSP OpenCL 1.1 implementation for SoCs with C66x DSPs such as the AM572x
- Portable Computing Language (POCL) is an implementation framework for OpenCL platforms with diverse device types. It utilizes upstream Clang/LLVM as a kernel compilation backbone. The POCL master branch currently supports various CPUs, open source TCE ASIPs , NVIDIA GPUs (via libcuda) among other devices in the same OpenCL context
- Rusticl is an open source implementation of OpenCL 3.0 written in Rust that is part of the Mesa project
- Details of what OpenCL features and extensions are supported on various devices can be found on gpuinfo.org