Skip to content

Latest commit

 

History

History
91 lines (49 loc) · 2.52 KB

implementations.md

File metadata and controls

91 lines (49 loc) · 2.52 KB

Implementations

https://en.wikipedia.org/wiki/OpenCL#Implementations

ICD

Installable client driver

There is a certain "installable client driver loader (ICD loader)" which forwards calls to the proprietary implementation.

https://www.khronos.org/news/permalink/opencl-installable-client-driver-icd-loader

TODO how to use it.

Gallium Compute

http://www.x.org/wiki/XorgEVoC/GalliumCompute/

Looks like the major open source implementation. MIT and LLVM based.

NVIDIA

Implements it, but way after CUDA features.

Likely their monopoly + anti antitrust tactic.

Offers official Ubuntu packages as of 15.10.

TODO why are many symbols missing even though NVIDIA claims to support a given OpenCL version?

  • clCreateSubBuffer
  • clEnqueueReadBufferRect

Threads:

OpenCL 2 announced in 2017:

but hardware support will very likely be / is already there because of Vulkan / OpenCL 2 convergence.

OpenCL 1.2 apparently added in driver 350.12, on Kepler hardware and up.

Intel

http://stackoverflow.com/questions/19141272/opencl-implementation-for-intel-core-i5-linux

No official Linux packages.

Beignet looks like an open source implementation for Intel's embedded GPU: https://www.freedesktop.org/wiki/Software/Beignet/ TODO reversed or documented?

Altera FPGA

https://www.altera.com/products/design-software/embedded-software-developers/opencl/overview.html

Transpiler

CPU implementations

Software implementations

Slow but portable, and a sanity check that OpenCL is actually making anything faster:

Clover

pocl

Portable OpenCL implementation.

https://github.com/pocl/pocl

http://portablecl.org/

Oclgrind

https://github.com/jrprice/Oclgrind