Pyopencl:矩形副本未提供预期的结果

问题描述 投票:0回答:1

我想将数组src复制到更大的数组dst的一部分中。但是,当使用下面的代码片段中的功能cl.enqueue_copy时,没有像使用numpy那样获得预期的结果。知道测试为什么失败吗?

我正在使用https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopencl中的最新版本的pyopencl(pyopencl-2019.1.2 + cl21-cp37-cp37m-win_amd64.whl)。

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)
python opencl pyopencl
1个回答
0
投票

通过PyOpenCL文档宿主到宿主副本不受支持:

pyopencl.enqueue_copy(queue,dest,src,** kwargs)从图片复制,缓冲区或主机到Image,缓冲区或主机。 (注意:主机到主机副本不受支持。)

在OpenCL缓冲区之间以及从OpenCL缓冲区到主机缓冲区之间都支持复制。

我跳过了可以在PyOpenCL文档中检查的图像和SVM /主机。

© www.soinside.com 2019 - 2024. All rights reserved.