diff --git a/src/c_wrapper/buffer.cpp b/src/c_wrapper/buffer.cpp index 6b82706d03f9f5205fdd9fd44e3d5b21c6ca92e2..b0775d65faa56d19aa5b4cb4cb9fb2a1f24c3e69 100644 --- a/src/c_wrapper/buffer.cpp +++ b/src/c_wrapper/buffer.cpp @@ -15,14 +15,13 @@ new_buffer(cl_mem mem) #if PYOPENCL_CL_VERSION >= 0x1010 PYOPENCL_USE_RESULT buffer* -buffer::get_sub_region(size_t origin, size_t size, cl_mem_flags flags) const +buffer::get_sub_region(size_t orig, size_t size, cl_mem_flags flags) const { - cl_buffer_region region = {origin, size}; + cl_buffer_region reg = {orig, size}; auto mem = retry_mem_error([&] { return pyopencl_call_guarded(clCreateSubBuffer, this, flags, - CL_BUFFER_CREATE_TYPE_REGION, - ®ion); + CL_BUFFER_CREATE_TYPE_REGION, ®); }); return new_buffer(mem); } @@ -67,11 +66,9 @@ create_buffer(clobj_t *buffer, clobj_t _ctx, cl_mem_flags flags, size_t size, void *hostbuf) { auto ctx = static_cast<context*>(_ctx); - return c_handle_error([&] { - auto mem = retry_mem_error([&] { - return pyopencl_call_guarded(clCreateBuffer, ctx, - flags, size, hostbuf); - }); + return c_handle_retry_mem_error([&] { + auto mem = pyopencl_call_guarded(clCreateBuffer, ctx, + flags, size, hostbuf); *buffer = new_buffer(mem); }); } @@ -80,18 +77,15 @@ error* enqueue_read_buffer(clobj_t *evt, clobj_t _queue, clobj_t _mem, void *buffer, size_t size, size_t device_offset, const clobj_t *_wait_for, uint32_t num_wait_for, - int is_blocking, void *pyobj) + 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_error([&] { - retry_mem_error([&] { - pyopencl_call_guarded( - clEnqueueReadBuffer, queue, mem, - bool(is_blocking), device_offset, size, - buffer, wait_for, nanny_event_out(evt, pyobj)); - }); + return c_handle_retry_mem_error([&] { + pyopencl_call_guarded( + clEnqueueReadBuffer, queue, mem, bool(block), device_offset, + size, buffer, wait_for, nanny_event_out(evt, pyobj)); }); } @@ -99,18 +93,15 @@ 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 is_blocking, void *pyobj) + 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_error([&] { - retry_mem_error([&] { - pyopencl_call_guarded( - clEnqueueWriteBuffer, queue, mem, - bool(is_blocking), device_offset, size, buffer, - wait_for, nanny_event_out(evt, pyobj)); - }); + 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)); }); } @@ -153,12 +144,10 @@ enqueue_fill_buffer(clobj_t *evt, clobj_t _queue, clobj_t _mem, void *pattern, auto queue = static_cast<command_queue*>(_queue); auto mem = static_cast<memory_object*>(_mem); // TODO debug print pattern - return c_handle_error([&] { - retry_mem_error([&] { - pyopencl_call_guarded( - clEnqueueFillBuffer, queue, mem, pattern, psize, - offset, size, wait_for, event_out(evt)); - }); + return c_handle_retry_mem_error([&] { + pyopencl_call_guarded(clEnqueueFillBuffer, queue, mem, pattern, + psize, offset, size, wait_for, + event_out(evt)); }); } @@ -184,14 +173,11 @@ enqueue_read_buffer_rect(clobj_t *evt, clobj_t _queue, clobj_t _mem, void *buf, 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_error([&] { - retry_mem_error([&] { - pyopencl_call_guarded( - clEnqueueReadBufferRect, 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)); - }); + return c_handle_retry_mem_error([&] { + pyopencl_call_guarded( + clEnqueueReadBufferRect, 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)); }); } @@ -213,14 +199,11 @@ enqueue_write_buffer_rect(clobj_t *evt, clobj_t _queue, clobj_t _mem, void *buf, 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_error([&] { - 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)); - }); + 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)); }); } @@ -242,14 +225,11 @@ enqueue_copy_buffer_rect(clobj_t *evt, clobj_t _queue, clobj_t _src, 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_error([&] { - 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)); - }); + 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)); }); } diff --git a/src/c_wrapper/buffer.h b/src/c_wrapper/buffer.h index 14b8118fb77e9e46b791ec39ba40ed0c8656a4ca..193c531b2c82495d015a2f844230a9dfd0dd89ad 100644 --- a/src/c_wrapper/buffer.h +++ b/src/c_wrapper/buffer.h @@ -17,7 +17,7 @@ public: {} #if PYOPENCL_CL_VERSION >= 0x1010 - PYOPENCL_USE_RESULT buffer *get_sub_region(size_t origin, size_t size, + PYOPENCL_USE_RESULT buffer *get_sub_region(size_t orig, size_t size, cl_mem_flags flags) const; #endif }; diff --git a/src/c_wrapper/error.h b/src/c_wrapper/error.h index d98e0b5aacb04d389ee0d2c308573d5cf22b2c22..4e8762627a3d8e6cccba8aa7c21a44173678fdb1 100644 --- a/src/c_wrapper/error.h +++ b/src/c_wrapper/error.h @@ -256,7 +256,7 @@ call_guarded_cleanup(cl_int (*func)(ArgTypes...), const char *name, #define pyopencl_call_guarded_cleanup(func, args...) \ pyopencl::call_guarded_cleanup(func, #func, args) -PYOPENCL_USE_RESULT static PYOPENCL_INLINE ::error* +PYOPENCL_USE_RESULT static PYOPENCL_INLINE error* c_handle_error(std::function<void()> func) noexcept { try { @@ -292,6 +292,12 @@ retry_mem_error(Func func) -> decltype(func()) return func(); } +PYOPENCL_USE_RESULT static PYOPENCL_INLINE error* +c_handle_retry_mem_error(std::function<void()> func) noexcept +{ + return c_handle_error([&] {retry_mem_error(func);}); +} + // }}} } diff --git a/src/c_wrapper/event.h b/src/c_wrapper/event.h index 2160b07cd999128ad998835fdb10ff16bd1071c9..17524b96ffe6e9556ead076f312ef70058006880 100644 --- a/src/c_wrapper/event.h +++ b/src/c_wrapper/event.h @@ -36,8 +36,7 @@ public: #endif }; static PYOPENCL_INLINE auto -event_out(clobj_t *ret) - -> decltype(pyopencl_outarg(event, ret, clReleaseEvent)) +event_out(clobj_t *ret) -> decltype(pyopencl_outarg(event, ret, clReleaseEvent)) { return pyopencl_outarg(event, ret, clReleaseEvent); } diff --git a/src/c_wrapper/function.h b/src/c_wrapper/function.h index 70f9909b7c87bbd0592e1234201c2abb8e715a38..cbb62e35317e06d3f3d3a86aac2178d358464f1d 100644 --- a/src/c_wrapper/function.h +++ b/src/c_wrapper/function.h @@ -105,8 +105,7 @@ public: } template<template<typename...> class Getter, typename Func> PYOPENCL_INLINE auto - call(Func func) - -> decltype(call_tuple(func, this->get<Getter>())) + call(Func func) -> decltype(call_tuple(func, this->get<Getter>())) { return call_tuple(func, this->get<Getter>()); } diff --git a/src/c_wrapper/image.cpp b/src/c_wrapper/image.cpp index 438f9a80b032b6403967f7c17fbd80da908d8429..e39bfa436e8caae354711096789770a5622d7288 100644 --- a/src/c_wrapper/image.cpp +++ b/src/c_wrapper/image.cpp @@ -59,21 +59,21 @@ image::get_image_info(cl_image_info param) const // command_queue &cq, // memory_object_holder &src, // memory_object_holder &dest, -// py::object py_origin, -// py::object py_region, +// py::object py_orig, +// py::object py_reg, // size_t offset, // py::object py_wait_for // ) // { // PYOPENCL_PARSE_WAIT_FOR; -// COPY_PY_COORD_TRIPLE(origin); -// COPY_PY_REGION_TRIPLE(region); +// COPY_PY_COORD_TRIPLE(orig); +// COPY_PY_REGION_TRIPLE(reg); // cl_event evt; // PYOPENCL_RETRY_IF_MEM_ERROR( // PYOPENCL_CALL_GUARDED(clEnqueueCopyImageToBuffer, ( // cq.data(), src.data(), dest.data(), -// origin, region, offset, +// orig, reg, offset, // PYOPENCL_WAITLIST_ARGS, &evt // )); // ); @@ -86,20 +86,20 @@ image::get_image_info(cl_image_info param) const // memory_object_holder &src, // memory_object_holder &dest, // size_t offset, -// py::object py_origin, -// py::object py_region, +// py::object py_orig, +// py::object py_reg, // py::object py_wait_for // ) // { // PYOPENCL_PARSE_WAIT_FOR; -// COPY_PY_COORD_TRIPLE(origin); -// COPY_PY_REGION_TRIPLE(region); +// COPY_PY_COORD_TRIPLE(orig); +// COPY_PY_REGION_TRIPLE(reg); // cl_event evt; // PYOPENCL_RETRY_IF_MEM_ERROR( // PYOPENCL_CALL_GUARDED(clEnqueueCopyBufferToImage, ( // cq.data(), src.data(), dest.data(), -// offset, origin, region, +// offset, orig, reg, // PYOPENCL_WAITLIST_ARGS, &evt // )); // ); @@ -118,15 +118,12 @@ using namespace pyopencl; error* create_image_2d(clobj_t *img, clobj_t _ctx, cl_mem_flags flags, cl_image_format *fmt, size_t width, size_t height, - size_t pitch, void *buffer) + size_t pitch, void *buf) { auto ctx = static_cast<context*>(_ctx); - return c_handle_error([&] { - auto mem = retry_mem_error([&] { - return pyopencl_call_guarded( - clCreateImage2D, ctx, flags, - fmt, width, height, pitch, buffer); - }); + return c_handle_retry_mem_error([&] { + auto mem = pyopencl_call_guarded(clCreateImage2D, ctx, flags, fmt, + width, height, pitch, buf); *img = new_image(mem, fmt); }); } @@ -134,15 +131,13 @@ create_image_2d(clobj_t *img, clobj_t _ctx, cl_mem_flags flags, error* create_image_3d(clobj_t *img, clobj_t _ctx, cl_mem_flags flags, cl_image_format *fmt, size_t width, size_t height, - size_t depth, size_t pitch_x, size_t pitch_y, void *buffer) + size_t depth, size_t pitch_x, size_t pitch_y, void *buf) { auto ctx = static_cast<context*>(_ctx); - return c_handle_error([&] { - auto mem = retry_mem_error([&] { - return pyopencl_call_guarded( - clCreateImage3D, ctx, flags, fmt, width, - height, depth, pitch_x, pitch_y, buffer); - }); + return c_handle_retry_mem_error([&] { + auto mem = pyopencl_call_guarded(clCreateImage3D, ctx, flags, fmt, + width, height, depth, pitch_x, + pitch_y, buf); *img = new_image(mem, fmt); }); } @@ -151,12 +146,12 @@ create_image_3d(clobj_t *img, clobj_t _ctx, cl_mem_flags flags, error* create_image_from_desc(clobj_t *img, clobj_t _ctx, cl_mem_flags flags, - cl_image_format *fmt, cl_image_desc *desc, void *buffer) + cl_image_format *fmt, cl_image_desc *desc, void *buf) { auto ctx = static_cast<context*>(_ctx); return c_handle_error([&] { auto mem = pyopencl_call_guarded(clCreateImage, ctx, flags, fmt, - desc, buffer); + desc, buf); *img = new_image(mem, fmt); }); } @@ -180,94 +175,80 @@ image__get_fill_type(clobj_t img) error* enqueue_read_image(clobj_t *evt, clobj_t _queue, clobj_t _mem, - const size_t *_origin, size_t origin_l, - const size_t *_region, size_t region_l, void *buffer, + const size_t *_orig, size_t orig_l, + const size_t *_reg, size_t reg_l, void *buf, size_t row_pitch, size_t slice_pitch, const clobj_t *_wait_for, uint32_t num_wait_for, - int is_blocking, void *pyobj) + 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 img = static_cast<image*>(_mem); - ConstBuffer<size_t, 3> origin(_origin, origin_l); - ConstBuffer<size_t, 3> region(_region, region_l, 1); - return c_handle_error([&] { - retry_mem_error([&] { - pyopencl_call_guarded( - clEnqueueReadImage, queue, img, - bool(is_blocking), origin, region, row_pitch, - slice_pitch, buffer, wait_for, - nanny_event_out(evt, pyobj)); - }); + 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(clEnqueueReadImage, queue, img, bool(block), + orig, reg, row_pitch, slice_pitch, buf, + wait_for, nanny_event_out(evt, pyobj)); }); } error* enqueue_copy_image(clobj_t *evt, clobj_t _queue, clobj_t _src, clobj_t _dst, - const size_t *_src_origin, size_t src_origin_l, - const size_t *_dst_origin, size_t dst_origin_l, - const size_t *_region, size_t region_l, + 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_origin(_src_origin, src_origin_l); - ConstBuffer<size_t, 3> dst_origin(_dst_origin, dst_origin_l); - ConstBuffer<size_t, 3> region(_region, region_l, 1); - return c_handle_error([&] { - retry_mem_error([&] { - pyopencl_call_guarded( - clEnqueueCopyImage, queue, src, dst, src_origin, - dst_origin, region, wait_for, event_out(evt)); - }); + 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)); }); } error* enqueue_write_image(clobj_t *evt, clobj_t _queue, clobj_t _mem, - const size_t *_origin, size_t origin_l, - const size_t *_region, size_t region_l, - const void *buffer, size_t row_pitch, size_t slice_pitch, + 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 is_blocking, void *pyobj) + 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> origin(_origin, origin_l); - ConstBuffer<size_t, 3> region(_region, region_l, 1); - return c_handle_error([&] { - retry_mem_error([&] { - pyopencl_call_guarded( - clEnqueueWriteImage, queue, img, - bool(is_blocking), origin, region, row_pitch, - slice_pitch, buffer, wait_for, - nanny_event_out(evt, pyobj)); - }); + 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)); }); } #if PYOPENCL_CL_VERSION >= 0x1020 error* enqueue_fill_image(clobj_t *evt, clobj_t _queue, clobj_t mem, - const void *color, const size_t *_origin, size_t origin_l, - const size_t *_region, size_t region_l, + const void *color, const size_t *_orig, size_t orig_l, + const size_t *_reg, size_t reg_l, const clobj_t *_wait_for, uint32_t num_wait_for) { // TODO debug color 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> origin(_origin, origin_l); - ConstBuffer<size_t, 3> region(_region, region_l, 1); - return c_handle_error([&] { - retry_mem_error([&] { - pyopencl_call_guarded( - clEnqueueFillImage, queue, img, color, origin, region, - wait_for, event_out(evt)); - }); + 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(clEnqueueFillImage, queue, img, color, orig, + reg, wait_for, event_out(evt)); }); } #endif diff --git a/src/c_wrapper/kernel.cpp b/src/c_wrapper/kernel.cpp index d8945b00038a1a49191394d88d211ccc1d54db8b..7de0343abed37a2d56f692e11b1334f6e3e36e7b 100644 --- a/src/c_wrapper/kernel.cpp +++ b/src/c_wrapper/kernel.cpp @@ -147,13 +147,10 @@ enqueue_nd_range_kernel(clobj_t *evt, clobj_t _queue, clobj_t _knl, auto queue = static_cast<command_queue*>(_queue); auto knl = static_cast<kernel*>(_knl); const auto wait_for = buf_from_class<event>(_wait_for, num_wait_for); - return c_handle_error([&] { - retry_mem_error([&] { - pyopencl_call_guarded( - clEnqueueNDRangeKernel, queue, knl, - work_dim, global_work_offset, global_work_size, - local_work_size, wait_for, event_out(evt)); - }); + return c_handle_retry_mem_error([&] { + pyopencl_call_guarded(clEnqueueNDRangeKernel, queue, knl, work_dim, + global_work_offset, global_work_size, + local_work_size, wait_for, event_out(evt)); }); } @@ -164,10 +161,8 @@ enqueue_task(clobj_t *evt, clobj_t _queue, clobj_t _knl, auto queue = static_cast<command_queue*>(_queue); auto knl = static_cast<kernel*>(_knl); const auto wait_for = buf_from_class<event>(_wait_for, num_wait_for); - return c_handle_error([&] { - retry_mem_error([&] { - pyopencl_call_guarded( - clEnqueueTask, queue, knl, wait_for, event_out(evt)); - }); + return c_handle_retry_mem_error([&] { + pyopencl_call_guarded(clEnqueueTask, queue, knl, wait_for, + event_out(evt)); }); } diff --git a/src/c_wrapper/memory_map.cpp b/src/c_wrapper/memory_map.cpp index c0332e9287de2b33f24628f4eb76b1ee1682a1b1..176027a2f7bc45debe6e1a567ef8f795925fe462 100644 --- a/src/c_wrapper/memory_map.cpp +++ b/src/c_wrapper/memory_map.cpp @@ -85,23 +85,20 @@ memory_map__data(clobj_t _map) error* enqueue_map_image(clobj_t *evt, clobj_t *map, clobj_t _queue, clobj_t _mem, - cl_map_flags flags, const size_t *_origin, size_t origin_l, - const size_t *_region, size_t region_l, size_t *row_pitch, + cl_map_flags flags, const size_t *_orig, size_t orig_l, + const size_t *_reg, size_t reg_l, size_t *row_pitch, size_t *slice_pitch, const clobj_t *_wait_for, uint32_t num_wait_for, int block) { 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> origin(_origin, origin_l); - ConstBuffer<size_t, 3> region(_region, region_l, 1); - return c_handle_error([&] { - void *res = retry_mem_error([&] { - return pyopencl_call_guarded( - clEnqueueMapImage, queue, img, bool(block), flags, - origin, region, row_pitch, slice_pitch, wait_for, - event_out(evt)); - }); + ConstBuffer<size_t, 3> orig(_orig, orig_l); + ConstBuffer<size_t, 3> reg(_reg, reg_l, 1); + return c_handle_retry_mem_error([&] { + void *res = pyopencl_call_guarded( + clEnqueueMapImage, queue, img, bool(block), flags, orig, + reg, row_pitch, slice_pitch, wait_for, event_out(evt)); *map = convert_memory_map(*evt, queue, img, res); }); } @@ -115,12 +112,10 @@ enqueue_map_buffer(clobj_t *evt, clobj_t *map, clobj_t _queue, clobj_t _mem, auto queue = static_cast<command_queue*>(_queue); auto buf = static_cast<buffer*>(_mem); const auto wait_for = buf_from_class<event>(_wait_for, num_wait_for); - return c_handle_error([&] { - void *res = retry_mem_error([&] { - return pyopencl_call_guarded( - clEnqueueMapBuffer, queue, buf, bool(block), - flags, offset, size, wait_for, event_out(evt)); - }); + return c_handle_retry_mem_error([&] { + void *res = pyopencl_call_guarded( + clEnqueueMapBuffer, queue, buf, bool(block), + flags, offset, size, wait_for, event_out(evt)); *map = convert_memory_map(*evt, queue, buf, res); }); } diff --git a/src/c_wrapper/utils.h b/src/c_wrapper/utils.h index 6bac71826085013e3bb472d47b0887e0a682f248..d500544c684e1bfd67e2ff654c683600a598da74 100644 --- a/src/c_wrapper/utils.h +++ b/src/c_wrapper/utils.h @@ -310,8 +310,7 @@ template<typename Buff> struct _ArgBufferConverter<Buff, enable_if_t<Buff::arg_type == ArgType::Length> > { static PYOPENCL_INLINE auto - convert(Buff &buff) - -> decltype(std::make_tuple(buff.len(), buff.get())) + convert(Buff &buff) -> decltype(std::make_tuple(buff.len(), buff.get())) { return std::make_tuple(buff.len(), buff.get()); } @@ -389,8 +388,7 @@ public: other.m_need_cleanup = false; } PYOPENCL_INLINE auto - convert() - -> decltype(m_arg.get()) + convert() -> decltype(m_arg.get()) { return m_arg.get(); }