Blog

Do your (X86) CPU and GPU support OpenCL?

  |   Featured, General   |   20 Comments

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.

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 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.

Linux

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

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 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.

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. 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.

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 do have (beta) support, but won’t give really good speed-ups. It might be of interest when you have CrossFire. Here is the list:
  • 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.

StreamComputing 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.

Liked this article? We are the best known experts in OpenCL, CUDA and performance optimization. We can help you to maximize the performance of your software.

  • Laughingrice

    NVIDIA compute 1.x devices (including 1.0 to 1.2) support OpenCL with no problem. The problem is that they only support OpenCL 1.0 because they only have 16KB local memory and the spec requires at least 32KB for OpenCL 1.1
    You can get really good speedups, but in all cases you need to know what you are doing for complex work

    • streamcomputing

      Thanks for this hint. There is 48KB on NVidia GPUs with at least Compute Capability 2.0, which are the Geforce 400 an 500 series (cards of March 2010 and later).

  • MySchizoBuddy

    can you clarify why should one pay so much for tesla over the geforce line. I have read somewhere that geforce doesn’t support double precision. Can you verify that.

    • streamcomputing

      Most important Tesla has ECC memory – this makes the device slower though. It also has Infiniband for faster transfers (if not routed via PCI-e of course). They have had “Zero error tolerance stress testing” and have 3 years waranty. And also very important: great HPC-support.

  • Pingback: Does Your Device Support OpenCL? | insideHPC.com()

  • pip010

    Are OpenCL and CUDA complementary? It looks so on the surface. They have the same approach targeting heterogeneous hardware based on unified computational kernel concept. What’s with that? Why not using one standard? Are there clear competitive advantage of using the one over the other and/or vice versa?

    • streamcomputing

      OpenCL is the standard, CUDA only works on Nvidia-hardware. As having a standard has the most advantages, especially in the long term, we at StreamComputing chose OpenCL.

  • http://www.facebook.com/jaco.moolman Jaco Moolman

    Hi there.

    I have an 8 core AMD CPU and and Nvidia 570 GPU. I’ve an application that uses OPENCL for processing large ammounts of data. When I had an intel dual core the application could see the Nvidia GPU, but now with the AMD CPU and app can not see the Nvidia graphics card. I’ve upgraded all drives I could fine (twice or more) but no luck. Any ideas?

    • streamcomputing

      You should focus on the NVIDIA-drivers – you can ignore the CPU, as OpenCL is designed to have several drivers working next to each other.
      Get CPU-Z or Caps-viewer to find out if the drivers were installed correct. If CUDA works, but OpenCL doesn’t, then you need other drivers.

  • http://www.facebook.com/profile.php?id=1397421234 Arjun Nemani

    AMD Mobility Radeon HD *5430 and UP*
    Does Radeon mobilty HD 6490M support OpenCL?

  • zahid

    I want open cl support for Intel 82915G/GV/910GL.

    Is it possible???

    • streamcomputing

      Isn’t that a motherboard-chipset? You need to find out the CPU or GPU available in your system as described above.

  • Nope NopeAgain

    ATI card support:
    “Radeon HD 5450 and up.”
    But why is my HD 5670 NOT working on OpenCL? (Overclocked)

  • Chidanand

    Dear All,

    I am the fresher in OpenCL field.

    So, Can you please help me to execute one sample opencl program.

    So, that I can run one OpenCl program

    I do not know about the system requirements also.

    Please guide me!

  • Help Please

    Hi, I my laptop has the following, ATI Radeon HD 3200 Graphics, and AMD Dual Core Mobile RM 72 Processors. is there a way where I can get support for OpenCL ? I didn’t see these under the list, but I thought I would ask if there is a way to make it work. thanks in advance