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 absolute minimum requirement for OpenCL-on-a-CPU is SSE3, 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.
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 GPU-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.
Easiest way is to install ‘sysinfo’, which tells everything about your computer. Alternatively you can find supported CPUs with:
cat /proc/cpuinfo | grep sse3
A list of GPUs with:
lspci | grep VGA
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.
You can choose to use Intel’s drivers, or AMD’s drivers.
Intel OpenCL drivers
Intel’s drivers require support for SSE4.1. 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
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
AMD OpenCL drivers
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.
- 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
- 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
For the HD 4000 and up there is OpenCL 1.2 support on Windows 7/8. The Intel drivers can be downloadere from http://software.intel.com/en-us/vcsource/tools/opencl-sdk
For Apple you need OSX Sea Lion.
No support under Linux.
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 II
- Athlon II
- 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
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.
- 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 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
- 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.
Want more OpenCL?
If you have any questions, just fill in the contact-form or give a call.