Getting Started with compute offload to Intel(R) Graphics Technology

Introduction

Starting with Intel(R) C++ Compiler 15.0 we provide a feature which enables offloading general purpose compute kernels to processor graphics. This feature enables the processor graphics silicon area for general purpose computing. The key idea is to utilize the compute power of both CPU cores and GPU execution units in tandem for better utilization of available compute power.

Target Hardware and OS requirements:

Windows* 32 and 64 bit support. Compute offload feature on Microsoft Windows 7* will only work with an active display (no locked screen). This restriction is imposed by DirectX 9 but relaxed in DirectX 11 and above (on Microsoft Windows 8*, Microsoft Windows 8.1* and Microsoft Windows 10*). Intel(R) C++ Compiler 17.0 Beta on Windows* supports 6th Generation Intel(R) Core(TM) Processors for compute offload to integrated graphics

OS support by each Linux Driver version
Driver Version Hardware Platforms OS Platforms (64-bit)
16.3.2 (deprecated in Intel C++ Compiler 16.0 and support will be removed in Intel C++ Compiler 17.0) 
  1. Intel® Xeon® Processor E3-1285 v3 and E3-1285L v3 (Intel® C226 Chipset) with Intel® HD Graphics P4700 
  2. 4th Generation Intel® Core™ Processors with Intel® Iris™ Pro Graphics, Intel® Iris™ Graphics or Intel® HD Graphics 4200+ Series 
  3. 3rd Generation Intel® Core™ Processors with Intel® HD Graphics 4000/2500
  1. Ubuntu 12.04 (Linux kernel numbers: 3.2.0-41 for 3rd generation Intel® Core™ Processors and 3.8.0-23 for 4th generation Intel® Core™ Processors)
  2. SUSE Linux Enterprise Server 11 SP3 (Linux kernel numbers: 3.0.76-11 for both 3rd and 4th generation Intel® Core™ Processors) 
16.4.4
  • 5th Generation Intel Core™ Processors with Intel Iris™ Graphics or Intel HD Graphics  (5500, 6000, 6100).
  • 4th Generation Intel Core™ Processors with Intel Iris™ Pro Graphics, Intel Iris Graphics or Intel HD Graphics 4200+ Series (chipset compatibility is usually not an issue for Core™ processors.)
  • Intel® Xeon® Processor E3 v3 Family with Intel® HD Graphics P4700
  • Intel® Xeon® Processor E3 v4 Family with Intel® Iris™ Pro Graphics P6300

Chipset limitations:

  • Chipset must have processor graphics enabled, make sure to check the datasheet.
  • Intel® Xeon® Processors require C226 chipset.

Note:

  • Intel Core processors earlier than 4th Generation are not supported
  • Intel Celeron®, Intel Pentium® and Intel Atom™ processors are not supported
  1. Community Enterprise Operating System (CentOS) 7.1 for 64-bit architecture
  2. Red Hat Enterprise Linux (RHEL) 7.1 for 64 bit architecture
Open Source Media Kernel Runtime •    Intel® Xeon® Processor E3-1285 v3 and E3-1285L v3 (Intel® C226 Chipset) with Intel® HD Graphics P4700
•    6th Generation Intel(R) Core(TM) Processors with Intel(R) Iris(TM) Graphics or Intel(R) HD Graphics  
•    5th Generation Intel Core™ Processors with Intel Iris™ Graphics or Intel HD Graphics  (5500, 6000, 6100).
•    4th Generation Intel® Core™ Processors with Intel® Iris™ Pro Graphics, Intel® Iris™ Graphics or Intel® HD Graphics 4200+ Series   
•    3rd Generation Intel® Core™ Processors with Intel® HD Graphics 4000/2500  
  • Community Enterprise Operating System (CentOS) 7.0 for 64-bit architecture
  • Community Enterprise Operating System (CentOS) 7.1 for 64-bit architecture
  • Red Hat Enterprise Linux (RHEL) 7.0 for 64 bit architecture
  • Red Hat Enterprise Linux (RHEL) 7.1 for 64 bit architecture

For other Linux OS distributions please adjust and apply the instructions documented in open source installation guide. The main requirements are kernel version 3.19.2, libdrm 2.4.56, libva 0.38.0 and libpciaccess 0.13.1

 Host OS requirements:

Windows* 32 and 64 bit, Linux 64 bit. 

Target System Environment requirements:

On Windows:

  1. Intel(R) C++ Compiler 15.0 or higher versions - You can download the compiler from Intel registration center after you register for either Intel(R) Parallel Studio 2015 or Intel(R) System Studio 2015 Beta.
  2. Intel(R) HD Graphics Driver - Download the right driver from http://downloadcenter.intel.com
  3. Binutils package - Download and Install the binutils package from http://software.intel.com/en-us/articles/open-source-downloads. Please add the path to ld.exe to "Path" environment variable. Since the offload region to processor graphics is in ELF format, you need the binutils to build and link the heterogeneous application.

On Linux:

  1. Intel(R) C++ Compiler 15.0 or higher versions
  2. Intel(R) HD Graphics Driver or Open Source Media Kernel Runtime
  3. The login id on your Linux machine should be part of "video" group.

You can download the above mentioned tools from Intel registration center after registering for either Intel(R) Parallel Studio 2015 (or higher version) or Intel(R) System Studio 2015 (or higher version). Please refer to Driver Installation Guide on Intel Registration Center for information on the OS support for individual driver versions.

On Ubuntu 12.04, the Intel(R) HD Graphics Driver installation puts the igfxcmrt64.so file at /usr/lib/x86_64-linux-gnu and this path is not searched while the linker looks for a library during runtime (More information on this is available at https://wiki.ubuntu.com/MultiarchSpec). So make sure this directory comes part of the ld's (linker's) lookup list, please follow either one of the following approaches:

1. Add /usr/lib/x86_64-linux-gnu to LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

2. Add /usr/lib/x86_64-linux-gnu path in /etc/ld.so.conf.d/x86_64-linux-gnu.conf to make sure linker looks into this directory while it searches for libraries.

The installation guide and build script for open source media kernel runtime is available for download at https://software.intel.com/articles/open-source-downloads under section "Required for use of offload with Open Source Media Kernel Runtime for Intel® HD Graphics"

Testing the Build and Target environments:

On Windows:

Install Intel(R) C++ Compiler 15.0 compiler or higher version and get gfx_samples.zip from Samples folder. This zip file has a bunch of code samples which demonstrates the compute offload for processor graphics. If these code snippets build and run fine, your environment is rightly setup.

On Linux:

Install Intel(R) C++ Compiler 15.0 compiler or higher version and get gfx_samples.tar.gz from Samples folder. This zip file has a bunch of code samples which demonstrates the compute offload for processor graphics. If these code snippets build and run fine, your environment is rightly setup.

Other relevant articles:

1. How to offload computation to Intel(R) Graphics Technology 
2. Code generation options for Intel(R) Graphics Technology 
3. 
Using Intel(R) C++ Compiler with Intel(R) Processor Graphics 
4. Unlocking the compute power of Intel(R) Graphics Technology to boost the performance of a Black Scholes program 
5. 
Compute offload to Intel(R) Graphics Technology when X server is up and running on a Linux machine 
6. error : cannot open source file "windows.h" in gfx_samples.zip shipped with Intel(R) C++ Compiler 15.0 Beta Update 2 when built with VS2012 IDE
7. 
Avoid frequency drop in GPU cores when executing applications in Heterogeneous mode
8.  Tuning tips for compute offload to Intel(R) Processor Graphics
9.  Offloading Asian Options Pricing Algorithm to Intel(R) Processor Graphics

 

This article applies to:
    Products: Intel® System Studio, Intel(R) Parallel Studio
    Host OS/Platform: Windows (IA-32 or Intel® 64); Linux (Intel® 64)
    Target OS/platform: Windows (IA-32 or Intel® 64); Ubuntu 12.04 (Intel® 64)

For more complete information about compiler optimizations, see our Optimization Notice.