OpenCL

Home * Programming * Languages * OpenCL

OpenCL, (Open Computing Language) an open standard for cross-platform, task-based as well as data-based parallel programming of CPUs, GPUs, FPGAs, DSPs, including the C|C99 based programming language. OpenCL C forbids recursion, and omits function pointers, bit fields and variable-length arrays, but has fixed-length vector types, supporting SIMD instructions if available on the target platforms. OpenCL 2.0 adds features like nested parallelism and shared virtual memory, version 2.1 extends OpenCL C to a subset of C++14. OpenCL 3.0 makes version 1.2 functionality a mandatory baseline with 2.x and 3.x as optional features and replaces 'OpenCL C++' with 'C++ for OpenCL' as a subset of C++17. OpenCL is maintained by the nonprofit technology consortium Khronos Group, adopted by Apple, Intel, Qualcomm, AMD, Nvidia, Altera, Samsung, Vivante, Imagination Technologies and ARM.

= Specifications =
 * OpenCL 1.2 Specification
 * OpenCL 1.2 Reference
 * OpenCL 2.0 Specification
 * OpenCL 2.0 C Language Specification
 * OpenCL 2.0 Reference
 * OpenCL 3.0 Specifications

= OpenCL to Vulkan = The OpenGL graphics API specified by Khronos Group is deprecated in favor for Vulkan, since Vulkan and OpenCL v1.2/v2.x share SPIR-V as an intermediate representation it is possible to cross-compile OpenCL code via SPIR-V to run on Vulkan enabled devices.

=Chess Projects=
 * Leela Chess Zero
 * Oscar, a Perft project by Steven Edwards
 * Zeta by Srdja Matovic

=Publications=
 * Aaftab Munshi, Benedict Gaster, Timothy Mattsonm, James Fung, Dan Ginsburg (2011). OpenCL Programming Guide. InformIT
 * Wolfram Schenck (2017). OpenCL Basics. slides as pdf

=Forum Posts=
 * Zeta, a chess engine in OpenCL by Srdja Matovic, CCC, March 17, 2010
 * OpenCL perft Technical Issues by Steven Edwards, CCC, August 26, 2014

=External Links= =References= Up one Level
 * Khronos - OpenCL Conformant Products
 * OpenCL - The open standard for parallel programming of heterogeneous systems
 * OpenCL from Wikipedia
 * SimpleOpenCL - a library created to reduce the amount of host code needed to write an OpenCL program. - Google Project Hosting