Platform Support

Decprecated: Please note that you are viewing a guide targeting an older version of ComputeCpp Community Edition. This version of the guide is designed specifically for version 1.1.0.

Supported Platforms

This document shows the current support matrix for the latest ComputeCpp Community Edition. 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.

Table 1. Support Matrix

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
Ubuntu 14.04 64bit AMD® Cedar Yes 1800.8 AMD-1, AMD-2
Ubuntu 14.04 64bit Intel® CPU Yes 1.2.0.57 Intel-1, Intel-5
Ubuntu 14.04 64bit Intel® GPU Not Tested N/A None
Ubuntu 16.04 64bit AMD GPU With limitations N/A AMD-4, GCC-1
Ubuntu 16.04 64bit Intel CPU Yes 1.2.0.10002 INTEL-1, GCC, INTEL-5
Ubuntu 16.04 64bit Intel GPU With limitations r2.0.54425 INTEL-1, INTEL-3
Ubuntu 16.04 64bit NVIDIA® GPU With limitations CUDA 9.0.194 PTX Experimental Support-1
CentOS 7.2 64 bit AMD Fiji Yes 1912.5 AMD-1, AMD-2
CentOS 7.2 64 bit Intel CPU Yes .2.0.10002 Intel-1, Intel-5
CentOS 7.2 64 bit Intel Gen9 Graphics With limitations r2.0.54425 Intel-2, Intel-3
Windows 7 AMD Fiji Yes 1800.11 Notes
Windows 7 Intel CPU Yes 6.4.0.25 Intel-1

[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. 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 only support SPIR 1.2 on the Fury series of GPU. If you need to use Vega+, please, contact AMD regarding the status of their SPIR-V consumer.

[AMD-2] AMD OpenCL Platform SPIR support

The fglrx (Crimson Edition 15.12) driver only works for older Linux kernels (3.19 or lower). The amd-gpupro version of the driver for newer version of the Linux kernel only supports SPIR on the Fury series of GPUs.

[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)

[NVIDIA-1] NVIDIA PTX Support

This release contains experimental PTX support. This allows ComputeCpp to work on top of NVIDIA GPUs. However, as this is experimental this platform doesn’t fully support all SYCL features yet. Use of half, images, and most OpenCL builtin functions will cause issues.

AMD is a registered trademark of Advanced Micro Devices, Inc. Intel is a trademark of Intel Corporation or its subsidiaries in the U.S. and/or other countries. NVIDIA and CUDA are registered trademarks of NVIDIA Corporation

Select a Product

Please select a product

ComputeCpp enables developers to integrate parallel computing into applications using SYCL™ and accelerate code on a wide range of OpenCL™ devices such as GPUs.

ComputeSuite for R-Car enables developers to accelerate their applications on Renesas® R-Car based hardware such as the V3M and V3H, using the widely supported open standards SYCL and OpenCL.

Network Icon

Also,

part of our network