Difference between revisions of "OpenCL"

From Chessprogramming wiki
Jump to: navigation, search
(Created page with "'''Home * Programming * Languages * OpenCL''' '''OpenCL''', (Open Computing Language)<br/> an open standard for cross-platform, task-based as well as da...")
 
m (fix)
 
(9 intermediate revisions by 2 users not shown)
Line 2: Line 2:
  
 
'''OpenCL''', (Open Computing Language)<br/>
 
'''OpenCL''', (Open Computing Language)<br/>
an open standard for cross-platform, task-based as well as data-based parallel programming of CPUs, [[GPU|GPUs]], [[FPGA|FPGAs]], [https://en.wikipedia.org/wiki/Digital_signal_processor DSPs], including the [[C|C99]] based programming language '''OpenCL C'''.  
+
an open standard for cross-platform, task-based as well as data-based parallel programming of CPUs, [[GPU|GPUs]], [[FPGA|FPGAs]], [https://en.wikipedia.org/wiki/Digital_signal_processor DSPs], including the [[C|C99]] based programming language OpenCL C. OpenCL C forbids [[Recursion|recursion]], and omits [https://en.wikipedia.org/wiki/Function_pointer function pointers], [https://en.wikipedia.org/wiki/Bit_field bit fields] and [https://en.wikipedia.org/wiki/Variable-length_array variable-length] [[Array|arrays]], but has fixed-length vector types, supporting [[SIMD and SWAR Techniques|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 [https://en.wikipedia.org/wiki/Nonprofit_organization nonprofit] technology consortium [https://en.wikipedia.org/wiki/Khronos_Group Khronos Group], adopted by [[Apple]]<ref>[https://appleinsider.com/articles/18/06/04/opengl-opencl-deprecated-in-favor-of-metal-2-in-macos-1014-mojave OpenGL, OpenCL deprecated in favor of Metal 2 in macOS 10.14 Mojave]</ref>, [[Intel]], [https://en.wikipedia.org/wiki/Qualcomm Qualcomm], [[AMD]], [[Nvidia]], [https://en.wikipedia.org/wiki/Altera Altera], [https://en.wikipedia.org/wiki/Samsung Samsung], [https://en.wikipedia.org/wiki/Vivante_Corporation Vivante], [https://en.wikipedia.org/wiki/Imagination_Technologies Imagination Technologies] and [[ARM]].
OpenCL C forbids [[Recursion|recursion]], and omits [https://en.wikipedia.org/wiki/Function_pointer function pointers], [https://en.wikipedia.org/wiki/Bit_field bit fields] and [https://en.wikipedia.org/wiki/Variable-length_array variable-length] [[Array|arrays]], but has fixed-length vector types, supporting [[SIMD and SWAR Techniques|SIMD instructions]] if available on the target platforms. OpenCL is maintained by the [https://en.wikipedia.org/wiki/Nonprofit_organization nonprofit] technology consortium [https://en.wikipedia.org/wiki/Khronos_Group Khronos Group], adopted by [[Apple]], [[Intel]], [https://en.wikipedia.org/wiki/Qualcomm Qualcomm], [[AMD]], [https://en.wikipedia.org/wiki/Nvidia Nvidia], [https://en.wikipedia.org/wiki/Altera Altera], [https://en.wikipedia.org/wiki/Samsung Samsung], [https://en.wikipedia.org/wiki/Vivante_Corporation Vivante], [https://en.wikipedia.org/wiki/Imagination_Technologies Imagination Technologies] and [[ARM]] <ref>[https://en.wikipedia.org/wiki/OpenCL OpenCL from Wikipedia]</ref>.
+
 
 +
= Specifications =
 +
* [https://www.khronos.org/registry/OpenCL/specs/opencl-1.2.pdf OpenCL 1.2 Specification]
 +
* [https://www.khronos.org/registry/OpenCL//sdk/1.2/docs/man/xhtml/ OpenCL 1.2 Reference]
 +
* [https://www.khronos.org/registry/OpenCL/specs/opencl-2.0.pdf OpenCL 2.0 Specification]
 +
* [https://www.khronos.org/registry/OpenCL/specs/2.2/pdf/OpenCL_C.pdf OpenCL 2.0 C Language Specification]
 +
* [https://www.khronos.org/registry/OpenCL//sdk/2.0/docs/man/xhtml/ OpenCL 2.0 Reference]
 +
* [https://www.khronos.org/registry/OpenCL/specs/3.0-unified/pdf/ OpenCL 3.0 Specifications]
 +
 
 +
= OpenCL to Vulkan =
 +
The OpenGL graphics API specified by Khronos Group is deprecated in favor for [https://en.wikipedia.org/wiki/Vulkan Vulkan], since Vulkan and OpenCL v1.2/v2.x share [https://en.wikipedia.org/wiki/Standard_Portable_Intermediate_Representation SPIR-V] as an intermediate representation it is possible to cross-compile OpenCL code via SPIR-V to run on Vulkan enabled devices <ref>[https://github.com/google/clspv clspv] by [[Google]] on GitHub</ref>.
  
 
=Chess Projects=
 
=Chess Projects=
 +
* [[Leela Chess Zero]]
 
* [[Oscar]], a [[Perft]] project by [[Steven Edwards]]
 
* [[Oscar]], a [[Perft]] project by [[Steven Edwards]]
 
* [[Zeta]] by [[Srdja Matovic]]
 
* [[Zeta]] by [[Srdja Matovic]]
Line 11: Line 22:
 
=Publications=
 
=Publications=
 
* [https://www.informit.com/authors/bio/ba2cf654-0769-47a6-9d60-01b6e6da4a60 Aaftab Munshi], [http://www.informit.com/authors/bio/056a0573-0374-4183-96db-e94b962d2046 Benedict Gaster], [http://www.informit.com/authors/bio/203bb6b7-d0bb-48ca-984c-a627e8b33ce2 Timothy Mattsonm], James Fung, [http://www.informit.com/authors/bio/5bd00f25-b8c1-49de-85a0-423e49663d06 Dan Ginsburg] ('''2011'''). ''[http://www.informit.com/store/opencl-programming-guide-9780321749642?w_ptgrevartcl=Programming+with+OpenCL+C_1732873 OpenCL Programming Guide]''. [https://en.wikipedia.org/wiki/Pearson_Education InformIT] <ref>[http://www.informit.com/articles/article.aspx?p=1732873 Programming with OpenCL C | Writing a Data-Parallel Kernel Using OpenCL C | InformIT]</ref>
 
* [https://www.informit.com/authors/bio/ba2cf654-0769-47a6-9d60-01b6e6da4a60 Aaftab Munshi], [http://www.informit.com/authors/bio/056a0573-0374-4183-96db-e94b962d2046 Benedict Gaster], [http://www.informit.com/authors/bio/203bb6b7-d0bb-48ca-984c-a627e8b33ce2 Timothy Mattsonm], James Fung, [http://www.informit.com/authors/bio/5bd00f25-b8c1-49de-85a0-423e49663d06 Dan Ginsburg] ('''2011'''). ''[http://www.informit.com/store/opencl-programming-guide-9780321749642?w_ptgrevartcl=Programming+with+OpenCL+C_1732873 OpenCL Programming Guide]''. [https://en.wikipedia.org/wiki/Pearson_Education InformIT] <ref>[http://www.informit.com/articles/article.aspx?p=1732873 Programming with OpenCL C | Writing a Data-Parallel Kernel Using OpenCL C | InformIT]</ref>
* [https://scholar.google.de/citations?user=ByAvYg4AAAAJ&hl=en Wolfram Schenck] (''2017''').  ''OpenCL Basics''. [https://www.fz-juelich.de/SharedDocs/Downloads/IAS/JSC/EN/slides/opencl/opencl-03-basics.pdf?__blob=publicationFile slides as pdf]
+
* [https://scholar.google.de/citations?user=ByAvYg4AAAAJ&hl=en Wolfram Schenck] ('''2017''').  ''OpenCL Basics''. [https://www.fz-juelich.de/SharedDocs/Downloads/IAS/JSC/EN/slides/opencl/opencl-03-basics.pdf?__blob=publicationFile slides as pdf]
  
 
=Forum Posts=
 
=Forum Posts=
Line 18: Line 29:
  
 
=External Links=
 
=External Links=
 +
* [https://www.khronos.org/conformance/adopters/conformant-products/opencl Khronos - OpenCL Conformant Products]
 +
* [https://www.khronos.org/opencl/ OpenCL - The open standard for parallel programming of heterogeneous systems]
 
* [https://en.wikipedia.org/wiki/OpenCL OpenCL from Wikipedia]
 
* [https://en.wikipedia.org/wiki/OpenCL OpenCL from Wikipedia]
* [https://www.khronos.org/opencl/ OpenCL - The open standard for parallel programming of heterogeneous systems]
 
 
* [https://code.google.com/archive/p/simple-opencl/ SimpleOpenCL - a library created to reduce the amount of host code needed to write an OpenCL program. - Google Project Hosting]
 
* [https://code.google.com/archive/p/simple-opencl/ SimpleOpenCL - a library created to reduce the amount of host code needed to write an OpenCL program. - Google Project Hosting]
 
 
=References=  
 
=References=  
 
<references />
 
<references />
 
'''[[Languages|Up one Level]]'''
 
'''[[Languages|Up one Level]]'''

Latest revision as of 15:19, 25 August 2022

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 C99 based programming language OpenCL C. 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[1], Intel, Qualcomm, AMD, Nvidia, Altera, Samsung, Vivante, Imagination Technologies and ARM.

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 [2].

Chess Projects

Publications

Forum Posts

External Links

References

Up one Level