X Tutup
The Wayback Machine - https://web.archive.org/web/20110809113256/http://www.khronos.org/opencl/resources

The Khronos Group - Media Authoring and Acceleration

The Khronos Group is a not for profit industry consortium creating open standards for the authoring and acceleration of parallel computing, graphics and dynamic media on a wide variety of platforms and devices. All Khronos members are able to contribute to the development of Khronos API specifications, are empowered to vote at various stages before public deployment, and are able to accelerate the delivery of their cutting-edge 3D platforms and applications through early access to specification drafts and conformance tests.

Commercial and Open Source Implementations

OpenCL FFT

The Disccrete Fourier Transform (DFT) is a Fourier Analysis function that computes the frequency domain representation of a given input. The DFT has an enormous amount of applications, including spectral analysis, data compression, multiplication of polynomials and computation of remaining fatigue life of materials.

CMSoft presents an easy-to-use powerful tool to compute the DFT using the Fast Fourier Transform algorithm using OpenCL, both single-precision and double-precision. Source code containing examples is available.

Visit homepage

Java Bindings to OpenCL

JOCL enables applications running on the JVM to use OpenCL for massively parallel, high performance computing tasks, executed on heterogeneous hardware (GPUs, CPUs, FPGAs etc) in a platform independent manner.

Visit homepage

OpenCL Support Vector Machine

Support Vector Machine (SVM) is a statistical learning tool considered to be the state-of-the art classifier for many applications today, including medical research and text categorization.

CMSoft brings an OpenCL accelerated SVM implementation that can be used for general-purpose classification. Source code is provided showing classification of the MNIST handwritten database.

Visit homepage

OpenCL Marching Cubes

Marching Cubes is an algorithm used in a very wide range of applications, including:

  • Medical visualizations such as CT and MRI scan images;
  • Special 3D effects and 3D modelling of metaballs or metasurfaces:
  • Analysis of oil reservoirs in the oil and gas industry;
  • Reconstitution of surfaces whose data has been acquired through seismic methods.

CMSoft brings a versatile and useful tool, Marching Cubes, adapted to GPU acceleration using OpenCL. Sample source code is available. OpenCLTemplate Marching Cubes is another resource made available to users who want to have easy access to GPU accelerated mathematical tools.

Visit homepage

ODE system solving with OpenCL

Differential equations are crucial to all exact sciences, such as engineering, physics, chemistry and even economics. There packages use GPUs to compute solutions to problems such as solving linear systems and computing FFT. This work covers an easy-to-use ordinary differential equation system solver for scientific applications and games. Examples include calculating trajectories and collision of particles in game engines, electron-proton interactions, gravitational calculations, dynamic modeling of deformable bodies and many more.

Visit homepage

CLyther - an OOP extension to OpenCL language definition

CLyther, is a Python tool similar to Cython. CLyther is a python language extension that makes writing OpenCL code as easy as Python itself. CLyther currently only supports a subset of the Python language definition but adds many new features to OpenCL. CLyther exposes both the OpenCL C library as well as the OpenCL language to python.

CLyther Features:

  • Fast prototyping of OpenCL code.
  • Create OpenCL code using the Python language definition.
  • Strong OOP programming in OpenCL code.
  • Passing functions as arguments to kernel functions.
  • Python emulation mode of OpenCL code.
  • Fancy indexing of arrays
  • Device memory management
  • Dynamic compilation at runtime

Visit homepage

Ruby-OpenCL

Ruby-OpenCL is a ruby binding of OpenCL providing classes for OpenCL programing on the host. Currently works with ATI Stream SDK 2.0 beta.

Visit homepage

OpenCL for PLT Scheme

A complete binding of OpenCL for PLT Scheme.

Visit homepage

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.

Visit homepage

The Open Toolkit library

Cross-platform OpenGL, OpenGL ES, OpenAL and OpenCL bindings for .Net/Mono. Compatible with Windows, Linux and Mac OS X and usable by all .Net languages (C#, VB.Net, C++/CLI, ...)

Visit homepage

Frameworks

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.

It is possible to create and display buffer objects in the OpenGL scene as well as manipulate them using OpenCL interoperation with very little effort using a pre-configured OpenCL environment. Two source codes are provided to demonstrate the framework capabilities: one that draws a Mandelbrot fractal set and another to show the capabilities of the 3D mouse in a CL/GL shared environment.

Visit homepage

ViennaCL - Linear Algebra and Iterative Solvers using OpenCL

The Vienna Computing Library (ViennaCL) is a scientific computing library written in C++ and based on OpenCL. It allows simple, high-level access to the vast computing ressources available on parallel architectures such as GPUs and is primarily focused on common linear algebra operations (BLAS level 1 and 2) and the solution of large systems of equations by means of iterative methods. In ViennaCL 1.0.x, the following iterative solvers are implemented:

* Conjugate Gradient (CG)
* Stabilized BiConjugate Gradient (BiCGStab)
* Generalized Minimum Residual (GMRES)

An optional ILU preconditioner can be used, which is in ViennaCL 1.0.x precomputed on the CPU and may thus not lead to overall performance gains. Under the hood, ViennaCL uses OpenCL for accessing and executing code on compute devices. Therefore, ViennaCL is not tailored to products from a particular vendor and can be used on many different platforms.

Visit homepage

OpenCL .Net

OpenCL.net doubles as simple bindings to the flat OpenCL 1.0 API, usable from all .net languages, and a higher level framework that simplifies some aspects of OpenCL programming.

Some examples included to jump start development.

MIT open source licensed for maximum flexibility.

Visit homepage

Tutorials, Technical Whitepapers and How to Guides

Anjuta Project Wizards for AMD, NVidia and Intel OpenCL SDK

Aiming at increasing the OpenCL developing, I created some wizards to start up an OpenCL application project using the SDK from NVidia, AMD or Intel. I’ve used Anjuta DevStudio on Linux. There is a lack of OpenSource IDE and tools to develop GPU applications, these wizards help us to create OpenCL applications based on templates and, thus, to decrease the learning curve.

Visit homepage

OpenCL quickstart tutorials

Quick start OpenCL tutorial with lots of examples.

Visit homepage

CMSoft Image2D Tutorial

Image2D variables play a very important role in OpenCL because they use the texture caching and samplers of the GPU and thus are very suitable to store large arrays and/or data that has to be accessed very often.

CMSoft Image2D tutorial covers how to manipulate Image2Ds and how to reinterpret a vector as a Image2D variable, with useful C99 source code to retrieve vector data from a Image2D.

Visit homepage

OpenCL Getting Started Tutorial

Part 1

This tutorial series is aimed at developers trying to learn OpenCL from the bottom up, with a focus on practicality (i.e. I’m still learning, I’m sharing what I’ve found to work).

Part 1.5

This part is a reworking of my first tutorial using the OpenCL C++ Bindings.

Part 2

This installment introduces OpenCL context sharing with OpenGL.

Visit homepage

OpenCL / GL Interop Tutorial

Using OpenCL to manipulate OpenGL objects has important advantages: the GPU is usually faster and data transfer from Host memory to Device memory is kept to a minimum.

CMSoft OpenCL/GL interop tutorial shows detailed implementation of circular wave interference simulation using CL/GL interop, including commented source code available for download.

Visit homepage

OpenCL Tutorial

OpenCL is a great open standard which is going to become the future of parallel processing.

This tutorial shows basics of setting up OpenCL with a pre-made initializer OpenCLTemplate and covers from very basic vector-sum topics to a real-life OpenCL sample application.

This tutorial presents OpenCL C99 sample code.

Visit homepage

GPGPU Programming (OpenCL)

This sites primary focus is GPGPU programming. It contains an overview describing the basic concepts, code examples (OpenCL, CUDA), links to useful OpenCL and CUDA resources, links to GPU based products, and news aggregation of GPGPU tools.

Visit homepage

OpenCL Tutorial - Introduction - Fundamentals

Episode I
Introduction to OpenCL :

Episode I
OpenCL Fundamentals : More in-depth discussion on general concepts that are important for understanding how OpenCL works. OpenCL address spaces are covered as well the basics of executing an OpenCL program (abstractly).

Visit homepage

Introduction to OpenCL tutorial

Introductory tutorial showing how to write the ‘Hello World’ in OpenCL.

Visit homepage

Presentations & Videos

There are no resources submitted yet

Be the first to submit a resource!

Example Code

floatCL

A 2 simple openCL projects that make use of the GPU to find the largest element in an array of floats in O(1) and sort a list O(n). Will be useful for beginners to understand openCL API and writing code for SIMD execution.

Visit homepage

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.

Visit homepage

Semaphors using Atomics

CMSoft C99 Atomics tutorial covers important aspects of OpenCL atomic functions and shows a practical easy-to-use semaphor implementation through atomic exchange function (source code available).

Atomic operations are a very important aspect of parallel processing and synchronization. Among other uses, they are really useful to manage shared resources and create semaphors.

Visit homepage

Real time filtering with OpenCL

This OpenCL example code shows how to filter images without using OpenCL extensions, thus making it suitable for use with any GPU that supports OpenCL while still being much faster than non-GPU accelerated implementations.

Additionally, the source code shows how to execute real time webcam image filtering with a 7x7 filter.

Visit homepage

OpenCL low poly collision detection

As part of CMSoft OpenCL tutorial, this source code example shows an implementation of low polygon collision detection algorithm suitable for engineering assembly analises.

OpenGL and Lab3D are used to display the 3D models and OpenCL C99 source code is presented and made available for download.

Visit homepage

Utilities & Projects

3D Picture Viewer and Converter

A very promising trend in the field of photography is the possibility of shooting stereoscopic pairs of pictures for vivid, realistic 3D visualization by using 3D cameras. However, few people have the special equipment to visualize these pictures or software to easily manipulate and convert them to more popular formats.

CMSoft Stereoscopic Picture Editor and Converter is a tool designed to view 3D photographs using OpenGL to render the stereo pair in an animated form called “wiggle stereo”, with zoom and crop capabilities. Advanced users can also create their own custom filters in C language using OpenCL technology.

OpenCL source code used in the filters and sample .MPO images are available.

Visit homepage

OpenCL Environment

A series of utilities aimed at making OpenCL easier to use. Includes clCompiler which generates both binary outputs and precompiled headers which can be used in conjunction with clEnvironment. clQuery allows you to print all known information about a OpenCL data type. clPid, clYUV clImgFilter are all examples of how to use the utilities to create a compile time kernel make it a dependency in you makefiles and then use the clEnvironment to call your kernel.

Visit homepage

Lab3D - 3D Laboratory

Lab3D is a 3D Laboratory project that uses OpenCL and OpenGL to display and manipulate 3D models created from regular 3D files and mathematical equations.

Some of Lab3D features are OBJ and DXF (AutoCAD) models loading, dynamic and static 3D models creation, stereoscopic visualization and WiiMote interaction.

Buffer objects are used to accelerate animations in systems that support it.

Visit homepage

OpenCL Studio 1.0 beta released

OpenCL Studio combines OpenCL and OpenGL into a single integrated development environment that allows you to visualize OpenCL computation using 3D rendering techniques. The editor hides much of the complexity of the underlying APIs while still providing flexibility via the Lua scripting language. Integrated source code editors and debugging capabilities for OpenCL, GLSL, and Lua, as well as a toolbox of 2D user interface widgets provide you with a development framework for a wide range of parallel programming solutions.

Visit homepage

OpenCL Kernel Compiler

A compiler for OpenCL Kernel files designed to be used during OpenCL application development.

The use of this tool alleviates the need for building compiler diagnostic message retrieval code into applications that use OpenCL. It allows developers to spot compilation errors during source builds instead of at run-time.

Visit homepage

X Tutup