Overview
OpenCL is an open, cross-platform API standard for accessing GPUs. It is an alternative to using NVIDIA's CUDA C language. OpenCL works on more platforms, including Intel Phi and ATI GPUs, but on NVIDIA cards, you are generally coding in CUDA C often produces best performance. The GPUs at LLNL are NVIDIA cards. Because of the need to support multiple platform features, OpenCL requires more "setup code" than CUDA C.
Please read the LC GPU Technology Web page to familiarize yourself with the LLNL GPU setup.

Environment
Machines and Versions: See LC graphics software page.
Location: OpenCL is split into the library, which is part of the NVIDIA driver package in /usr/lib64/nvidia , and the headers are in /opt/cudatoolkit-$VERSION/include/CL, where VERSION is whatever is the latest in the /opt directory.
Settings: Other than compiling with libOpenCL.so and including the appropriate headers, you do not need any special variables to run OpenCL. You might need to set LD_LIBRARY_PATH if you do not use -rpath in your link lines.

Usage
To compile an OpenCL program, you simply use your favorite GNU, icc or PGI compilers, and link against the OpenCL library. For example, to compile a program called vectoradd.cpp into a GPU program:
g++ -L/usr/lib64/nvidia -lOpenCL -I/opt/cudatoolkit-$VERSION/include/CL \
vectoradd.cpp -o vectoradd

Note the line has been broken into two for readability, but should be typed as one command.
Help
OpenCL tutorials:http://www.khronos.org/developers/opencl/#ttutorials
Adventures in OpenCL: http://enja.org/2010/07/13/adventures-in-opencl-part-1-getting-started/
Help is available from the lc-hotline@llnl.gov, (925) 422-4531.

Download
There is no need to download any software to use GPUs on LC machines. Livermore Computing does not support installation of desktop OpenCL drivers. Please ask your desktop system administrator for assistance.

Links