Stream HPC

Do your (X86) CPU and GPU support OpenCL?

Does your computer have OpenCL-capable hardware? Read on and find out if your computer is compatible…

If you want to know what other non-PC hardware (phones, tablets, FPGAs, DSPs, etc) is running OpenCL, see the OpenCL SDK page.

For people who only want to run OpenCL-software and have recent hardware, just read this paragraph. If you have recent drivers for your GPU, you can be sure OpenCL is already supported and you can run OpenCL-capable software. NVidia has support for OpenCL 1.1 since drivers 280.13, so if you need OpenCL 1.1, then make sure you have this version or later. If you want to use Intel-processors and you don’t have an AMD GPU installed, you need to download the runtime of Intel OpenCL.

If you want to know if your X86 device is supported, you’ll find answers in this article.

Often it is not clear how OpenCL works on CPUs. If you have a 8 core processor with double threading, then it mostly is understood that 16 pipelines of instructions are possible. OpenCL takes care of this threading, but also uses parallelism provided by SSE and AVX extension. I talked more about this here and here. Meaning that an 8-core processor with AVX can compute 8 times 32 bytes (8*8 floats or 8*4 doubles) in parallel. You could see it as parallelism of parallelism. SSE is designed with multimedia-operations in mind, but has enough to be used with OpenCL. The minimum requirement for OpenCL-on-a-CPU is SSE 4.2, though.

A question I see often is what to do if you have more devices. There is no OpenCL-package for all the available devices, so you then need to install drivers for each device. CPU-drivers are often included in the GPU-drivers.

Read on to find out exactly which processors are supported.

Finding useful hardware

In short: hardware from 2010 and 2011 has OpenCL-support, hardware from late 2008 to beginning 2010 have reasonable support. Older hardware has support (if you bought the best of the best), but might not give real good speed-up. To be sure (as there are always exceptions), you need to know which processor and graphics card are installed.

Windows

As OpenCL works on CPUs, GPUs and accelerators, the first step is to get a list of all devices. Under the “System and Security” section of the “Control Panel” you’ll find the device manager. This lists all devices. We are interested in “display adaptors” and “processors”. Check for the brands AMD, ATI, NVidia and Intel.

Alternatively you can use CPU-z (CPUs and GPUs), GPUz (GPUs only) or GPU Caps Viewer (GPUs only, but also a lot on OpenCL-support) to find the information. For CPUs CPU-Z is very useful, as shows you immediately if your CPU supports SSE4.2 and AVX for exquisite OpenCL-performance.

Linux

Easiest way is to install ‘sysinfo’, which tells everything about your computer. Alternatively you can find supported CPUs with:

cat /proc/cpuinfo | grep sse4_2

A list of GPUs with:

lspci | grep VGA

Apple

You get the GPU-drivers provided with the OS. I found an overview of supported GPUs here, here and here. Support for CPUs is also available by default in the recent OSX releases. If you want to develop software on a MAC, you will find examples here and will find XCode completely ready.

The only down-side is that the drivers cannot be manually updated – you need to update OSX for that.

Intel CPUs

You can choose to use Intel’s drivers, or AMD’s drivers.

Intel OpenCL drivers

Intel’s drivers require support for SSE 4.1 4.2. Below is an overview of all CPUs released until now which support OpenCL via the intel driver. Do you have a Core processor, scroll down to AMD OpenCL drivers.

AVX (Q1 2011)

  • 2nd Generation Core i-series (SandyBridge).

SSE 4.2 (Q1 2009 – Q3 2010)

  • Core i7 Processors
  • Core i5 Processors
  • Core i3 Processors
  • Xeon 55XX series
  • Xeon 56XX series
  • Xeon 75XX series

Update: SSE 4.1 not supported anymore. See discussion.

SSE4.1 (Q2-Q3 2008)

  • Xeon 74XX series
  • Quad-Core Xeon 54XX, 33XX series
  • Dual-Core Xeon 52XX, 31XX series
  • Core 2 Extreme 9XXX series
  • Core 2 Quad 9XXX series
  • Core 2 Duo 8XXX series
  • Core 2 Duo E7200

The Intel SDK can be downloaded from http://software.intel.com/en-us/articles/download-intel-opencl-sdk/.

AMD OpenCL drivers

Update: Under Windows OpenCL support for CPUs seems to have disappeared. Will update article accordingly, when we tested it ourselves.

AMD’s drivers support above devices and processors with SSE3 or SSSE3. They claim support for SSE2.x too – but since not much extra speed could be squeezed out of these, I only list CPUs with at least SSE3 support.

SSSE3

  • Quad-Core Xeon 73XX, 53XX, 32XX series
  • Dual-Core Xeon 72XX, 53XX, 51XX, 30XX series
  • Core 2 Extreme 7XXX, 6XXX series
  • Core 2 Quad 6XXX series
  • Core 2 Duo 7XXX (except E7200), 6XXX, 5XXX, 4XXX series
  • Core 2 Solo 2XXX series
  • Pentium dual-core processor E2XXX, T23XX series

SSE3

  • Atom processors (SSE3_ATOM)
  • Dual-Core Xeon 70XX, 71XX, 50XX Series
  • Dual-Core Xeon processor (ULV and LV) 1.66, 2.0, 2.16
  • Dual-Core Xeon 2.8
  • Xeon processors with SSE3 instruction set support
  • Core Duo
  • Core Solo
  • Pentium dual-core processor T21XX, T20XX series
  • Pentium processor Extreme Edition
  • Pentium D
  • Pentium 4 processors with SSE3 instruction set support

It is interesting to know that AMD and Intel have different optimisation techniques and therefore sometimes AMD’s and sometimes Intel’s drivers give faster code.

The AMD SDK can be downloaded from http://developer.amd.com/amdapp

Intel GPUs

For the HD 4000 and up there is OpenCL 1.2 support on Windows 7/8/10. The Intel drivers can be downloaded from http://software.intel.com/en-us/vcsource/tools/opencl-sdk

For Apple you need OSX Sea Lion.

No support under Linux.

AMD CPU/APU

Intel officially only supports their own processors, so you cannot use Intel’s drivers.

To have good support for OpenCL, it is a good bet to have at least SSE4a-support – which is on their K10-architecture:

  • Phenom
  • Phenom II
  • Athlon II

Bulldozer CPUs/APUs have support for AVX and thus even better performance with OpenCL.

With SSE3 you might get some speed-up. These are:

  • Athlon 64 (since Venice Stepping E3 and San Diego Stepping E4)
  • Athlon 64 X2
  • Athlon 64 FX (since San Diego Stepping E4)
  • Opteron (since Stepping E4)
  • Sempron (since Palermo. Stepping E3)
  • Turion 64
  • Turion 64 X2

The AMD SDK can be downloaded from http://developer.amd.com/amdapp

AMD/ATI GPUs

Over the years the architecture of AMD/ATI GPUs changed to get better support for OpenCL. Below is a list of GPUs that have good support for OpenCL 1.1 or 1.2.

  • Recent APUs with embedded Radeon HD.
  • Radeon HD 6450 and up.
  • Radeon HD 5450 and up.
  • FirePro V8800, V7800, V5800, V4800 and V3800.
  • Mobility Radeon HD 5430 and up.
  • HD 6330M and up.
  • Mobility FirePro M7820 and M5800.

Older GPUs had (beta) support, but won’t give really good speed-ups and is now deprecated:

  • Radeon 4350 and up.
  • FirePro V8750, V8700, V7750, V5700 and V3750.
  • FireStream 9270 and 9250.
  • Mobility Radeon HD 4300 Series and up.
  • Mobility FirePro M7740.

Recent drivers have the OpenCL runtime. The SDK can be downloaded from http://developer.amd.com/amdapp

NVidia GPUs

NVidia supports OpenCL well on devices with Compute Capability 1.3 and up, which are the following:

  • GeForce GTX 260 and up.
  • GeForce GTX 400 series.
  • GeForce GTX 500 series.
  • Tesla C/S 1060 and up.
  • Quadro FX 4800 and 5800

Older GPUs (with compute capability 1.0 to 1.2) won’t get really good speed-ups. It might be of interest when you have SLI. The GPUs not listed above from the following series have minimal support for OpenCL, but the list could have some mistakes due to generalisations:

  • GeForce 100 series.
  • GeForce 200 series.
  • GeForce 8000 series.
  • GeForce 9000 series.
  • Tesla C/D/S 870.
  • Quadro FX. Check this table if it mentions CUDA-cores.

Recent drivers have the OpenCL runtime. The SDK can be downloaded from http://developer.nvidia.com/cuda-downloads. It might seem a bit strange you need the CUDA-SDK to develop OpenCL, but they chose to bundle the two.

Want more OpenCL?

Best thing to do is to stay in touch with us via Twitter and via the newsletter.

Take some time to look around on this site, as there is a lot of information on OpenCL available on for example the blog and self-study pages.

StreamHPC provides consultancy and training to support your business-needs. This is perfect if you want get up-and-running quickly.

If you have any questions, just fill in the contact-form or give a call.