Я хочу скопировать массив sr c в часть большего массива dst. Однако при использовании функции cl.enqueue_copy, как в приведенном ниже фрагменте кода, я не получаю ожидаемый результат, как при использовании numpy. Любая идея, почему тест не пройден?
Я использую последнюю версию pyopencl (pyopencl ‑ 2019.1.2 + cl21 ‑ cp37 ‑ cp37m ‑ win_amd64.whl) из https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopencl.
import pyopencl as cl
import pyopencl.array as cl_array
import numpy as np
def test_rect_copy():
context = cl.create_some_context()
queue = cl.CommandQueue(context)
src = cl_array.zeros(queue, (2, 3), dtype=np.uint8)
src.fill(1)
src_np = src.get()
dst = cl_array.zeros(queue, (4, 5), dtype=np.uint8)
dst_np = dst.get()
cl.enqueue_copy(queue, dest=dst.data, src=src.data, src_origin=(0, 0), dst_origin=(0, 0), region=(2, 3))
queue.finish()
dst_np[0:2, 0:3] = src_np
assert np.all(dst.get() == dst_np)