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. You are encouraged to get involved and help maintain an up-to-date list of OpenCL resources.

Khronos Resources

Commercial Implementations

  • Altera SDK for OpenCL - The Altera® SDK for Open Computing Language (OpenCLTM) allows a user to abstract away the traditional hardware FPGA development flow for a much faster and higher level software development flow.
  • 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.
  • ARM Mali OpenCL SDK - The Mali OpenCL SDK provides developers a framework and series of samples for developing OpenCL 1.1 application on ARM Mali based platforms such as the Mali-T600 family of GPUs. The samples cover a wide range of uses cases that utilize the Mali GPU to achieve a significant improvement in performance when compared to running on the CPU alone.
  • 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
  • MCSDK HPC 3.x OpenCL - MCSDK is an OpenCL 1.1 implementation. The OpenCL specification defines a platform model with a Host and Compute Devices. For this implementation the Host is an ARM Cortex-A15 Linux CPU and the Compute Device is a collection of 8 Texas Instruments' C66x DSP cores, exposed as one virtual accelerator device with 8 compute units.
  • 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

  • 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.
  • Bolt - Bolt C++ Template Library
  • Bolt C++ Template Library - Bolt is an STL compatible library of high level constructs for creating accelerated data parallel applications.
  • 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.
  • 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.
  • Codeplay Math Lib - OpenCL 1.2 Math library
  • 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.
  • DL- Data Layout - DL Enables Optimized Data Layout Across Heterogeneous Processors
  • EPGPU - Provides expressions in C++.
  • 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)
  • GMAC - Global Memory for Accelerators
  • Go-OpenCL - Go OpenCL bindings
  • GoCL - GLib/GObject wrapper for OpenCL
  • GPU-STREAM
  • 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
  • Harlan - Harlan: A Scheme-Based GPU Programming Language
  • HopenCL - Haskell-bindings for OpenCL.
  • Intel IPP - A Library of Highly Optimized Algorithmic Building Blocks for Media and Data Applications
  • 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.
  • libCL - C++ Generic parallel algorithms library
  • Libra SDK - Cross Platform Acceleration API
  • 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.
  • M_ Platform - Parallel Framework and Primitive Libraries
  • NOpenCL: Easy-to-use .NET wrapper for OpenCL with abstraction.
  • OCL-Library - Simplified OpenCL in C++
  • 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 Support Vector Machine - Support Vector Machines (SVMs) é uma ferramenta estatística de aprendizagem computacional considerada como o estado da arte para muitas aplicações da atualidade, incluindo pesquisas médicas e classificação de texto.
  • OpenCL.NET - OpenCL.NET is a .NET library, providing full API bindings for the OpenCL™ standard.
  • OpenCL/GL Framework - Interoperation between OpenCL and OpenGL allows programmers to efficiently perform complex manipulation of data directly in the GPU memory. CMSoft brings to developers the new GLRender tool in OpenCLTemplate that automates the creation of an OpenGL scene coupled with a derived OpenCL context.
  • OpenCLforDelphi - OpenCL 1.2 for Delphi.
  • 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#
  • OpenCV-CL - OpenCL accelerated OpenCV
  • OpenHMPP - Directive-based OpenACC and
  • 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.
  • QT with OpenCL - Ussing OpenCL with QT
  • RaijinCL - RaijinCL is a library for matrix operations for OpenCL
  • Rivertrail - JavaScript which supports Data Parallelism via OpenCL
  • 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-
  • The Open Toolkit library - The Open Toolkit is an advanced, low-level C# library that wraps OpenGL, OpenCL and OpenAL. It is suitable for games, scientific applications and any other project that requires 3d graphics, audio or compute functionality.
  • TM-Task Management - Heterogeneous Task Scheduling and Management
  • 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

Presentations

2013

2012

2011

  • OpenCL and Computer Vision Talk at UFMG - The Department of Computer Science of Federal University of Minas Gerais – DCC/UFMG and Khronos Chapter Brazil have been working together to spread and strengthen industrial and scientific use of Khronos’ standards, most notably OpenCL and OpenGL.

2010

  • OpenCL FFT - A Transformada Discreta de Fourier possui uma enorme variedade de aplicações, incluindo: análise espectral, compressão de dados, multiplicação de polinômios e cálculo de vida em fadiga remanescente de materiais.
  • OpenCL Marching Cubes - Demonstration of Marching Cubes algorithm

Case Studies and Example Code

  • Intel® SDK for OpenCL* Applications Samples - The samples provide source code examples, accompanied with whitepapers to help you get started with Intel® SDK for OpenCL* Applications
  • ODE system solving with OpenCL - As an example of system of differential equation solver using OpenCL and yet another example of OpenCL / OpenGL interoperation, I’ve updated the OpenCLTemplate Runge Kutta solver example.
  • OpenCL Color Tracking - Tracking a set of colors in a video is a first approximation and initial guess for many applications. In fact, determining what parts of an image belong to skin, for example, is very important to track faces or hands. CMSoft's color tracking case study presents a technique that is robust to motion-blur and that can perform real-time tracking thanks to OpenCL acceleration. Source code is provided showing how to implement a flashlight mouse, i.e., how to use the webcam and a flashlight to perform mouse movement and clicking.
  • Processing Kinect data with OpenCL - Interactive technologies have become extremely important in a world where busy users demand intuitive devices which demand little to no learning time. However, it is necessary to process large amounts of data in real time in order to implement such intelligent systems. CMSoft brings a tutorial on how to create a C# framework to capture Microsoft Kinect sensor data and transfer it to an OpenCL GPU Device, thus enabling the development of software that can potentially process Kinect data hundreds of times faster when compared to pure CPU processing.
  • Software Occlusion Culling - This is an update to the Software Occlusion Culling sample. This update consists of new features and optimizations which have reduced the total cull time and the total frame time by a factor of 4X and 2X respectively. Below is a screen shot of the updated sample.

Applications Using OpenCL

  • Altair RADIOSS - Altair®RADIOSS is a structural analysis solver for highly non-linear problems under dynamic loadings.
  • Aperture - Apple - Photo organizer and editor
  • Basemark CL - Rightware Oy - Basemark CL benchmark product provides diverse performance measurement capabilities for device manufacturers, semiconductor companies and their ecosystem to test and optimize the OpenCL implementations within desktop and embedded devices.
  • 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.
  • Blurate - Custom Image Filtering - Blurate uses OpenCL to allow you to easily describe image filters.
  • 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.
  • Final Cut Pro X - Apple Inc - Final Cut Pro X is a video editing app for OS X from Apple Inc. and the successor to Final Cut Pro.
  • 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
safety