diff --git a/setup.py b/setup.py index 7dc43026a67fbb467b78d096fb6c77f847e7a1f8..ff3d78da329711703d21ab00175b7fd568fa957c 100644 --- a/setup.py +++ b/setup.py @@ -43,6 +43,7 @@ def get_config_schema(): Switch("CL_TRACE", False, "Enable OpenCL API tracing"), Switch("CL_ENABLE_GL", False, "Enable OpenCL<->OpenGL interoperability"), Switch("CL_ENABLE_DEVICE_FISSION", True, "Enable device fission extension, if present"), + Option("CL_PRETEND_VERSION", None, "Dotted CL version (e.g. 1.2) which you'd like to use."), IncludeDir("CL", []), LibraryDir("CL", []), @@ -94,6 +95,13 @@ def main(): if conf["CL_ENABLE_DEVICE_FISSION"]: EXTRA_DEFINES["PYOPENCL_USE_DEVICE_FISSION"] = 1 + if conf["CL_PRETEND_VERSION"]: + try: + major, minor = [int(x) for x in conf["CL_PRETEND_VERSION"].split(".")] + EXTRA_DEFINES["PYOPENCL_PRETEND_CL_VERSION"] = 0x1000*major + 0x10 * minor + except: + print("CL_PRETEND_VERSION must be of the form M.N, with two integers M and N") + raise ver_dic = {} version_file = open("pyopencl/version.py") diff --git a/src/wrapper/wrap_cl.hpp b/src/wrapper/wrap_cl.hpp index d7cbc62fd4aeeab8524558b0f90153f51a21a693..e058d214c1f2aee22e1d1133f32deab465707dc7 100644 --- a/src/wrapper/wrap_cl.hpp +++ b/src/wrapper/wrap_cl.hpp @@ -55,6 +55,20 @@ #include "numpy_init.hpp" #include "tools.hpp" +#ifdef PYOPENCL_PRETEND_CL_VERSION +#define PYOPENCL_CL_VERSION PYOPENCL_PRETEND_CL_VERSION +#else + +#if defined(CL_VERSION_1_2) +#define PYOPENCL_CL_VERSION 0x1020 +#elif defined(CL_VERSION_1_1) +#define PYOPENCL_CL_VERSION 0x1010 +#else +#define PYOPENCL_CL_VERSION 0x1000 +#endif + +#endif + // }}} @@ -82,7 +96,7 @@ EXTRA_MSG); \ } -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 #define PYOPENCL_GET_EXT_FUN(PLATFORM, NAME, VAR) \ NAME##_fn VAR \ @@ -337,13 +351,10 @@ namespace pyopencl inline py::tuple get_cl_header_version() { -#if defined(CL_VERSION_1_2) - return py::make_tuple(1, 2); -#elif defined(CL_VERSION_1_1) - return py::make_tuple(1, 1); -#else - return py::make_tuple(1, 0); -#endif + return py::make_tuple( + PYOPENCL_CL_VERSION >> (3*4), + PYOPENCL_CL_VERSION >> (1*4) + ); } // {{{ platform @@ -424,7 +435,7 @@ namespace pyopencl enum reference_type_t { REF_NOT_OWNABLE, REF_FISSION_EXT, -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 REF_CL_1_2, #endif }; @@ -447,7 +458,7 @@ namespace pyopencl #if (defined(cl_ext_device_fission) && defined(PYOPENCL_USE_DEVICE_FISSION)) else if (ref_type == REF_FISSION_EXT) { -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 cl_platform_id plat; PYOPENCL_CALL_GUARDED(clGetDeviceInfo, (m_device, CL_DEVICE_PLATFORM, sizeof(plat), &plat, NULL)); @@ -460,7 +471,7 @@ namespace pyopencl } #endif -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 else if (ref_type == REF_CL_1_2) { PYOPENCL_CALL_GUARDED(clRetainDevice, (did)); @@ -480,7 +491,7 @@ namespace pyopencl #if defined(cl_ext_device_fission) && defined(PYOPENCL_USE_DEVICE_FISSION) else if (m_ref_type == REF_FISSION_EXT) { -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 cl_platform_id plat; PYOPENCL_CALL_GUARDED(clGetDeviceInfo, (m_device, CL_DEVICE_PLATFORM, sizeof(plat), &plat, NULL)); @@ -493,7 +504,7 @@ namespace pyopencl } #endif -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 else if (m_ref_type == REF_CL_1_2) PYOPENCL_CALL_GUARDED(clReleaseDevice, (m_device)); #endif @@ -589,7 +600,7 @@ namespace pyopencl case CL_DEVICE_PLATFORM: PYOPENCL_GET_OPAQUE_INFO(Device, m_device, param_name, cl_platform_id, platform); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 case CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF: DEV_GET_INT_INF(cl_uint); case CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR: DEV_GET_INT_INF(cl_uint); @@ -628,7 +639,7 @@ namespace pyopencl } case CL_DEVICE_REFERENCE_COUNT_EXT: DEV_GET_INT_INF(cl_uint); #endif -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 case CL_DEVICE_LINKER_AVAILABLE: DEV_GET_INT_INF(cl_bool); case CL_DEVICE_BUILT_IN_KERNELS: PYOPENCL_GET_STR_INFO(Device, m_device, param_name); @@ -660,7 +671,7 @@ namespace pyopencl } } -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 py::list create_sub_devices(py::object py_properties) { std::vector properties; @@ -695,7 +706,7 @@ namespace pyopencl { std::vector properties; -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 cl_platform_id plat; PYOPENCL_CALL_GUARDED(clGetDeviceInfo, (m_device, CL_DEVICE_PLATFORM, sizeof(plat), &plat, NULL)); @@ -854,7 +865,7 @@ namespace pyopencl return py_result; } -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 case CL_CONTEXT_NUM_DEVICES: PYOPENCL_GET_INTEGRAL_INFO( Context, m_context, param_name, cl_uint); @@ -1108,7 +1119,7 @@ namespace pyopencl } } -#ifndef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION < 0x1010 cl_command_queue_properties set_property( cl_command_queue_properties prop, bool enable) @@ -1178,7 +1189,7 @@ namespace pyopencl case CL_EVENT_REFERENCE_COUNT: PYOPENCL_GET_INTEGRAL_INFO(Event, m_event, param_name, cl_uint); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 case CL_EVENT_CONTEXT: PYOPENCL_GET_OPAQUE_INFO(Event, m_event, param_name, cl_context, context); @@ -1268,7 +1279,7 @@ namespace pyopencl PYOPENCL_PARSE_WAIT_FOR; cl_event evt; -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 PYOPENCL_CALL_GUARDED(clEnqueueMarkerWithWaitList, ( cq.data(), PYOPENCL_WAITLIST_ARGS, &evt)); #else @@ -1295,7 +1306,7 @@ namespace pyopencl PYOPENCL_PARSE_WAIT_FOR; cl_event evt; -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 PYOPENCL_CALL_GUARDED(clEnqueueBarrierWithWaitList, (cq.data(), PYOPENCL_WAITLIST_ARGS, &evt)); @@ -1337,7 +1348,7 @@ namespace pyopencl -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 class user_event : public event { public: @@ -1462,7 +1473,7 @@ namespace pyopencl }; -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 inline event *enqueue_migrate_mem_objects( command_queue &cq, @@ -1497,7 +1508,7 @@ namespace pyopencl { PYOPENCL_PARSE_WAIT_FOR; -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 // {{{ get platform cl_device_id dev; PYOPENCL_CALL_GUARDED(clGetCommandQueueInfo, (cq.data(), CL_QUEUE_DEVICE, @@ -1585,7 +1596,7 @@ namespace pyopencl : memory_object(mem, retain, hostbuf) { } -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 buffer *get_sub_region( size_t origin, size_t size, cl_mem_flags flags) const { @@ -1795,7 +1806,7 @@ namespace pyopencl // }}} // {{{ rectangular transfers -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 inline event *enqueue_read_buffer_rect( command_queue &cq, @@ -1923,7 +1934,7 @@ namespace pyopencl // }}} -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 inline event *enqueue_fill_buffer( command_queue &cq, @@ -1977,12 +1988,12 @@ namespace pyopencl case CL_IMAGE_WIDTH: case CL_IMAGE_HEIGHT: case CL_IMAGE_DEPTH: -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 case CL_IMAGE_ARRAY_SIZE: #endif PYOPENCL_GET_INTEGRAL_INFO(Image, data(), param_name, size_t); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 case CL_IMAGE_BUFFER: { cl_mem param_value; @@ -2215,7 +2226,7 @@ namespace pyopencl } } -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 inline image *create_image_from_desc( @@ -2424,7 +2435,7 @@ namespace pyopencl // }}} -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 inline event *enqueue_fill_image( command_queue &cq, @@ -2810,7 +2821,7 @@ namespace pyopencl return py_result; } // }}} -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 case CL_PROGRAM_NUM_KERNELS: PYOPENCL_GET_INTEGRAL_INFO(Program, m_program, param_name, size_t); @@ -2838,7 +2849,7 @@ namespace pyopencl case CL_PROGRAM_BUILD_LOG: PYOPENCL_GET_STR_INFO(ProgramBuild, PYOPENCL_FIRST_ARG, param_name); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 case CL_PROGRAM_BINARY_TYPE: PYOPENCL_GET_INTEGRAL_INFO(ProgramBuild, PYOPENCL_FIRST_ARG, param_name, @@ -2860,7 +2871,7 @@ namespace pyopencl options.c_str(), 0 ,0)); } -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 void compile(std::string options, py::object py_devices, py::object py_headers) { @@ -2995,7 +3006,7 @@ namespace pyopencl -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 inline program *create_program_with_built_in_kernels( context &ctx, @@ -3077,7 +3088,7 @@ namespace pyopencl PYOPENCL_CALL_GUARDED(clUnloadCompiler, ()); } -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 inline void unload_platform_compiler(platform &plat) { @@ -3237,7 +3248,7 @@ namespace pyopencl case CL_KERNEL_PROGRAM: PYOPENCL_GET_OPAQUE_INFO(Kernel, m_kernel, param_name, cl_program, program); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 case CL_KERNEL_ATTRIBUTES: PYOPENCL_GET_STR_INFO(Kernel, m_kernel, param_name); #endif @@ -3267,14 +3278,14 @@ namespace pyopencl PYOPENCL_RETURN_VECTOR(size_t, result); } case CL_KERNEL_LOCAL_MEM_SIZE: -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 case CL_KERNEL_PRIVATE_MEM_SIZE: #endif PYOPENCL_GET_INTEGRAL_INFO(KernelWorkGroup, PYOPENCL_FIRST_ARG, param_name, cl_ulong); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 case CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE: PYOPENCL_GET_INTEGRAL_INFO(KernelWorkGroup, PYOPENCL_FIRST_ARG, param_name, @@ -3286,7 +3297,7 @@ namespace pyopencl } } -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 py::object get_arg_info( cl_uint arg_index, cl_kernel_arg_info param_name @@ -3639,7 +3650,7 @@ namespace pyopencl func_ptr_type func_ptr; -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 if (py_platform.ptr() != Py_None) { platform &plat = py::extract(py_platform); @@ -3724,7 +3735,7 @@ namespace pyopencl new buffer(mem, /*retain*/ true))); case CL_MEM_OBJECT_IMAGE2D: case CL_MEM_OBJECT_IMAGE3D: -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 case CL_MEM_OBJECT_IMAGE2D_ARRAY: case CL_MEM_OBJECT_IMAGE1D: case CL_MEM_OBJECT_IMAGE1D_ARRAY: @@ -3772,7 +3783,7 @@ namespace pyopencl PYOPENCL_GET_OPAQUE_INFO(MemObject, data(), param_name, cl_context, context); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 case CL_MEM_ASSOCIATED_MEMOBJECT: { cl_mem param_value; diff --git a/src/wrapper/wrap_cl_part_1.cpp b/src/wrapper/wrap_cl_part_1.cpp index 10eaf0f682d39fe628ecec1eca3989628705b5b0..c97d907bb2dc56ec9d6c9768eefd98103b9d6ea9 100644 --- a/src/wrapper/wrap_cl_part_1.cpp +++ b/src/wrapper/wrap_cl_part_1.cpp @@ -42,7 +42,7 @@ void pyopencl_expose_part_1() #if defined(cl_ext_device_fission) && defined(PYOPENCL_USE_DEVICE_FISSION) .DEF_SIMPLE_METHOD(create_sub_devices_ext) #endif -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 .DEF_SIMPLE_METHOD(create_sub_devices) #endif ; @@ -80,7 +80,7 @@ void pyopencl_expose_part_1() const device *, cl_command_queue_properties> ((py::arg("context"), py::arg("device")=py::object(), py::arg("properties")=0))) .DEF_SIMPLE_METHOD(get_info) -#ifndef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION < 0x1010 .DEF_SIMPLE_METHOD(set_property) #endif .DEF_SIMPLE_METHOD(flush) @@ -124,7 +124,7 @@ void pyopencl_expose_part_1() DEF_SIMPLE_FUNCTION(enqueue_wait_for_events); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 { typedef user_event cls; py::class_, boost::noncopyable>("UserEvent", py::no_init) @@ -164,7 +164,7 @@ void pyopencl_expose_part_1() ; } -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 py::def("enqueue_migrate_mem_objects", enqueue_migrate_mem_objects, (py::args("queue", "mem_objects"), py::arg("flags")=0, @@ -194,7 +194,7 @@ void pyopencl_expose_part_1() py::arg("size")=0, py::arg("hostbuf")=py::object() ))) -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 .def("get_sub_region", &cls::get_sub_region, (py::args("origin", "size"), py::arg("flags")=0), py::return_value_policy()) @@ -236,7 +236,7 @@ void pyopencl_expose_part_1() // {{{ rectangular -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 py::def("_enqueue_read_buffer_rect", enqueue_read_buffer_rect, (py::args("queue", "mem", "hostbuf", "buffer_origin", "host_origin", "region"), @@ -269,7 +269,7 @@ void pyopencl_expose_part_1() // }}} -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 py::def("enqueue_fill_buffer", enqueue_fill_buffer, (py::args("queue", "mem", "pattern", "offset", "size"), py::arg("wait_for")=py::object()), diff --git a/src/wrapper/wrap_cl_part_2.cpp b/src/wrapper/wrap_cl_part_2.cpp index 9e23cca5e4afd74d60d7ccbbcd61c95228004042..3205c2e1f52938799a3fa3c48492c69e231da6dc 100644 --- a/src/wrapper/wrap_cl_part_2.cpp +++ b/src/wrapper/wrap_cl_part_2.cpp @@ -4,7 +4,7 @@ namespace pyopencl { -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 py::object image_desc_dummy_getter(cl_image_desc &desc) { return py::object(); @@ -49,7 +49,7 @@ void pyopencl_expose_part_2() { // {{{ image -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 { typedef cl_image_desc cls; py::class_("ImageDescriptor") @@ -75,7 +75,7 @@ void pyopencl_expose_part_2() py::arg("pitches")=py::object(), py::arg("hostbuf")=py::object() ))) -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 .def("__init__", make_constructor(create_image_from_desc, py::default_call_policies(), (py::args("context", "flags", "format", "desc"), @@ -129,7 +129,7 @@ void pyopencl_expose_part_2() py::arg("wait_for")=py::object()), py::return_value_policy()); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 py::def("enqueue_fill_image", enqueue_write_image, (py::args("queue", "mem", "color", "origin", "region"), py::arg("wait_for")=py::object()), @@ -196,7 +196,7 @@ void pyopencl_expose_part_2() create_program_with_binary, py::default_call_policies(), py::args("context", "devices", "binaries"))) -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 .def("create_with_built_in_kernels", create_program_with_built_in_kernels, py::args("context", "devices", "kernel_names"), @@ -208,7 +208,7 @@ void pyopencl_expose_part_2() .DEF_SIMPLE_METHOD(get_build_info) .def("_build", &cls::build, (py::arg("options")="", py::arg("devices")=py::object())) -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 .def("compile", &cls::compile, (py::arg("options")="", py::arg("devices")=py::object(), py::arg("headers")=py::list())) @@ -229,7 +229,7 @@ void pyopencl_expose_part_2() } py::def("unload_compiler", unload_compiler); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 py::def("unload_platform_compiler", unload_platform_compiler); #endif @@ -244,7 +244,7 @@ void pyopencl_expose_part_2() .DEF_SIMPLE_METHOD(get_info) .DEF_SIMPLE_METHOD(get_work_group_info) .DEF_SIMPLE_METHOD(set_arg) -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 .DEF_SIMPLE_METHOD(get_arg_info) #endif .add_property("obj_ptr", &cls::obj_ptr) diff --git a/src/wrapper/wrap_constants.cpp b/src/wrapper/wrap_constants.cpp index 0428206b70aceb786d1d74c67f27358e08140fe2..5f818bf68273a3693ccb87dac2f5b0698b9f0ea2 100644 --- a/src/wrapper/wrap_constants.cpp +++ b/src/wrapper/wrap_constants.cpp @@ -186,13 +186,13 @@ void pyopencl_expose_constants() ADD_ATTR(, INVALID_GL_SHAREGROUP_REFERENCE_KHR); #endif -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 ADD_ATTR(, MISALIGNED_SUB_BUFFER_OFFSET); ADD_ATTR(, EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST); ADD_ATTR(, INVALID_GLOBAL_WORK_SIZE); #endif -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(, COMPILE_PROGRAM_FAILURE); ADD_ATTR(, LINKER_NOT_AVAILABLE); ADD_ATTR(, LINK_PROGRAM_FAILURE); @@ -228,7 +228,7 @@ void pyopencl_expose_constants() ADD_ATTR(DEVICE_TYPE_, CPU); ADD_ATTR(DEVICE_TYPE_, GPU); ADD_ATTR(DEVICE_TYPE_, ACCELERATOR); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(DEVICE_TYPE_, CUSTOM); #endif ADD_ATTR(DEVICE_TYPE_, ALL); @@ -293,7 +293,7 @@ void pyopencl_expose_constants() ADD_ATTR(DEVICE_, VERSION); ADD_ATTR(DEVICE_, EXTENSIONS); ADD_ATTR(DEVICE_, PLATFORM); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 ADD_ATTR(DEVICE_, PREFERRED_VECTOR_WIDTH_HALF); ADD_ATTR(DEVICE_, HOST_UNIFIED_MEMORY); ADD_ATTR(DEVICE_, NATIVE_VECTOR_WIDTH_CHAR); @@ -326,7 +326,7 @@ void pyopencl_expose_constants() ADD_ATTR(DEVICE_, REFERENCE_COUNT_EXT); ADD_ATTR(DEVICE_, PARTITION_STYLE_EXT); #endif -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(DEVICE_, LINKER_AVAILABLE); ADD_ATTR(DEVICE_, BUILT_IN_KERNELS); ADD_ATTR(DEVICE_, IMAGE_MAX_BUFFER_SIZE); @@ -350,10 +350,10 @@ void pyopencl_expose_constants() ADD_ATTR(FP_, ROUND_TO_ZERO); ADD_ATTR(FP_, ROUND_TO_INF); ADD_ATTR(FP_, FMA); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 ADD_ATTR(FP_, SOFT_FLOAT); #endif -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(FP_, CORRECTLY_ROUNDED_DIVIDE_SQRT); #endif } @@ -394,10 +394,10 @@ void pyopencl_expose_constants() ADD_ATTR(CONTEXT_, REFERENCE_COUNT); ADD_ATTR(CONTEXT_, DEVICES); ADD_ATTR(CONTEXT_, PROPERTIES); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 ADD_ATTR(CONTEXT_, NUM_DEVICES); #endif -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(CONTEXT_, INTEROP_USER_SYNC); #endif } @@ -448,7 +448,7 @@ void pyopencl_expose_constants() #ifdef cl_amd_device_memory_flags ADD_ATTR(MEM_, USE_PERSISTENT_MEM_AMD); #endif -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(MEM_, HOST_WRITE_ONLY); ADD_ATTR(MEM_, HOST_READ_ONLY); ADD_ATTR(MEM_, HOST_NO_ACCESS); @@ -466,7 +466,7 @@ void pyopencl_expose_constants() ADD_ATTR( , BGRA); ADD_ATTR( , INTENSITY); ADD_ATTR( , LUMINANCE); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 ADD_ATTR( , Rx); ADD_ATTR( , RGx); ADD_ATTR( , RGBx); @@ -497,7 +497,7 @@ void pyopencl_expose_constants() ADD_ATTR(MEM_OBJECT_, BUFFER); ADD_ATTR(MEM_OBJECT_, IMAGE2D); ADD_ATTR(MEM_OBJECT_, IMAGE3D); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(MEM_OBJECT_, IMAGE2D_ARRAY); ADD_ATTR(MEM_OBJECT_, IMAGE1D); ADD_ATTR(MEM_OBJECT_, IMAGE1D_ARRAY); @@ -514,7 +514,7 @@ void pyopencl_expose_constants() ADD_ATTR(MEM_, MAP_COUNT); ADD_ATTR(MEM_, REFERENCE_COUNT); ADD_ATTR(MEM_, CONTEXT); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 ADD_ATTR(MEM_, ASSOCIATED_MEMOBJECT); ADD_ATTR(MEM_, OFFSET); #endif @@ -529,7 +529,7 @@ void pyopencl_expose_constants() ADD_ATTR(IMAGE_, WIDTH); ADD_ATTR(IMAGE_, HEIGHT); ADD_ATTR(IMAGE_, DEPTH); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(IMAGE_, ARRAY_SIZE); ADD_ATTR(IMAGE_, BUFFER); ADD_ATTR(IMAGE_, NUM_MIP_LEVELS); @@ -543,7 +543,7 @@ void pyopencl_expose_constants() ADD_ATTR(ADDRESS_, CLAMP_TO_EDGE); ADD_ATTR(ADDRESS_, CLAMP); ADD_ATTR(ADDRESS_, REPEAT); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 ADD_ATTR(ADDRESS_, MIRRORED_REPEAT); #endif } @@ -567,7 +567,7 @@ void pyopencl_expose_constants() py::class_ cls("map_flags", py::no_init); ADD_ATTR(MAP_, READ); ADD_ATTR(MAP_, WRITE); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(MAP_, WRITE_INVALIDATE_REGION); #endif } @@ -581,7 +581,7 @@ void pyopencl_expose_constants() ADD_ATTR(PROGRAM_, SOURCE); ADD_ATTR(PROGRAM_, BINARY_SIZES); ADD_ATTR(PROGRAM_, BINARIES); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(PROGRAM_, NUM_KERNELS); ADD_ATTR(PROGRAM_, KERNEL_NAMES); #endif @@ -592,14 +592,14 @@ void pyopencl_expose_constants() ADD_ATTR(PROGRAM_BUILD_, STATUS); ADD_ATTR(PROGRAM_BUILD_, OPTIONS); ADD_ATTR(PROGRAM_BUILD_, LOG); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(PROGRAM_, BINARY_TYPE); #endif } { py::class_ cls("program_binary_type", py::no_init); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(PROGRAM_BINARY_TYPE_, NONE); ADD_ATTR(PROGRAM_BINARY_TYPE_, COMPILED_OBJECT); ADD_ATTR(PROGRAM_BINARY_TYPE_, LIBRARY); @@ -614,14 +614,14 @@ void pyopencl_expose_constants() ADD_ATTR(KERNEL_, REFERENCE_COUNT); ADD_ATTR(KERNEL_, CONTEXT); ADD_ATTR(KERNEL_, PROGRAM); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(KERNEL_, ATTRIBUTES); #endif } { py::class_ cls("kernel_arg_info", py::no_init); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(KERNEL_ARG_, ADDRESS_QUALIFIER); ADD_ATTR(KERNEL_ARG_, ACCESS_QUALIFIER); ADD_ATTR(KERNEL_ARG_, TYPE_NAME); @@ -632,7 +632,7 @@ void pyopencl_expose_constants() { py::class_ cls( "kernel_arg_address_qualifier", py::no_init); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(KERNEL_ARG_ADDRESS_, GLOBAL); ADD_ATTR(KERNEL_ARG_ADDRESS_, LOCAL); ADD_ATTR(KERNEL_ARG_ADDRESS_, CONSTANT); @@ -643,7 +643,7 @@ void pyopencl_expose_constants() { py::class_ cls( "kernel_arg_access_qualifier", py::no_init); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(KERNEL_ARG_ACCESS_, READ_ONLY); ADD_ATTR(KERNEL_ARG_ACCESS_, WRITE_ONLY); ADD_ATTR(KERNEL_ARG_ACCESS_, READ_WRITE); @@ -656,11 +656,11 @@ void pyopencl_expose_constants() ADD_ATTR(KERNEL_, WORK_GROUP_SIZE); ADD_ATTR(KERNEL_, COMPILE_WORK_GROUP_SIZE); ADD_ATTR(KERNEL_, LOCAL_MEM_SIZE); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 ADD_ATTR(KERNEL_, PREFERRED_WORK_GROUP_SIZE_MULTIPLE); ADD_ATTR(KERNEL_, PRIVATE_MEM_SIZE); #endif -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(KERNEL_, GLOBAL_WORK_SIZE); #endif } @@ -671,7 +671,7 @@ void pyopencl_expose_constants() ADD_ATTR(EVENT_, COMMAND_TYPE); ADD_ATTR(EVENT_, REFERENCE_COUNT); ADD_ATTR(EVENT_, COMMAND_EXECUTION_STATUS); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 ADD_ATTR(EVENT_, CONTEXT); #endif } @@ -695,7 +695,7 @@ void pyopencl_expose_constants() ADD_ATTR(COMMAND_, MARKER); ADD_ATTR(COMMAND_, ACQUIRE_GL_OBJECTS); ADD_ATTR(COMMAND_, RELEASE_GL_OBJECTS); -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 ADD_ATTR(COMMAND_, READ_BUFFER_RECT); ADD_ATTR(COMMAND_, WRITE_BUFFER_RECT); ADD_ATTR(COMMAND_, COPY_BUFFER_RECT); @@ -704,7 +704,7 @@ void pyopencl_expose_constants() #ifdef cl_ext_migrate_memobject ADD_ATTR(COMMAND_, MIGRATE_MEM_OBJECT_EXT); #endif -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(COMMAND_, BARRIER); ADD_ATTR(COMMAND_, MIGRATE_MEM_OBJECTS); ADD_ATTR(COMMAND_, FILL_BUFFER); @@ -729,7 +729,7 @@ void pyopencl_expose_constants() } /* not needed--filled in automatically by implementation. -#ifdef CL_VERSION_1_1 +#if PYOPENCL_CL_VERSION >= 0x1010 { py::class_ cls("buffer_create_type", py::no_init); ADD_ATTR(BUFFER_CREATE_TYPE_, REGION); @@ -740,7 +740,7 @@ void pyopencl_expose_constants() { py::class_ cls( "mem_migration_flags", py::no_init); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(MIGRATE_MEM_OBJECT_, HOST); ADD_ATTR(MIGRATE_MEM_OBJECT_, CONTENT_UNDEFINED); #endif @@ -775,7 +775,7 @@ void pyopencl_expose_constants() { py::class_ cls( "device_partition_property", py::no_init); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(DEVICE_PARTITION_, EQUALLY); ADD_ATTR(DEVICE_PARTITION_, BY_COUNTS); ADD_ATTR(DEVICE_PARTITION_, BY_COUNTS_LIST_END); @@ -785,7 +785,7 @@ void pyopencl_expose_constants() { py::class_ cls("device_affinity_domain", py::no_init); -#ifdef CL_VERSION_1_2 +#if PYOPENCL_CL_VERSION >= 0x1020 ADD_ATTR(DEVICE_AFFINITY_DOMAIN_, NUMA); ADD_ATTR(DEVICE_AFFINITY_DOMAIN_, L4_CACHE); ADD_ATTR(DEVICE_AFFINITY_DOMAIN_, L3_CACHE);