Exemple #1
0
error*
enqueue_write_buffer_rect(clobj_t *evt, clobj_t _queue, clobj_t _mem, void *buf,
                          const size_t *_buf_orig, size_t buf_orig_l,
                          const size_t *_host_orig, size_t host_orig_l,
                          const size_t *_reg, size_t reg_l,
                          const size_t *_buf_pitches, size_t buf_pitches_l,
                          const size_t *_host_pitches, size_t host_pitches_l,
                          const clobj_t *_wait_for, uint32_t num_wait_for,
                          int block, void *pyobj)
{
#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 mem = static_cast<memory_object*>(_mem);
    ConstBuffer<size_t, 3> buf_orig(_buf_orig, buf_orig_l);
    ConstBuffer<size_t, 3> host_orig(_host_orig, host_orig_l);
    ConstBuffer<size_t, 3> reg(_reg, reg_l, 1);
    ConstBuffer<size_t, 2> buf_pitches(_buf_pitches, buf_pitches_l);
    ConstBuffer<size_t, 2> host_pitches(_host_pitches, host_pitches_l);
    return c_handle_retry_mem_error([&] {
            pyopencl_call_guarded(
                clEnqueueWriteBufferRect, queue, mem, bool(block), buf_orig,
                host_orig, reg, buf_pitches[0], buf_pitches[1], host_pitches[0],
                host_pitches[1], buf, wait_for, nanny_event_out(evt, pyobj));
        });
#else
    PYOPENCL_UNSUPPORTED(clEnqueueWriteBufferRect, "CL 1.0")
#endif
}
Exemple #2
0
error*
enqueue_write_buffer(clobj_t *evt, clobj_t _queue, clobj_t _mem,
                     const void *buffer, size_t size, size_t device_offset,
                     const clobj_t *_wait_for, uint32_t num_wait_for,
                     int block, void *pyobj)
{
    const auto wait_for = buf_from_class<event>(_wait_for, num_wait_for);
    auto queue = static_cast<command_queue*>(_queue);
    auto mem = static_cast<memory_object*>(_mem);
    return c_handle_retry_mem_error([&] {
            pyopencl_call_guarded(
                clEnqueueWriteBuffer, queue, mem, bool(block), device_offset,
                size, buffer, wait_for, nanny_event_out(evt, pyobj));
        });
}
Exemple #3
0
error*
enqueue_write_image(clobj_t *evt, clobj_t _queue, clobj_t _mem,
                    const size_t *_orig, size_t orig_l,
                    const size_t *_reg, size_t reg_l,
                    const void *buf, size_t row_pitch, size_t slice_pitch,
                    const clobj_t *_wait_for, uint32_t num_wait_for,
                    int block, void *pyobj)
{
    auto queue = static_cast<command_queue*>(_queue);
    auto img = static_cast<image*>(_mem);
    const auto wait_for = buf_from_class<event>(_wait_for, num_wait_for);
    ConstBuffer<size_t, 3> orig(_orig, orig_l);
    ConstBuffer<size_t, 3> reg(_reg, reg_l, 1);
    return c_handle_retry_mem_error([&] {
            pyopencl_call_guarded(clEnqueueWriteImage, queue, img, bool(block),
                                  orig, reg, row_pitch, slice_pitch, buf,
                                  wait_for, nanny_event_out(evt, pyobj));
        });
}
Exemple #4
0
error*
enqueue_svm_memcpy(
    clobj_t *evt, clobj_t _queue,
    cl_bool is_blocking,
    void *dst_ptr, const void *src_ptr, size_t size,
    const clobj_t *_wait_for, uint32_t num_wait_for, void *pyobj)
{
#if PYOPENCL_CL_VERSION >= 0x2000
    const auto wait_for = buf_from_class<event>(_wait_for, num_wait_for);
    auto queue = static_cast<command_queue*>(_queue);
    return c_handle_retry_mem_error([&] {
        pyopencl_call_guarded(
            clEnqueueSVMMemcpy, queue,
            is_blocking,
            dst_ptr, src_ptr, size,
            wait_for, nanny_event_out(evt, pyobj));
        });
#else
    PYOPENCL_UNSUPPORTED_BEFORE(clEnqueueSVMMemcpy, "CL 2.0")
#endif
}