From 28eded1c1fdb1044c838a5b82d8ab8aaa2cbd734 Mon Sep 17 00:00:00 2001 From: Marko Bencun <mbencun@gmail.com> Date: Sat, 7 Sep 2013 21:43:30 +0200 Subject: [PATCH] Event.wait --- pyopencl/cffi_cl.py | 3 +++ src/c_wrapper/wrap_cl.cpp | 6 ++++-- src/c_wrapper/wrap_cl_core.h | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pyopencl/cffi_cl.py b/pyopencl/cffi_cl.py index f4a3119f..1b8d5ef8 100644 --- a/pyopencl/cffi_cl.py +++ b/pyopencl/cffi_cl.py @@ -385,6 +385,9 @@ class Event(_Common): _handle_error(_lib.event__get_profiling_info(self.ptr, param, info)) return _generic_info_to_python(info) + def wait(self): + _handle_error(_lib.event__wait(self.ptr)) + def enqueue_nd_range_kernel(queue, kernel, global_work_size, local_work_size, global_work_offset=None, wait_for=None, g_times_l=False): if wait_for is not None: raise NotImplementedError("wait_for") diff --git a/src/c_wrapper/wrap_cl.cpp b/src/c_wrapper/wrap_cl.cpp index 7b967e2d..424d2e71 100644 --- a/src/c_wrapper/wrap_cl.cpp +++ b/src/c_wrapper/wrap_cl.cpp @@ -1658,10 +1658,8 @@ namespace pyopencl cl_int status_code; PYOPENCL_PRINT_CALL_TRACE("clCreateKernel"); - std::cout << "HUH HAHAH" << std::endl; m_kernel = clCreateKernel(prg.data(), kernel_name.c_str(), &status_code); - std::cout << "HU2" << std::endl; if (status_code != CL_SUCCESS) throw pyopencl::error("clCreateKernel", status_code); } @@ -2177,6 +2175,10 @@ void _free2(void **p, uint32_t size) { return 0; } +::error *event__wait(void *ptr) { + C_HANDLE_ERROR(static_cast<pyopencl::event*>(ptr)->wait();); + return 0; +} ::error *_create_kernel(void **ptr_kernel, void *ptr_program, char *name) { pyopencl::program *prg = static_cast<pyopencl::program*>(ptr_program); diff --git a/src/c_wrapper/wrap_cl_core.h b/src/c_wrapper/wrap_cl_core.h index 1a9ee937..f828939b 100644 --- a/src/c_wrapper/wrap_cl_core.h +++ b/src/c_wrapper/wrap_cl_core.h @@ -41,6 +41,7 @@ error *program__kind(void *ptr_program, int *kind); error *program__get_build_info(void *ptr_program, void *ptr_device, cl_program_build_info param, generic_info *out); error *event__get_profiling_info(void *ptr_event, cl_profiling_info param, generic_info *out); +error *event__wait(void *ptr_event); error *_create_kernel(void **ptr_kernel, void *ptr_program, char *name); error *kernel__set_arg_mem_buffer(void *ptr_kernel, cl_uint arg_index, void *ptr_buffer); -- GitLab