Reusing Compilation Results with clCreateProgramWithBinary

If compilation time for an OpenCL* program is of concern, consider reusing compilation results. It is typically faster than recreating you program from the source, but you should check for the specific program/device.

To retrieve binaries generated from calls to clCreateProgramWithSource and clBuildProgram, you can call clGetProgramInfo with the CL_PROGRAM_BINARIES parameter. For the performance-critical applications that typically precompile kernel code to an Intermediate Representation (IR), you can cache the resulting binaries after the first OpenCL* compilation and reuse them on subsequent executions by use of clCreateProgramWithBinary. Another way to save intermediate binaries is to use the Intel® OpenCL* Offline Compiler tool, as described in the Intel® SDK for OpenCL* - User’s Guide (see Related Documentation).

NOTE: IRs are different between CPU and PG devices.

See Also


Using Multiple OpenCL* Devices (suggested next topic)
Related Documents
The OpenCL* 1.1 Specification at http://www.khronos.org portal [PDF]
Overview Presentations of the OpenCL* Standard at http://www.khronos.org portal [Online Article]
Optimization Notice

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804


Submit feedback on this help topic

Copyright © 2010-2012, Intel Corporation. All rights reserved.