OpenCL Overview

OpenCL Resources

We believe the true usefulness of OpenCL goes beyond the spec itself; it is an ecosystem of tools, documentation, and resources contributed by the community.

Get involved, submit your resources either with a pull requests on Github! or email the webmaster at Khronos.org

Khronos Resources

Commercial Implementations

  • Intel SDK for OpenCL - 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
  • AMD APP SDK - The AMD APP SDK is a complete development platform created by AMD to allow you to quickly and easily develop applications accelerated by AMD Accelerated Parallel Processing technology. The SDK provides samples, documentation, and other materials to quickly get you started leveraging accelerated compute using OpenCL™, Bolt, or C++ AMP in your C/C++ application.
  • Intel SDK for OpenCL Applications - The development platform for OpenCL: Maximize the performance of the SoC; Optimize tasks for the best available compute engine; Tap into an easy-to-use development environment
  • NVIDIA OpenCL SDK - In addition to OpenCL, NVIDIA supports a variety of GPU-accelerated libraries and high-level programming solutions that enable developers to get started quickly with GPU Computing
  • OpenCL supported Android Devices - A collection of OpenCL supported Android Devices

Open Source Implementations

  • Beignet:// OpenCL Implementation for Ivy Bridge on Linux - The Beignet GPGPU System for Intel Ivybridge GPUs
  • Intel(R) Graphics Compute Runtime for OpenCL - The Intel(R) Graphics Compute Runtime for OpenCL(TM) is a open source project to converge Intel's development efforts on OpenCL(TM) compute stacks supporting the GEN graphics hardware architecture
  • TI OpenCL-DSP - TI has an OpenCL 1.1 implementation for SoCs with C66x DSPs such as the AM572x
  • Portable OpenCL (pocl) - Portable Computing Language (pocl) aims to become a MIT-licensed open source implementation of the OpenCL standard which can be easily adapted for new targets and devices, both for homogeneous CPU and heterogenous GPUs/accelerators

Language Bindings to OpenCL

  • NOpenCL - .NET wrapper for OpenCL with abstraction
  • OpenCL .Net - .Net bindings for OpenCL 1.2
  • OpenCL binding for Erlang - Erlang OpenCL binding
  • PyOpenCL - PyOpenCL is a complete, object-oriented language binding of OpenCL to Python. It has full documentation available and is licensed under the liberal MIT license
  • OpenCL binding for Ruby - opencl_ruby_ffi is a complete OpenCL binding of OpenCL to Ruby. It is entirely written in Ruby using FFI

Libraries and Frameworks with OpenCL Acceleration

  • DCompute - a framework and compiler extension to support writing native kernels for OpenCL and CUDA in D to utilise GPUs and other accelerators for computationally intensive code
  • OpenCL.org Projects - Projects and porting to OpenCL. All project files are available on Github
  • Accelerate - accelerate: An embedded language for accelerated array processing
  • Advanced Simulation Library - Open source hardware accelerated multiphysics simulation software (C++ API)
  • amgcl - Generic algebraic multigrid (AMG) hierarchy builder. C++ library for solution of large sparse linear systems with algebraic multigrid method
  • Anjuta Project Wizards - For AMD, NVidia and Intel OpenCL SDK
  • Aparapi - API for data parallel Java. Allows suitable code to be executed on GPU via OpenCL
  • ArrayFire math library - ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API
  • BabelStream - memory bandwidth benchmark for parallel architectures
  • Bolt - Bolt C++ Template Library
  • Bullet Physics - Bullet Physic OpenCL accelerated Rigid Body Pipeline
  • cf4ocl - The C Framework for OpenCL, cf4ocl, is a cross-platform pure C99 object-oriented framework for developing and benchmarking OpenCL projects in C/C++
  • CHO - CHO is a suite of benchmark applications for OpenCL FPGA platforms. We started off by porting CHStone to OpenCL. We will be adding more applications with time. This paper (CHO: A Benchmark Suite for OpenCL-based FPGA Accelerators) is a good introduction/refresher on FPGA, OpenCL or High-level Synthesis
  • cl-opencl-3b - Lisp-bindings for OpenCL. not active
  • CLBlast - CLBlast is a performant and tunable OpenCL BLAS library written in C++11
  • clBLAS library - a software library containing FFT and BLAS functions written in OpenCL. clBLAS library is a software library containing BLAS functions written in OpenCL
  • CLFORTRAN - Pure Fortran Interface to OpenCL
  • clMAGMA - clMAGMA 1.1 is an OpenCL port of MAGMA
  • clMath Library - clMath is a software library containing FFT and BLAS functions written in OpenCL
  • CLOGS - C++ library for sorting and searching in OpenCL applications
  • Cloo - .NET bindings for OpenCL 1.1. Used in OpenTK, which has good integration with OpenGL, OpenGL ES and OpenAL
  • CLyther - CLyther is a Python tool similar to Cython and PyPy. CLyther is a just-in-time specialization engine for OpenCL. The main entry points for CLyther are its clyther.task and clyther.kernel decorators. Once a function is decorated with one of these the function will be compiled to OpenCL when called
  • Concord - C++ Hetrogenous Programing Framework ( Support OpenCL 1.2 ) TBB like
  • COPRTHR
  • DeepCL - OpenCL library to train deep convolutional neural networks. A python wrapper for DeepCL is also available
  • Delphi-OpenCL - Delphi/Pascal-bindings for OpenCL. Seems not active
  • EPGPU - Provides expressions in C++
  • FAST - Framework for Heterogeneous Medical Image Computing and Visualization
  • floatCL - The project consists of a wrapper for the openCL API for the float datatype. Its been hosted to mainly demonstrate parallel sorting and max element search
  • ForOpenCL - Fortran to OpenCL tool
  • fortranCL - FortranCL is an OpenCL interface for Fortran 90
  • FSCL.Compiler - FSharp OpenCL Compiler
  • GATLAS - GPU Automatically Tuned Linear Algebra Software ( Project looks stalled)
  • Go-OpenCL - Go OpenCL bindings
  • GoCL - GLib/GObject wrapper for OpenCL
  • gpumatrix - A matrix and array library on GPU with interface compatible with Eigen
  • GPUVerify - GPUVerify is a tool for formal analysis of GPU kernels written in OpenCL
  • GVF - This is an optimized OpenCL implementation of Gradient Vector Flow (GVF)
  • Harlan - Harlan: A Scheme-Based GPU Programming Language
  • HopenCL - Haskell-bindings for OpenCL
  • Intercept Layer for OpenCL Applications - The Intercept Layer for OpenCL Applications is a tool that can intercept and modify OpenCL calls for debugging and performance analysis
  • Java Bindings to OpenCL - Project JOCL provides an easy to use Java binding for the OpenCL API. JOCL exposes the OpenCL API in two levels: A automatically generated low level JNI based binding and a hand written high level binding on top of the generated interfaces. The high level bindings provide a convenient interface and reduce verbosity to a minimum
  • JavaCL - Java OpenCL bindings and utilities. JavaCL wraps OpenCL in a nice Java API with goodies
  • JoCL.org - Java bindings for OpenCL
  • JuliaGPU - OpenCL 1.2 bindings for Julia
  • LWJGL - The Lightweight Java Game Library. Support for OpenCL 1.0-1.2 plus extensions and OpenGL interop
  • MAGMA linear algebra library - MAGMA provides implementations for CUDA, OpenCL, and Intel Xeon Phi. The latest releases are MAGMA 1.5.0, clMAGMA 1.1, and MAGMA MIC 1.2, respectively
  • MainConcept SDKs using OpenCL - The MainConcept GPU Acceleration SDK supports several GPU computing standards for parallel processing supported by MainConcept – NVIDIA's CUDA and AMD's OpenCL. In addition, there is the H.264/AVC Encoder for Intel Quick Sync Video that integrates Intel® Media SDK into the MainConcept API providing easy access to dedicated video processing in 3rd Generation Intel Core Processors
  • ManoCL - Not active project for .NET bindings
  • MatCL - MatCL is an OpenCL interface for MathWorks Matlab
  • Nengo - OpenCL-backed neural simulations using the Neural Engineering Framework
  • NOpenCL: Easy-to-use .NET wrapper for OpenCL with abstraction
  • Oclgrind - OpenCL device simulator, debugger, and dynamic analysis platform
  • Open Fortran Parser - ANTLR-based parsing tools that support the Fortran 2008 standard
  • OpenACC to OpenCL Compiler - Rose based OpenACC to OpenCL Compiler
  • OpenCL data parallel primitives library - clpp is an OpenCL Data Parallel Primitives Library
  • OpenCL for PLT Scheme - OpenCL FFI for PLT Scheme
  • OpenCL for Visual Studio Code - OpenCL for Visual Studio Code
  • OpenCL Studio - integrates OpenCL and OpenGL into a single development environment for high performance computing and visualization
  • OpenCLHelper - Easy to run kernels using OpenCL
  • OpenCLIntegration - An OpenCL wrapper class and a SCons build library to simplify integration of OpenCL code in C++, C, Fortran and Perl
  • OpenCLIPP - OpenCL Integrated Performance Primitives - A library of optimized OpenCL image processing functions
  • OpenCLLink - Wolfram - OpenCLLink allows the Wolfram Language to use the OpenCL parallel computing language
  • OpenClooVision - Computer vision framework based on OpenCL and C#
  • OpenMM - OpenMM is a toolkit for molecular simulation
  • Paralution - C++ sparse iterative solvers and preconditioners library with OpenCL support
  • Pencil - PENCIL to be a suitable target language for the compilation of
  • Perl-OpenCL - Perl bindings for OpenCL
  • ProjCL - ProjCL is a C interface to OpenCL routines that perform various geographic computations, including map projection, geodesic (distance) calculations, and datum conversion
  • RaijinCL - RaijinCL is a library for matrix operations for OpenCL
  • Rivertrail - JavaScript which supports Data Parallelism via OpenCL
  • Rodinia - designed for heterogeneous computing infrastructures with OpenMP, OpenCL and CUDA implementations
  • ROpenCL - Parallel Computing for R Using OpenCL
  • Rose Compiler - Rose Compiler with OpenCL Support
  • Rust-OpenCL - Rust-bindings for OpenCL
  • ScalaCL - Scala support of OpenCL
  • SimpleOpenCL - SimpleOpenCL is a library written in ANSI C and born in the needs of scientific research test development
  • SkelCL - A more advanced C++ wrapper, providing various skeleton functions
  • SnuCL - SnuCL naturally extends the original OpenCL semantics to the heterogeneous cluster
  • SparkCL - SparkCL is an open source unified programming framework for heterogeneous clusters based on Java, OpenCL, Aparapi and the Apache Spark framework
  • SpeedIT 2.4 - OpenCl based OpenFoam acceleration library
  • streamscan - StreamScan: Fast Scan Algorithms for GPUs without Global Barrier Synchronization-
  • Veles - Distributed platform for rapid Deep learning application development using OpenCL or CUDA
  • VexCL - VexCL is a vector expression template library for OpenCL. It has been created for ease of OpenCL developement with C++
  • ViennaCL - open-source linear algebra library for computations on many-core architectures (GPUs, MIC) and multi-core CPUs
  • VirtualCL - VirtualCL (VCL) cluster platform is a wrapper for OpenCL
  • VirtualCL Cluster Platform - VirtualCL (VCL) cluster platform is a wrapper for OpenCL™ that allows most unmodified applications to transparently utilize multiple OpenCL devices in a cluster as if all the devices are local
  • VOBLA - VOBLA - Vehicle for Optimized Basic Linear Algebra. Optimized Basic Linear Algebra DSL
  • VOCL - Virtualized OpenCL enviornment
  • VSI/Pro - VSIPL implementation in OpenCL

Learning OpenCL

Tutorials

White Papers

Forums

Optimisation guides

Courses

Applications Using OpenCL

  • Altair RADIOSS - Altair®RADIOSS is a structural analysis solver for highly non-linear problems under dynamic loadings
  • BigDFT - European project - BigDFT is a DFT massively parallel electronic structure code (GPL license) using a wavelet basis set
  • BioLayout Express 3D - BioLayout Express3D is a powerful tool for the visualization and analysis of network graphs
  • Catalyst Browse - a powerful clip management tool for the latest portfolio of Sony cameras and decks
  • Catalyst Prepare - The fast, simple, reliable path from camera to post
  • CompuBench - Cross-platform performance evaluation tool for all major compute APIs including OpenCL and OpenGL ES Compute.
  • EDEM - DEM Solutions - EDEM is a computer-aided engineering (CAE) software platform powered by state-of-the-art Discrete Element Modeling (DEM) technology. DEM Solutions developed a prototype OpenCL (Open Computing Language) implementation of its EDEM® simulation engine
  • Fractorium - Fractorium is an OpenCL-accelerated editor, renderer and animator for the fractal flames algorithm
  • Houdini - SideFX - Houdini combines superior performance and dramatic, new ease-of-use functionality to deliver a powerful and accessible 3D animation experience to CG professionals. Houdini can use the GPU to dramatically increase the performance and speed of Pyro FX simulations
  • Ikena ISR - MotionDSP - Ikena, MotionDSP's forensic video enhancement software for Windows, has been designed from the ground up to accelerate video forensics using state-of-the-art, automated image processing that can quickly extract forensically valid results from any video source. MotionDSP has optimized the industry-leading Ikena ISR real-time video reconstruction software for OpenCL
  • Maya Bullet Physics plugin - Autodesk - Built from the Bullet physics library, the Maya Bullet plug-in lets you use the Bullet physics engine to create large-scale, highly-realistic dynamic and kinematic simulations
  • Movie Edit Pro - MAGIX - Movie Edit Pro offers everything you need to design impressive movies. GPU-accelerated AVCHD encoding for AMD Radeon Graphics Cards – optimized for OpenCL
  • Movie Studio HD - Sony - Digital video editing tools add professional style and energy with transitions, titles, and special effects including slow motion and green screen. Vegas Pro 11 leverages the processing capabilities of modern GPUs (Graphic Processing Units) using the industry-standard OpenCL
  • PowerDirector - CyberLink - PowerDirector video editor is a fast, feature-rich and easy to use, with integrated tools that let you create brilliant movies like a pro. If your graphics card driver supports OpenCL, you can accelerate video effect feature by using OpenCL
  • Premiere - Adobe - Adobe Premiere Pro is a timeline-based video editing software application
  • Sequalator - Sequalator (Simultaneous Equations Calculator) is software for solving Linear Simultaneous Equations
  • SIMULIA - Dassault Systemes - SIMULIA lets you explore, discover and improve on the 3DEXPERIENCE platform
  • Sony Creative Software - Catalyst family (Browse, Prepare, Edit)
  • Theia-RT - Optis - Real Time Physics Based Rendering technology based on OpenCL
  • TotalMedia Theatre - ArcSoft - All-in-one media player with cinema-like experience using advanced SimHD to bring videos and DVDs to high definition. SimHD is ArcSoft's upscaling technology, bringing low-resolution videos and DVDs to near high-resolution quality by utilizing the NVIDIA CUDA parallel computing architecture and AMD OpenCL to solve complex calculations in a fraction of the time
  • V-Ray - Chaos Group - V-Ray optimized interactive rendering using OpenCL
  • Vegas Pro - Sony - Vegas Pro 13 is a contemporary NLE designed for complete creative control

SPIR Enabled Tools

  • C++ AMP CLANG/LLVM based - C++AMP 1.2 standard and transforms it into either SPIR binary devices
  • CLANG SPIR 1.2 Generator - CLANG SPIR 1.2 Generator
  • Halide - Halide Programming language for high-performance image processing
  • PGI OpenACC 2.0 Compiler - PGI Accelerator™ compilers, programmers can accelerate applications on x64+accelerator platforms by adding OpenACC compiler directives to existing high-level standard-compliant Fortran, C and C++ programs