Пример #1
0
error*
enqueue_copy_buffer_rect(clobj_t *evt, clobj_t _queue, clobj_t _src,
                         clobj_t _dst, const size_t *_src_orig,
                         size_t src_orig_l, const size_t *_dst_orig,
                         size_t dst_orig_l, const size_t *_reg, size_t reg_l,
                         const size_t *_src_pitches, size_t src_pitches_l,
                         const size_t *_dst_pitches, size_t dst_pitches_l,
                         const clobj_t *_wait_for, uint32_t num_wait_for)
{
#if PYOPENCL_CL_VERSION >= 0x1010
    const auto wait_for = buf_from_class<event>(_wait_for, num_wait_for);
    auto queue = static_cast<command_queue*>(_queue);
    auto src = static_cast<memory_object*>(_src);
    auto dst = static_cast<memory_object*>(_dst);
    ConstBuffer<size_t, 3> src_orig(_src_orig, src_orig_l);
    ConstBuffer<size_t, 3> dst_orig(_dst_orig, dst_orig_l);
    ConstBuffer<size_t, 3> reg(_reg, reg_l, 1);
    ConstBuffer<size_t, 2> src_pitches(_src_pitches, src_pitches_l);
    ConstBuffer<size_t, 2> dst_pitches(_dst_pitches, dst_pitches_l);
    return c_handle_retry_mem_error([&] {
            pyopencl_call_guarded(
                clEnqueueCopyBufferRect, queue, src, dst, src_orig, dst_orig,
                reg, src_pitches[0], src_pitches[1], dst_pitches[0],
                dst_pitches[1], wait_for, event_out(evt));
        });
#else
    PYOPENCL_UNSUPPORTED(clEnqueueCopyBufferRect, "CL 1.0")
#endif
}
Пример #2
0
error*
enqueue_copy_image(clobj_t *evt, clobj_t _queue, clobj_t _src, clobj_t _dst,
                   const size_t *_src_orig, size_t src_orig_l,
                   const size_t *_dst_orig, size_t dst_orig_l,
                   const size_t *_reg, size_t reg_l,
                   const clobj_t *_wait_for, uint32_t num_wait_for)
{
    const auto wait_for = buf_from_class<event>(_wait_for, num_wait_for);
    auto queue = static_cast<command_queue*>(_queue);
    auto src = static_cast<image*>(_src);
    auto dst = static_cast<image*>(_dst);
    ConstBuffer<size_t, 3> src_orig(_src_orig, src_orig_l);
    ConstBuffer<size_t, 3> dst_orig(_dst_orig, dst_orig_l);
    ConstBuffer<size_t, 3> reg(_reg, reg_l, 1);
    return c_handle_retry_mem_error([&] {
            pyopencl_call_guarded(clEnqueueCopyImage, queue, src, dst, src_orig,
                                  dst_orig, reg, wait_for, event_out(evt));
        });
}