Skip to content

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 creat…

lavrovd/OpenCL-Environment

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:
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=/<path to sdk>/OpenCL/common
C:\> SET OPENCL_ROOT=<path to sdk>\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

About

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 creat…

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published