Trying Out The New Intel Open-Source OpenCL NEO Compute Driver

Written by Michael Larabel in Display Drivers on 6 March 2018 at 09:55 AM EST. Page 1 of 2. 7 Comments.

Last month Intel open-sourced a new "NEO" OpenCL driver including an LLVM graphics compiler and its compute runtime supporting OpenCL 2.1. I finally found some time to give this new open-source Intel OpenCL Linux driver a try.

This new Intel OpenCL open-source driver dubbed "NEO" that replaces the Beignet previous open-source OpenCL Linux driver as well as Intel's previous closed-source OpenCL SDK driver is in much better standing. While Beignet hit OpenCL 2.0 support a few months ago, NEO already exposes OpenCL 2.1 and they are on the way with OpenCL 2.2 support. This NEO driver is also cross-platform, introduces a new "GMMLIB" graphics memory management library, and makes use of a new LLVM-based graphics compiler stack. This new Intel stack focuses on Broadwell "Gen 8" graphics hardware support and newer.


Beignet had a nice run and accomplished a lot for open-source OpenCL on Intel hardware, but has now been succeeded by NEO.

I built the latest Git code for running some initial NEO tests on Ubuntu 16.04 Linux. The basic build instructions can be found on GitHub. It's fairly straight-forward to build for anyone experienced with CMake, etc, but certainly not trivial for any new-comers and there isn't yet any third-party package repositories I have found for anyone that wants to be able to easily deploy the driver at this time without having to build the patched version of LLVM/Clang and the various other components making up this OpenCL compiler.

After building the Neo stack, sure enough, OpenCL 2.1 support was exposed! Beautiful to see from an open-source driver stack considering Beignet was at OpenCL 1.2, AMD's ROCm is at 1.2~2.0, Gallium3D Clover is at OpenCL 1.1, etc. NVIDIA's proprietary Linux driver also only exposes OpenCL 1.2 with some 2.0 extensions.

I was doing this initial testing from an Intel Core i7 8700K "Coffee Lake" system. When running some initial OpenCL tests, the OpenCL support was working but a few tests were failing. Most often it was attributed to an OpenCL host out-of-memory issue. When asking some of those involved in the NEO driver stack, this wasn't a known driver issue so may be something Coffee Lake related or isolated to this initial system I was trying. I will be trying out the Intel NEO OpenCL driver stack on some other Intel test systems as soon as additional time allows. I do have a few benchmark results to share at this time.

Related Articles