Package: python-pyopencl Version: 2015.2.4-1 Severity: important Dear Maintainer,
copying a host buffer to a 2D device image will fail. The problem can be reproduced by the minimal example below. A further code example will be shown that does not throw an error yet still won't actually copy. The problem seems to be related to the recent switch of pyopencl from boost to cffi and can be fixed by upgrading to the latest upstream release of pyopencl (verfied by "pip install pyopencl") The problem also affects python3-pyopencl and is as well solved by using the latest pyopencl release through pip3. This might also solve bug #819448. kind regards, Jonas ### CODE EXAMPLE: ### from numpy import zeros, ones_like, float32 import pyopencl as cl mf = cl.mem_flags host_buffer = zeros((128, 128), dtype=float32) device_image = cl.Image(ctx, mf.READ_WRITE, cl.ImageFormat(cl.channel_order.INTENSITY, cl.channel_type.FLOAT), shape=(128, 128)) cl.enqueue_copy(que, device_image, host_buffer, origin=(0, 0), region=(128, 128)) --------------------------------------------------------------------------- LogicError Traceback (most recent call last) <ipython-input-11-075d353c4950> in <module>() ----> 1 cl.enqueue_copy(que, imageD, imageH, origin=(0, 0), region=(512, 256)) /usr/lib/python2.7/dist-packages/pyopencl/__init__.pyc in enqueue_copy(queue, dest, src, **kwargs) 1526 1527 return _cl._enqueue_write_image( -> 1528 queue, dest, origin, region, src, **kwargs) 1529 else: 1530 raise ValueError("invalid dest mem object type") /usr/lib/python2.7/dist-packages/pyopencl/cffi_cl.pyc in _enqueue_write_image(queue, mem, origin, region, hostbuf, row_pitch, slice_pitch, wait_for, is_blocking) 1515 _event, queue.ptr, mem.ptr, origin, origin_l, region, region_l, 1516 c_buf, row_pitch, slice_pitch, c_wait_for, num_wait_for, -> 1517 bool(is_blocking), NannyEvent._handle(hostbuf, c_ref))) 1518 return NannyEvent._create(_event[0]) 1519 /usr/lib/python2.7/dist-packages/pyopencl/cffi_cl.pyc in _handle_error(error) 547 _lib.free_pointer(error.msg) 548 _lib.free_pointer(error) --> 549 raise e 550 551 # }}} LogicError: clenqueuereadimage failed: INVALID_VALUE by adding a third dimension to origin and region, the command will execute without error: cl.enqueue_copy(que, device_image, host_buffer, origin=(0, 0, 0), region=(128, 128, 1)) yet no data will be actually copied, which can be verfied by attempting to copy the data back from the device to the host: host_buffer_2 = ones_like(host_buffer) cl.enqueue_copy(que, host_buffer_2, device_image, origin=(0, 0, 0), region=(128, 128, 1)) host_buffer_2 should now have equal contents as host_buffer, yet it doesn't. -- System Information: Debian Release: stretch/sid APT prefers testing APT policy: (500, 'testing'), (500, 'stable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.5.0-2-amd64 (SMP w/8 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: sysvinit (via /sbin/init) Versions of packages python-pyopencl depends on: ii amd-opencl-icd [opencl-icd] 1:15.9-4~deb8u2 ii libc6 2.22-9 ii libgcc1 1:6.1.1-4 ii libstdc++6 6.1.1-4 ii nvidia-opencl-icd [opencl-icd] 352.79-7 ii ocl-icd-libopencl1 [libopencl1] 2.2.9-1 ii pocl-opencl-icd [opencl-icd] 0.12-2 ii python 2.7.11-1 ii python-appdirs 1.4.0-2 ii python-cffi 1.6.0-1 pn python-cffi-backend-api-9729 <none> ii python-decorator 4.0.6-1 ii python-numpy [python-numpy-abi9] 1:1.11.0-1 ii python-pkg-resources 20.10.1-1 ii python-pytools 2016.1-1 ii python-six 1.10.0-3 pn python:any <none> Versions of packages python-pyopencl recommends: ii python-mako 1.0.4+ds1-1 ii python-opengl 3.1.0+dfsg-1 ii python-pyopencl-doc 2015.2.4-1 Versions of packages python-pyopencl suggests: pn python-imaging-tk <none> ii python-matplotlib 1.5.1-1+b2 pn python-pyopencl-dbg <none> pn python-pytest <none> -- no debconf information