This is mostly a note in case someone has the same issue.

        I am setting up a debian8 virtual machine, with nvidia drivers from 

        After installing fresh pyopencl using pip, I got an error:

---> 39 from pyopencl._cffi import ffi as _ffi
     40 from .compyte.array import f_contiguous_strides, c_contiguous_strides

undefined symbol: clSVMFree

        After some digging, this is due to the fact that pyopencl was compiled 
with OpenCL 2.0 support, which the installed libraries do not support.

        And that in turn is due to debian8’s OpenCL headers, which as of 
version 2.0~svn31815-2~bpo8+1 includes:
#define CL_VERSION_1_0                              1
#define CL_VERSION_1_1                              1
#define CL_VERSION_1_2                              1
#define CL_VERSION_2_0                              1

        ..and that ‘CL_VERSION_2_0’ triggers the OpenCL 2.0 support in pyopencl…

        The solution is either to not install the opencl-headers from backports 
(only the nvidia drivers), or to use the 'CL_PRETEND_VERSION’ option (but that 
requires manual compilation, less convenient than pip for deployment)..

        So, problem solved, but I find this less than satisfying. 
- Should pyopencl compile with OpenCL 2.0 support even if no OpenCL 2 
devices/libraries are present (which is the case according to clinfo) ?
- Does that also mean that on a system with a mixture of 1.2 and 2.0 devices 
different pyopencl versions would be needed ? 
- Or is it a bug in debian8 backports with the wrong header ?
- Or maybe I should blame nvidia for sticking to 1.2 only...
Vincent Favre-Nicolin

PyOpenCL mailing list

Reply via email to