From 976a8a3962119138d35a82c59fbc3ab7fef820b6 Mon Sep 17 00:00:00 2001 From: Yichao Yu <yyc1992@gmail.com> Date: Fri, 23 May 2014 12:38:59 -0400 Subject: [PATCH] clean up --- src/c_wrapper/utils.h | 41 +++++----------------------- src/c_wrapper/wrap_cl.cpp | 56 +++++---------------------------------- 2 files changed, 14 insertions(+), 83 deletions(-) diff --git a/src/c_wrapper/utils.h b/src/c_wrapper/utils.h index 8b687b65..78e651c4 100644 --- a/src/c_wrapper/utils.h +++ b/src/c_wrapper/utils.h @@ -67,30 +67,6 @@ public: } }; -template<> -class pyopencl_buf<void> : public std::unique_ptr<void, _D<void> > { - size_t m_len; -public: - pyopencl_buf(size_t len) : - std::unique_ptr<void, _D<void> >((len ? malloc(len) : NULL)), - m_len(len) - { - } - inline size_t - len() const - { - return m_len; - } - inline void - resize(size_t len) - { - if (len == m_len) - return; - m_len = len; - this->reset(realloc(this->release(), len)); - } -}; - namespace pyopencl { template<typename T> @@ -100,21 +76,18 @@ cast_bool(const T &v) return v ? CL_TRUE : CL_FALSE; } -class noncopyable { - // non-copyable +struct clbase { private: - noncopyable(noncopyable const &) = delete; - noncopyable &operator=(noncopyable const &) = delete; + // non-copyable + clbase(const clbase&) = delete; + clbase &operator=(const clbase&) = delete; + bool operator==(clbase const &other) const = delete; + bool operator!=(clbase const &other) const = delete; public: - noncopyable() = default; -}; - -struct clbase : public noncopyable { + clbase() = default; virtual ~clbase() = default; virtual intptr_t intptr() const = 0; virtual generic_info get_info(cl_uint) const = 0; - bool operator==(clbase const &other) const = delete; - bool operator!=(clbase const &other) const = delete; }; template<typename CLType> diff --git a/src/c_wrapper/wrap_cl.cpp b/src/c_wrapper/wrap_cl.cpp index 5021f5a1..9dbc39b4 100644 --- a/src/c_wrapper/wrap_cl.cpp +++ b/src/c_wrapper/wrap_cl.cpp @@ -2,7 +2,6 @@ #include "utils.h" #include <stdlib.h> -#include <vector> // {{{ extension function pointers @@ -112,15 +111,14 @@ inline pyopencl_buf<cl_device_id> platform::get_devices(cl_device_type devtype) { cl_uint num_devices = 0; - print_call_trace("clGetDeviceIDs"); - cl_int status_code; - status_code = clGetDeviceIDs(data(), devtype, 0, 0, &num_devices); - if (status_code == CL_DEVICE_NOT_FOUND) { + try { + pyopencl_call_guarded(clGetDeviceIDs, + data(), devtype, 0, NULL, &num_devices); + } catch (const pyopencl::error &e) { + if (e.code() != CL_DEVICE_NOT_FOUND) + throw e; num_devices = 0; - } else if (status_code != CL_SUCCESS) { - throw pyopencl::error("clGetDeviceIDs", status_code); } - pyopencl_buf<cl_device_id> devices(num_devices); if (num_devices == 0) return devices; @@ -617,11 +615,6 @@ public: pyopencl_call_guarded(clRetainCommandQueue, q); } } - command_queue(command_queue const &src) - : clobj(src.data()) - { - pyopencl_call_guarded(clRetainCommandQueue, data()); - } command_queue(const context *ctx, const device *py_dev=0, cl_command_queue_properties props=0) : clobj(create_command_queue(ctx, py_dev, props)) @@ -697,10 +690,6 @@ public: pyopencl_call_guarded(clRetainEvent, event); } } - event(event const &src) : clobj(src.data()) - { - pyopencl_call_guarded(clRetainEvent, data()); - } ~event() { pyopencl_call_guarded_cleanup(clReleaseEvent, data()); @@ -836,17 +825,6 @@ public: m_hostbuf = hostbuf; } } - memory_object(memory_object const &src) - : m_valid(true), memory_object_holder(src.data()), - m_hostbuf(src.m_hostbuf) - { - pyopencl_call_guarded(clRetainMemObject, data()); - } - memory_object(memory_object_holder const &src) - : m_valid(true), memory_object_holder(src.data()) - { - pyopencl_call_guarded(clRetainMemObject, data()); - } void release() { @@ -1799,21 +1777,7 @@ create_program_with_binary(context *ctx, cl_uint num_devices, // }}} - - // {{{ kernel - -class local_memory { -private: - size_t m_size; -public: - local_memory(size_t size) : m_size(size) - {} - size_t - size() const - { - return m_size; - } -}; +// {{{ kernel class kernel : public clobj<cl_kernel> { private: @@ -1850,12 +1814,6 @@ public: sizeof(cl_mem), &mem->data()); } void - set_arg_local(cl_uint arg_index, const local_memory *loc) - { - pyopencl_call_guarded(clSetKernelArg, data(), arg_index, - loc->size(), NULL); - } - void set_arg_sampler(cl_uint arg_index, const sampler *smp) { pyopencl_call_guarded(clSetKernelArg, data(), arg_index, -- GitLab