diff --git a/src/c_wrapper/device.cpp b/src/c_wrapper/device.cpp index 49e27e2cddc58106ec25ac65a5381de00426b26e..c395b62bdf3865725ad698288db75e0ddca63896 100644 --- a/src/c_wrapper/device.cpp +++ b/src/c_wrapper/device.cpp @@ -10,6 +10,15 @@ template void print_clobj<device>(std::ostream&, const device*); template void print_buf<cl_device_id>(std::ostream&, const cl_device_id*, size_t, ArgType, bool, bool); +void +device::get_version(cl_device_id dev, int *major, int *minor) +{ + cl_platform_id plat; + pyopencl_call_guarded(clGetDeviceInfo, dev, CL_DEVICE_PLATFORM, + size_arg(plat), nullptr); + platform::get_version(plat, major, minor); +} + device::~device() { if (false) { diff --git a/src/c_wrapper/device.h b/src/c_wrapper/device.h index 274e972d9e2f3dba031e3fcb89e7cd240daf7ae7..970047d1c0ad58e9f3ff2a814f4b4323e23556cf 100644 --- a/src/c_wrapper/device.h +++ b/src/c_wrapper/device.h @@ -26,6 +26,7 @@ private: reference_type_t m_ref_type; public: + static void get_version(cl_device_id dev, int *major, int *minor); device(cl_device_id did, bool retain=false, reference_type_t ref_type=REF_NOT_OWNABLE) : clobj(did), m_ref_type(ref_type) diff --git a/src/c_wrapper/platform.cpp b/src/c_wrapper/platform.cpp index 20e36bcfd6995a4c825861437140ea39ca7d8d42..28b123c838276063d134decf32017a6b2e228875 100644 --- a/src/c_wrapper/platform.cpp +++ b/src/c_wrapper/platform.cpp @@ -34,7 +34,7 @@ platform::get_info(cl_uint param_name) const static const std::regex ver_regex("^OpenCL ([0-9]+)\\.([0-9]+).*"); void -get_platform_version(cl_platform_id plat, int *major, int *minor) +platform::get_version(cl_platform_id plat, int *major, int *minor) { char s_buff[128]; size_t size; diff --git a/src/c_wrapper/platform.h b/src/c_wrapper/platform.h index 1c47123af51ad25cc3011053c0b34ac79d4d8f3c..f399392a74489ca6a79d1eb45eb82a9358dbc3b0 100644 --- a/src/c_wrapper/platform.h +++ b/src/c_wrapper/platform.h @@ -15,6 +15,7 @@ extern template void print_buf<cl_platform_id>( class platform : public clobj<cl_platform_id> { public: + static void get_version(cl_platform_id plat, int *major, int *minor); using clobj::clobj; PYOPENCL_DEF_CL_CLASS(PLATFORM); @@ -23,8 +24,6 @@ public: extern template void print_clobj<platform>(std::ostream&, const platform*); -void get_platform_version(cl_platform_id plat, int *major, int *minor); - // }}} }