Supported Platforms

This guide was created for versions: v0.3.1 - v0.3.2

Supported Platforms

This document shows the current support matrix for ComputeCpp Community Edition (Beta) 0.3.0. The table below indicates the different operating systems and devices supported.

  • A Yes in the Supported column means Codeplay has tested this internally and actively supports the platform combination.

  • A No in the Supported column means Codeplay has tested that combination and we know the reasons for it not working with ComputeCpp.

  • A Not tested in the Supported column means Codeplay has reports of users having support but we cannot reproduce it.

  • A With limitations in the Supported column means that there are some limitations due to platform or driver issues.

Other combinations may work, but Codeplay does not actively support them. We are glad to receive feedback on other platforms that may work. Please, read carefully the different notes organised per platform for details on setting up ComputeCpp.

Operating System OpenCL Platform Device Supported CL_DRIVER_VERSION Notes

Ubuntu 14.04 64bit

AMD

Fiji

Yes

1800.8, 1912.5

AMD-1, AMD-2, AMD-3

Cedar

Yes

1800.8

AMD-1, AMD-2

Intel

CPU

Yes

1.2.0.57

INTEL-1, INTEL-5

GPU

Not tested

N/A

Ubuntu 16.04 64bit

AMD

GPU

No

N/A

AMD-4, GCC-1

Intel

CPU

Yes

1.2.0.10002

INTEL-1, GCC-1, INTEL-5

GPU

With limitations

r2.0.54425

INTEL-1, INTEL-3

CentOS 7.2 64 bit

AMD

Fiji

Yes

1912.5

AMD-1, AMD-2

Intel

CPU

Yes

1.2.0.10002

INTEL-1, INTEL-5

Gen9 Graphics

With limitations

r2.0.54425

INTEL-1, INTEL-3

[GCC-1] GCC 5.1

Note that the ComputeCpp 14.04 package has been built using GCC 4.9. GCC has changed the ABI from versions GCC 5.1 and above. In order to use ComputeCpp, the old ABI must be used. See Using Dual ABI in the GCC documentation. This is not required when using the ComputeCpp 16.04 package, since it has been built with GCC 5.4.

[INTEL-1] Intel OpenCL platform driver for CPU devices

The supported driver version is 16.1, and can be found in OpenCL™ Runtime for Intel® Core™ and Intel® Xeon® Processors.

[INTEL-2] Intel OpenCL platform driver for GPU devices

The supported driver can be found in OpenCL™ 2.0 Driver for Intel® HD, Iris™, and Iris™ Pro Graphics for Linux* (64-bit). Direct link: https://software.intel.com/file/489950/download. Please make sure to read the Relase Notes of the driver and the documentation regarding the installation to ensure the combination

[INTEL-3] Intel OpenCL driver for Gen9 (Skylake) GPU Kernel

The only supported Operating System for Intel OpenCL Platform for Skylake is CentOS 7.2 with the kernel 4.4 series patched according to the Intel OpenCL Platform Driver documentation. The documentation can be found in the Intel OpenCL Platform driver package.

[INTEL-4] Intel OpenCL Platform GPU Driver Issue

Due to an issue in the Intel OpenCL driver (see Intel OpenCL forums), we cannot support direct capture of structs on the kernel lambda. The example below shows a structure being captured by value in the kernel lambda, which will cause a kernel build error on Intel GPU.

/* The Struct below, although valid standard layout,
 * cannot be passed directly to the kernel via the lambda capture,
 * as shown with dataA.
 * It has to be passed as a kernel argument via a buffer and an
 * accessor on Intel GPU OpenCL platforms.
 */
struct str {
  str(short a, char b, char c)
      : a(a),
        b(b),
        c(c)
  {}
  short a;
  char b;
  char c;
};

int main() {
  str dataA(20, 'h', 't');
  str dataB(0, 0, 0);
  queue myQueue;
  buffer<str, 1> bufB(&dataB, range<1>(1));
  myQueue.submit([&](handler &cgh) {
    auto myRange = nd_range<2>(range<2>(6, 2), range<2>(2, 1));
    accessor<str, 1, access::mode::write, access::target::global_buffer> ptrB(
        bufB, cgh);
    cgh.parallel_for<class kernel0>(
        myRange, ([=](nd_item<2> itemID) { ptrB[0] = dataA; }));
  });

  accessor<str, 1, access::mode::read, access::target::host_buffer> hostPtrB(
      bufB);
  return 0;
}

[INTEL-5] Intel CPU OpenCL Device SSE4.1 Requirement

The Intel OpenCL CPU Runtime requires SSE4.1 support. If the Intel OpenCL CPU device does not support it, an OpenCL error will be thrown during execution. One typical error is a failure to create an OpenCL context (clCreateContext). Modern CPU devices feature SSE4.1 support. Beware that some virtualization environments do not expose SSE instructions by default. Refer to the documentation of your virtualization solution for instructions on how to enable vectorization support.

[AMD-1] AMD OpenCL Platform driver for GPU devices

The latest AMD OpenCL Platform driver for GPU with SPIR support can be downloaded from AMD website.

[AMD-2] AMD OpenCL Platform SPIR support

The only driver that supports SPIR consumption for AMD GPUs is the fglrx driver (Crimson Edition 15.12). The fglrx driver only works for older Linux kernels (3.19 or lower).

[AMD-3] AMD OpenCL Platform driver on Ubuntu

For Ubuntu, please download and install all of the packages from the download page, e.g.:

  • Video Driver for Graphics Accelerators

  • Minimal Video Driver for Graphics Accelerators (Non-X Support)

  • Video Driver for Graphics Accelerators Devel Files (OGL, OCL)

[AMD-4] AMD GPU on Ubuntu 16.04

Ubuntu 16.04 does not support the fglrx drivers because the OS relies on newer kernels (version number higher than 3.19). Although the new amdgpu-pro drivers are available for Ubuntu 16.04, they do not support SPIR 1.2, and therefore cannot run ComputeCpp. If you need to use these drivers, please, contact AMD regarding the status of SPIR 1.2 support on them.