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