From 7bb17430970782ddd2f0f6ee3b2975dac9b0b5aa Mon Sep 17 00:00:00 2001 From: Yichao Yu <yyc1992@gmail.com> Date: Sun, 25 May 2014 23:39:57 -0400 Subject: [PATCH] enqueue_wait_for_events --- pyopencl/c_wrapper/wrap_cl_core.h | 2 ++ pyopencl/cffi_cl.py | 12 +++++++++--- src/c_wrapper/wrap_cl.cpp | 12 ++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/pyopencl/c_wrapper/wrap_cl_core.h b/pyopencl/c_wrapper/wrap_cl_core.h index 84da8e42..6f707c64 100644 --- a/pyopencl/c_wrapper/wrap_cl_core.h +++ b/pyopencl/c_wrapper/wrap_cl_core.h @@ -135,6 +135,8 @@ error *enqueue_marker_with_wait_list(clobj_t *event, clobj_t queue, error *enqueue_barrier_with_wait_list(clobj_t *event, clobj_t queue, const clobj_t *wait_for, uint32_t num_wait_for); +error *enqueue_wait_for_events(clobj_t _queue, const clobj_t *_wait_for, + uint32_t num_wait_for); error *enqueue_marker(clobj_t *event, clobj_t queue); error *enqueue_barrier(clobj_t queue); diff --git a/pyopencl/cffi_cl.py b/pyopencl/cffi_cl.py index 835a7027..2f522783 100644 --- a/pyopencl/cffi_cl.py +++ b/pyopencl/cffi_cl.py @@ -704,9 +704,6 @@ class NannyEvent(Event): return _find_obj(_lib.nanny_event__get_ward(self.ptr)) # TODO -# NannyEvent -# wait_for_events -# enqueue_wait_for_events # UserEvent # enqueue_migrate_mem_objects # enqueue_migrate_mem_objects_ext @@ -812,6 +809,15 @@ def _enqueue_barrier(queue): # }}} +# {{{ _enqueue_wait_for_events + +def _enqueue_wait_for_events(queue, wait_for=None): + c_wait_for, num_wait_for = _clobj_list(wait_for) + _handle_error(_lib.enqueue_wait_for_events(queue.ptr, c_wait_for, + num_wait_for)) + +# }}} + # {{{ _enqueue_*_buffer def _enqueue_read_buffer(queue, mem, hostbuf, device_offset=0, diff --git a/src/c_wrapper/wrap_cl.cpp b/src/c_wrapper/wrap_cl.cpp index 3f7fa288..894642d3 100644 --- a/src/c_wrapper/wrap_cl.cpp +++ b/src/c_wrapper/wrap_cl.cpp @@ -2418,6 +2418,18 @@ enqueue_barrier_with_wait_list(clobj_t *_evt, clobj_t _queue, } #endif +error* +enqueue_wait_for_events(clobj_t _queue, const clobj_t *_wait_for, + uint32_t num_wait_for) +{ + auto queue = static_cast<command_queue*>(_queue); + auto wait_for = buf_from_class<event>(_wait_for, num_wait_for); + return c_handle_error([&] { + pyopencl_call_guarded(clEnqueueWaitForEvents, queue->data(), + num_wait_for, wait_for.get()); + }); +} + error* enqueue_marker(clobj_t *_evt, clobj_t _queue) { -- GitLab