Intel OpenCL CPU-drivers 2013 beta with OpenCL 1.2 support

Screenshot from Intel’s “God Rays” demo

This article is still work-in-progress

Intel has just released its OpenCL bit CPU-drivers, version 2013 bèta. It has support for OpenCL 1.1 (not 1.2 as for the CPU) on Intel HD Graphics 4000/2500 of the 3rd generation Core processors (Windows only). The release notes mention support for Windows 7 and 8, but the download-site only mentions windows 8. Support under Linux is limited to 64 bits.

The release notes mention:

  • General performance improvements for many OpenCL* kernels running on CPU.
  • Preview Tool: Kernel Builder (Windows)
  • Preview Feature: support of  kernel source code hotspots analysis with the Intel VTuneT Amplifier XE 2011 update 3 or higher.
  • The GNU Project Debugger (GDB) debugging support on Linux operating systems.
  • New OpenCL 1.2 extensions supported by the CPU device:
    • cl_khr_int64_base_atomics and cl_khr_int64_extended_atomics
    • cl_khr_fp16
    • cl_khr_gl_sharing
    • cl_khr_gl_event
    • cl_khr_d3d10_sharing
    • cl_khr_dx9_media_sharing
    • cl_khr_d3d11_sharing.
  • OpenCL 1.1 extensions that were changed in OpenCL 1.2:
    • Device Fission supports both OpenCL 1.1 EXT API’s and also OpenCL* 1.2 fission core features
    • Media Sharing support intel 1.1 media sharing extension and also the 1.2 KHR media sharing extension
    • Printf extension is aligned with OpenCL 1.2 core feature.

Check the release notes for full information.

The drivers can be found on http://software.intel.com/en-us/articles/vcsource-tools-opencl-sdk-2013/. Installation is simple. For Windows there is a installer. If you have Linux, make sure you remove any previous version of Intel’s openCL drivers. If you have a Debian-based Linux, use the command ‘alien’ to convert the rpm to deb, and make sure ‘libnuma1‘ is installed. There are requirements for libc 2.11 or 2.12 – more information on that later as Ubuntu 12.04 has libc6 2.15.

This is OpenCL-info on a test-machine with Intel i7:

  Platform Name:		 Intel(R) OpenCL
Number of devices:		 1
  Device Type:			 CL_DEVICE_TYPE_CPU
(...)
  Compiler available:		 Yes
  Execution capabilities:		 
    Execute OpenCL kernels:	 Yes
    Execute native function:	 Yes
  Queue properties:		 
    Out-of-Order:		 Yes
    Profiling :			 Yes
  Platform ID:			 0x1d13d50
  Name:				 Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
  Vendor:			 Intel(R) Corporation
  Driver version:		 1.2
  Profile:			 FULL_PROFILE
  Version:			 OpenCL 1.2 (Build 43113)
  Extensions:			 cl_khr_fp64
				 cl_khr_icd
				 cl_khr_global_int32_base_atomics
				 cl_khr_global_int32_extended_atomics
				 cl_khr_local_int32_base_atomics
				 cl_khr_local_int32_extended_atomics
				 cl_khr_byte_addressable_store
				 cl_intel_printf
				 cl_ext_device_fission
				 cl_intel_exec_by_local_thread

SDK

The current examples can be downloaded from: http://software.intel.com/file/43406 http://software.intel.com/sites/products/vcsource/files/43406/intel_ocl_samples.zip  – you will need to alter them to work on Linux/OSX. Below are the examples I have altered to work on Linux/OSX – they are untested on any other machine than my primary computer. Make sure you have the latest version of the common files and check if files are missing as I have not included large data-files.

Just use make to build the binary – the binaries in the zip-file are 64 bit.
If you can’t wait – most examples run well when using the altered common files, commenting out ‘windows.h’ and changing two lines (forward-slash and utils.cpp instead of .h):
#include "CL/cl.h"
#include "utils.cpp"

Also add a function to the bottom of the main cpp:

int main(int argc, _TCHAR* argv[]) {
    return _tmain(argc, argv);
}

And then it’s just finding equivalents of standard C/C++ for MS flavour of C/C++. These are to be put in sc_linux.h

Benchmarks

In an update the results of a previous benchmark will be done.

7 thoughts on “Intel OpenCL CPU-drivers 2013 beta with OpenCL 1.2 support

    • StreamHPC

      On Linux there is no support for the HD 4000, while on Windows there is. But there is much more than just the embedded GPU: AVX and SSE

Comments are closed.