From be9fd38f6fd85651422817e27dd1636788c374ad Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Fri, 15 Jan 2021 14:22:41 -0600 Subject: [PATCH] Create special-case set_arg wrappers for common integer/float types --- src/wrap_cl.hpp | 7 +++++++ src/wrap_cl_part_2.cpp | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/wrap_cl.hpp b/src/wrap_cl.hpp index ad5b7ab8..7ffcc983 100644 --- a/src/wrap_cl.hpp +++ b/src/wrap_cl.hpp @@ -4343,6 +4343,13 @@ namespace pyopencl sizeof(cl_mem), &m)); } + template <typename T> + void set_arg_pod(cl_uint arg_index, T pod_value) + { + PYOPENCL_CALL_GUARDED(clSetKernelArg, (m_kernel, arg_index, + sizeof(T), &pod_value)); + } + void set_arg_mem(cl_uint arg_index, memory_object_holder &moh) { cl_mem m = moh.data(); diff --git a/src/wrap_cl_part_2.cpp b/src/wrap_cl_part_2.cpp index e68c7851..2c986718 100644 --- a/src/wrap_cl_part_2.cpp +++ b/src/wrap_cl_part_2.cpp @@ -467,6 +467,13 @@ void pyopencl_expose_part_2(py::module &m) #endif .def("_set_arg_null", &cls::set_arg_null) .def("_set_arg_buf", &cls::set_arg_buf) + .def("_set_arg_mem", &cls::set_arg_mem) + .def("_set_arg_i32", &cls::set_arg_pod<int32_t>) + .def("_set_arg_i64", &cls::set_arg_pod<int64_t>) + .def("_set_arg_u32", &cls::set_arg_pod<uint32_t>) + .def("_set_arg_u64", &cls::set_arg_pod<uint64_t>) + .def("_set_arg_f32", &cls::set_arg_pod<float>) + .def("_set_arg_f64", &cls::set_arg_pod<double>) #if PYOPENCL_CL_VERSION >= 0x2000 .def("_set_arg_svm", &cls::set_arg_svm) #endif -- GitLab