Blog

Intel OpenCL CPU-drivers 2013 beta with OpenCL 1.2 support

  |   General   |   7 Comments

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:		 <strong>1.2</strong>
  Profile:			 <strong>FULL_PROFILE</strong>
  Version:			 OpenCL 1.2 (Build 43113)
  Extensions:			 <strong>cl_khr_fp64</strong>
				 <strong>cl_khr_icd</strong>
				 <strong>cl_khr_global_int32_base_atomics</strong>
				 <strong>cl_khr_global_int32_extended_atomics</strong>
				 <strong>cl_khr_local_int32_base_atomics</strong>
				 <strong>cl_khr_local_int32_extended_atomics</strong>
				 <strong>cl_khr_byte_addressable_store</strong>
				 <strong>cl_intel_printf</strong>
				 <strong>cl_ext_device_fission</strong>
				 <strong>cl_intel_exec_by_local_thread</strong>

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.

Liked this article? We are the best known experts in OpenCL, CUDA and performance optimization. We can help you to maximize the performance of your software.

  • http://www.blog.chatsiri.com/ Chatsiri Rattana

    OpenCL Beta 2013 not support Linux platforms. Why you refer OpenCL driver for Linux platforms?

    • streamcomputing

      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

      • http://www.blog.chatsiri.com/ Chatsiri Rattana

        Do you know Intel plan releases OpenCL 2013 for supporting Linux Platform?

      • streamcomputing

        There are no official announcements.

  • http://www.facebook.com/people/Павел-Петров/1594429310 Павел Петров

    Can`t dopwnload. Page not found all christmass week

    • streamcomputing

      Thanks for letting me know! The link at Intel was redirected wrongly and returned only the first 2MB of the zip-file. I corrected the link.

      • http://www.facebook.com/people/Павел-Петров/1594429310 Павел Петров

        Thx much!