Working with Intel® Code Builder for OpenCL™ API on Systems Equipped with Intel® Xeon Phi™ x100 Coprocessor

By Loc Q Nguyen,

Published:04/28/2015   Last Updated:04/28/2015

Due to the recent restructuring in OpenCL™ Technology, the Intel® Code Builder for OpenCL™ replaces the Intel® SDK for OpenCL™ Applications. For the Intel® Xeon Phi™ x100 coprocessor, that means we need a specific OpenCL™ Runtime and the Code Builder for the coprocessor. So I decided to install the new OpenCL development environment and test an application on the Intel® Xeon Phi™ x100 coprocessor (codename Knights Corner). I’d like to share this experience with you in case you want to build and run an OpenCL application on your system equipped with Intel® Xeon Phi™ x100 cards.

My host system runs RHEL 64-bit 6.5 (kernel 2.6.32-431). It has two Intel® Xeon Phi™ coprocessors, and has Intel® C++ Composer XE 2015.0.2 (composer XE 2005.2.164) installed.

According to the OpenCL™ Runtime release notes (see /content/www/us/en/develop/articles/opencl-runtime-release-notes.html ), in order to work with the coprocessor I need to install the MPSS 3.3 (not MPSS 3.4 and later).

First I installed the latest MPSS 3.3 version followed by the OpenCL runtime 14.2 (CPU + Xeon Phi) and then the Code Builder:

  1. Download the MPSS 3.3.4 from /content/www/us/en/develop/articles/intel-manycore-platform-software-stack-mpss-archive.html . Install it according to the provided readme file. Finally bring the MPSS service up:

    # service mpss start

  2. Download the OpenCL™ Runtime 14.2 (for Intel® CPU and Intel® Xeon Phi™ coprocessors for Linux* 64-bit) available at /content/www/us/en/develop/articles/opencl-drivers.html . The OpenCL™ Runtime allows me to run an OpenCL™ application.

    # tar zxvf opencl_runtime_14.2_x64_4.5.0.8.tgz

    This creates a sub-directory called pset_opencl_runtime_14.1_x64_4.5.0.8

    # cd pset_opencl_runtime_14.1_x64_4.5.0.8
    # ./

  3. Download the Intel® Code Builder for OpenCL™ API 2014 R3 for Linux*(with support for Intel® Xeon Phi™ coprocessors available at /content/www/us/en/develop/articles/intel-code-builder-for-opencl-api.html . The Code Builder allows me to build OpenCL binaries.

    # tar zxvf intel_code_builder_for_opencl_2014_4.6.0.178_x64.tgz

    This creates a subdirectory called intel_code_builder_for_opencl_2014_4.6.0.178_x64

    # cd intel_code_builder_for_opencl_2014_4.6.0.178_x64
    # ./

For testing purposes, I downloaded OpenCL source code from the article /content/www/us/en/develop/articles/using-the-intel-sdk-for-opencl-applications-xe-2013.html . The sample package is named I unzipped it in Windows* and transferred all the files to my Linux system. They included ocl_sample.cpp, kernel and the input image called input.pgm.

# source <installed directory>/bin/ intel64
# icc ocl_sample.cpp –lOpenCL –o ocl_sample.out


Platform: Intel(R) OpenCL
Number of accelerators found: 2

NAME:Intel(R) Many Integrated Core Acceleration Card

NAME:Intel(R) Many Integrated Core Acceleration Card
OpenCL Initialization Completed
Completed reading Input Image: 'input.pgm'
Transferring Data from Host to Device
Executing Kernel on selected devices
Transferring data from Device to Host
Completed writing Output Image: 'output.pgm'
Completed execution! Cleaning Up.

This generates an output image called output.pgm. The image is the result of applying a Gaussian blur to the input image.


For completeness, I retested the above application with all MPSS 3.3 versions, namely MPSS 3.3.1, MPSS 3.3.2, and 3.3.3. With the above OpenCL™ Runtime and Code Builder for OpenCL™ API, I was able to run the test successfully with MPSS 3.3.4, MPSS 3.3.3, MPSS 3.3.2 and MPSS 3.3.1. Note that whenever you uninstall / install another version of MPSS 3.3, before rerunning the application you need to repair the OpenCL™ Runtime or simply just uninstall and re-install it again. To repair the OpenCL™ Runtime, go to the OpenCL™ Runtime installation directory, type ./ and choose #2-Repair the installation.


Product and Performance Information


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 reserverd 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