OpenCL-Environment icon indicating copy to clipboard operation
OpenCL-Environment copied to clipboard

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...

Supported Build Platforms:

1.) Mac OSX 2.) Windows with Visual Studio 2005 (in command window only) + MinGW Make 3.) LINUX

What does this environment does: This clEnvironment API allows you to precompile your OpenCL kernels into binaries then import them into you C/C++ code as statically defined arrays of data which can then be re-used with the clCreateEnvironmentFromBins API. The make system herein also forces the %.cl to %.h conversion to be a dependency on the successful creation of your program/library/shared object. This means that if your .cl files do not compile correctly you can not build your target, thus pushing the run-time OpenCL build stages back into build-time builds. It also allows you to completely specify a generic OpenCL Kernel call via predefined structures, thus freeing you to not worry about how to queue/call/pass args/etc.

Required: Download Concerto from github.com/emrainey/Concerto. Export an environment variable to it's location, CONCERTO_ROOT.

In Linux/Windows builds, you must define the path to the OpenCL developer tools. I only have NVidia cards so the paths will be biased in that direction. First you'll have to install the tools then in your .bashrc or in some setup batch file define your OPENCL_ROOT $ export OPENCL_ROOT=//OpenCL/common C:> SET OPENCL_ROOT=\OpenCL\common

If you would like some extra debug to see what's going on: $ export CL_DEBUG=1 C:> SET CL_DEBUG=1

If you don't want to pre-build your OpenCL binaries. $ export CL_BUILD_RUNTIME=1 C:> SET CL_BUILD_RUNTIME=1

If your graphics card doesn't have double support (like some NVIDIA Quadro's) $ export NO_DOUBLE=1 C:> SET NO_DOUBLE=1

If you have more than one OpenCL implementation, choose the target with $ export CL_USER_DEVICE_TYPE=<gpu|cpu|acc|all> C:> SET CL_USER_DEVICE_TYPE=<gpu|cpu|acc|all>

There is a variable to use more than one device, though the logic internally is not correct for this. Please leave it to 1 device.

Compiling:

$ make clean $ make

Installing: $ export INSTALL_DIR=/where/ever/you/like $ make install

What's contained herein: 1.) clEnvironment API 2.) clCompiler which utilizes the clEnvironment API 3.) clQuery which can extract lots of information about your local implementation of OpenCL (library). 4.) clYUV Kernel which can convert a YUV triplet of floats into/from RGB triplets of floats in 1 dimension. 5.) clPID Kernel (Proportional Integral and Derivative) control loop calculator. 6.) clImgFilter - Implements a 3x3 edge filter on input LUMA (B/W) images. 7.) clNBody - an implementation of the famous N-body gravity simulator. 8.) clDeviceQuery - queries all Platform and per device information. 9.) clSpacetime - a GLUT/OpenGL + OpenCL demo of the curvature of space (exagerated).

Locations to Get RAW HD Video Files for clYUV and clImgFilter Small YUV video files: http://dsplab.diei.unipg.it/~baruffa/dvbt/binaries/player/seqs/ Large YUV video files: http://www.highdefforum.com/high-definition-movies-video-clips/6537-official-hd-video-clip-list.html