diff --git a/doc/make_constants.py b/doc/make_constants.py index f4e540c6671f4ef87aa1d5a2a2aa330eff6e0dde..5bb8186f265dbeb090b9c9654f7d156b1593e086 100644 --- a/doc/make_constants.py +++ b/doc/make_constants.py @@ -1,19 +1,10 @@ import pyopencl as cl -devi = cl.device_info -ctxi = cl.context_info -ctxp = cl.context_properties -fpc = cl.device_fp_config -cho = cl.channel_order -wgi = cl.kernel_work_group_info -iam = cl.addressing_mode -evi = cl.event_info -memi = cl.mem_info -ctype = cl.command_type -memf = cl.mem_flags -dppe = cl.device_partition_property_ext -ade = cl.affinity_domain_ext -mof = cl.migrate_mem_object_flags_ext +fission = ("cl_ext_device_fission", "2011.1") +nv_devattr = ("cl_nv_device_attribute_query", "0.92") +gl_sharing = ("cl_khr_gl_sharing", "0.92") +cl_11 = ("CL_1.1", "0.92") +cl_12 = ("CL_1.2", "2011.2") def get_extra_lines(tup): ext_name, pyopencl_ver = tup @@ -36,133 +27,251 @@ def get_extra_lines(tup): yield "" const_ext_lookup = { - devi: { - getattr(devi, "PLATFORM_NOT_FOUND_KHR", None): - ("cl_khr_icd", "2011.1"), - - getattr(devi, "PREFERRED_VECTOR_WIDTH_HALF", None): ("CL_1.1", "0.92"), - getattr(devi, "HOST_UNIFIED_MEMORY", None): ("CL_1.1", "0.92"), - getattr(devi, "NATIVE_VECTOR_WIDTH_CHAR", None): ("CL_1.1", "0.92"), - getattr(devi, "NATIVE_VECTOR_WIDTH_SHORT", None): ("CL_1.1", "0.92"), - getattr(devi, "NATIVE_VECTOR_WIDTH_INT", None): ("CL_1.1", "0.92"), - getattr(devi, "NATIVE_VECTOR_WIDTH_LONG", None): ("CL_1.1", "0.92"), - getattr(devi, "NATIVE_VECTOR_WIDTH_FLOAT", None): ("CL_1.1", "0.92"), - getattr(devi, "NATIVE_VECTOR_WIDTH_DOUBLE", None): ("CL_1.1", "0.92"), - getattr(devi, "NATIVE_VECTOR_WIDTH_HALF", None): ("CL_1.1", "0.92"), - getattr(devi, "OPENCL_C_VERSION", None): ("CL_1.1", "0.92"), - getattr(devi, "COMPUTE_CAPABILITY_MAJOR_NV", None): - ("cl_nv_device_attribute_query", "0.92"), - getattr(devi, "COMPUTE_CAPABILITY_MINOR_NV", None): - ("cl_nv_device_attribute_query", "0.92"), - getattr(devi, "REGISTERS_PER_BLOCK_NV", None): - ("cl_nv_device_attribute_query", "0.92"), - getattr(devi, "WARP_SIZE_NV", None): - ("cl_nv_device_attribute_query", "0.92"), - getattr(devi, "GPU_OVERLAP_NV", None): - ("cl_nv_device_attribute_query", "0.92"), - getattr(devi, "KERNEL_EXEC_TIMEOUT_NV", None): - ("cl_nv_device_attribute_query", "0.92"), - getattr(devi, "INTEGRATED_MEMORY_NV", None): - ("cl_nv_device_attribute_query", "0.92"), - - getattr(devi, "DOUBLE_FP_CONFIG", None): + cl.status_code: { + "PLATFORM_NOT_FOUND_KHR": ("cl_khr_icd", "2011.1"), + + "INVALID_GL_SHAREGROUP_REFERENCE_KHR": gl_sharing, + + "MISALIGNED_SUB_BUFFER_OFFSET": cl_11, + "EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST": cl_11, + "INVALID_GLOBAL_WORK_SIZE": cl_11, + + "COMPILE_PROGRAM_FAILURE": cl_12, + "LINKER_NOT_AVAILABLE": cl_12, + "LINK_PROGRAM_FAILURE": cl_12, + "DEVICE_PARTITION_FAILED": cl_12, + "KERNEL_ARG_INFO_NOT_AVAILABLE": cl_12, + "INVALID_IMAGE_DESCRIPTOR": cl_12, + "INVALID_COMPILER_OPTIONS": cl_12, + "INVALID_LINKER_OPTIONS": cl_12, + "INVALID_DEVICE_PARTITION_COUNT": cl_12, + + }, + + cl.device_info: { + "PREFERRED_VECTOR_WIDTH_HALF": cl_11, + "HOST_UNIFIED_MEMORY": cl_11, + "NATIVE_VECTOR_WIDTH_CHAR": cl_11, + "NATIVE_VECTOR_WIDTH_SHORT": cl_11, + "NATIVE_VECTOR_WIDTH_INT": cl_11, + "NATIVE_VECTOR_WIDTH_LONG": cl_11, + "NATIVE_VECTOR_WIDTH_FLOAT": cl_11, + "NATIVE_VECTOR_WIDTH_DOUBLE": cl_11, + "NATIVE_VECTOR_WIDTH_HALF": cl_11, + "OPENCL_C_VERSION": cl_11, + "COMPUTE_CAPABILITY_MAJOR_NV": nv_devattr, + "COMPUTE_CAPABILITY_MINOR_NV": nv_devattr, + "REGISTERS_PER_BLOCK_NV": nv_devattr, + "WARP_SIZE_NV": nv_devattr, + "GPU_OVERLAP_NV": nv_devattr, + "KERNEL_EXEC_TIMEOUT_NV": nv_devattr, + "INTEGRATED_MEMORY_NV": nv_devattr, + + "DOUBLE_FP_CONFIG": ("cl_khr_fp64", "2011.1"), - getattr(devi, "HALF_FP_CONFIG", None): + "HALF_FP_CONFIG": ("cl_khr_fp16", "2011.1"), - getattr(devi, "PROFILING_TIMER_OFFSET_AMD", None): + "PROFILING_TIMER_OFFSET_AMD": ("cl_amd_device_attribute_query", "2011.1"), - getattr(devi, "PARENT_DEVICE_EXT", None): - ("cl_ext_device_fission", "2011.1"), - getattr(devi, "PARTITION_TYPES_EXT", None): - ("cl_ext_device_fission", "2011.1"), - getattr(devi, "AFFINITY_DOMAINS_EXT", None): - ("cl_ext_device_fission", "2011.1"), - getattr(devi, "REFERENCE_COUNT_EXT", None): - ("cl_ext_device_fission", "2011.1"), - getattr(devi, "PARTITION_STYLE_EXT", None): - ("cl_ext_device_fission", "2011.1"), - }, - - ctxp: { - getattr(ctxp, "GL_CONTEXT_KHR", None): ("cl_khr_gl_sharing", "0.92"), - getattr(ctxp, "EGL_DISPLAY_KHR", None): ("cl_khr_gl_sharing", "0.92"), - getattr(ctxp, "GLX_DISPLAY_KHR", None): ("cl_khr_gl_sharing", "0.92"), - getattr(ctxp, "WGL_HDC_KHR", None): ("cl_khr_gl_sharing", "0.92"), - getattr(ctxp, "CGL_SHAREGROUP_KHR", None): ("cl_khr_gl_sharing", "0.92"), - - getattr(ctxp, "OFFLINE_DEVICES_AMD", None): + "PARENT_DEVICE_EXT": + fission, + "PARTITION_TYPES_EXT": + fission, + "AFFINITY_DOMAINS_EXT": + fission, + "REFERENCE_COUNT_EXT": + fission, + "PARTITION_STYLE_EXT": fission, + + "LINKER_AVAILABLE": cl_12, + "BUILT_IN_KERNELS": cl_12, + "IMAGE_MAX_BUFFER_SIZE": cl_12, + "IMAGE_MAX_ARRAY_SIZE": cl_12, + "PARENT_DEVICE": cl_12, + "PARTITION_MAX_SUB_DEVICES": cl_12, + "PARTITION_PROPERTIES": cl_12, + "PARTITION_AFFINITY_DOMAIN": cl_12, + "PARTITION_TYPE": cl_12, + "REFERENCE_COUNT": cl_12, + "PREFERRED_INTEROP_USER_SYNC": cl_12, + "PRINTF_BUFFER_SIZE": cl_12, + }, + + cl.mem_object_type: { + "IMAGE2D_ARRAY": cl_12, + "IMAGE1D": cl_12, + "IMAGE1D_ARRAY": cl_12, + "IMAGE1D_BUFFER": cl_12, + }, + + cl.device_type: { + "CUSTOM": cl_12, + }, + + cl.context_properties: { + "GL_CONTEXT_KHR": gl_sharing, + "EGL_DISPLAY_KHR": gl_sharing, + "GLX_DISPLAY_KHR": gl_sharing, + "WGL_HDC_KHR": gl_sharing, + "CGL_SHAREGROUP_KHR": gl_sharing, + + "OFFLINE_DEVICES_AMD": ("cl_amd_offline_devices", "2011.1"), }, - fpc: { - getattr(fpc, "SOFT_FLOAT", None): ("CL_1.1", "0.92"), + cl.device_fp_config: { + "SOFT_FLOAT": cl_11, + "CORRECTLY_ROUNDED_DIVIDE_SQRT": cl_12, + }, + + cl.context_info: { + "NUM_DEVICES": cl_11, + "INTEROP_USER_SYNC": cl_12, + }, + + cl.channel_order: { + "Rx": cl_11, + "RGx": cl_11, + "RGBx": cl_11, + }, + + cl.kernel_work_group_info: { + "PREFERRED_WORK_GROUP_SIZE_MULTIPLE": cl_11, + "PRIVATE_MEM_SIZE": cl_11, + "GLOBAL_WORK_SIZE": cl_12, }, - ctxi: { - getattr(ctxi, "NUM_DEVICES", None): ("CL_1.1", "0.92"), + cl.addressing_mode: { + "MIRRORED_REPEAT": cl_11, }, - cho: { - getattr(cho, "Rx", None): ("CL_1.1", "0.92"), - getattr(cho, "RGx", None): ("CL_1.1", "0.92"), - getattr(cho, "RGBx", None): ("CL_1.1", "0.92"), + cl.event_info: { + "CONTEXT": cl_11, }, - wgi: { - getattr(wgi, "PREFERRED_WORK_GROUP_SIZE_MULTIPLE", None): ("CL_1.1", "0.92"), - getattr(wgi, "PRIVATE_MEM_SIZE", None): ("CL_1.1", "0.92"), + cl.mem_info: { + "ASSOCIATED_MEMOBJECT": cl_11, + "OFFSET": cl_11, }, - iam: { - getattr(iam, "MIRRORED_REPEAT", None): ("CL_1.1", "0.92"), + cl.image_info: { + "ARRAY_SIZE": cl_12, + "BUFFER": cl_12, + "NUM_MIP_LEVELS": cl_12, + "NUM_SAMPLES": cl_12, }, - evi: { - getattr(evi, "CONTEXT", None): ("CL_1.1", "0.92"), + cl.map_flags: { + "WRITE_INVALIDATE_REGION": cl_12, }, - memi: { - getattr(memi, "ASSOCIATED_MEMOBJECT", None): ("CL_1.1", "0.92"), - getattr(memi, "OFFSET", None): ("CL_1.1", "0.92"), + cl.program_info: { + "NUM_KERNELS": cl_12, + "KERNEL_NAMES": cl_12, }, - ctype: { - getattr(ctype, "READ_BUFFER_RECT", None): ("CL_1.1", "0.92"), - getattr(ctype, "WRITE_BUFFER_RECT", None): ("CL_1.1", "0.92"), - getattr(ctype, "COPY_BUFFER_RECT", None): ("CL_1.1", "0.92"), - getattr(ctype, "USER", None): ("CL_1.1", "0.92"), - getattr(ctype, "MIGRATE_MEM_OBJECT_EXT", None): - ("cl_ext_migrate_memobject", "2011.2"), + cl.program_build_info: { + "BINARY_TYPE": cl_12, }, - memf: { - getattr(memf, "USE_PERSISTENT_MEM_AMD", None): + cl.program_binary_type: { + "NONE": cl_12, + "COMPILED_OBJECT": cl_12, + "LIBRARY": cl_12, + "EXECUTABLE": cl_12, + }, + + cl.kernel_info: { + "ATTRIBUTES": cl_12, + }, + + cl.kernel_arg_info: { + "ADDRESS_QUALIFIER": cl_12, + "ACCESS_QUALIFIER": cl_12, + "TYPE_NAME": cl_12, + "ARG_NAME": cl_12, + }, + + cl.kernel_arg_address_qualifier: { + "GLOBAL": cl_12, + "LOCAL": cl_12, + "CONSTANT": cl_12, + "PRIVATE": cl_12, + }, + + cl.kernel_arg_access_qualifier: { + "READ_ONLY": cl_12, + "WRITE_ONLY": cl_12, + "READ_WRITE": cl_12, + "NONE": cl_12, + }, + + cl.command_type: { + "READ_BUFFER_RECT": cl_11, + "WRITE_BUFFER_RECT": cl_11, + "COPY_BUFFER_RECT": cl_11, + "USER": cl_11, + "MIGRATE_MEM_OBJECT_EXT": ("cl_ext_migrate_memobject", "2011.2"), + "BARRIER": cl_12, + "MIGRATE_MEM_OBJECTS": cl_12, + "FILL_BUFFER": cl_12, + "FILL_IMAGE": cl_12, + }, + + cl.mem_flags: { + "USE_PERSISTENT_MEM_AMD": ("cl_amd_device_memory_flags", "2011.1"), + "HOST_WRITE_ONLY": cl_12, }, - dppe: { - getattr(dppe, "EQUALLY", None): ("cl_ext_device_fission", "2011.1"), - getattr(dppe, "BY_COUNTS", None): ("cl_ext_device_fission", "2011.1"), - getattr(dppe, "BY_NAMES", None): ("cl_ext_device_fission", "2011.1"), - getattr(dppe, "BY_AFFINITY_DOMAIN", None): ("cl_ext_device_fission", "2011.1"), + cl.device_partition_property: { + "EQUALLY": cl_12, + "BY_COUNTS": cl_12, + "BY_NAMES": cl_12, + "BY_AFFINITY_DOMAIN": cl_12, - getattr(dppe, "PROPERTIES_LIST_END", None): ("cl_ext_device_fission", "2011.1"), - getattr(dppe, "PARTITION_BY_COUNTS_LIST_END", None): ("cl_ext_device_fission", "2011.1"), - getattr(dppe, "PARTITION_BY_NAMES_LIST_END", None): ("cl_ext_device_fission", "2011.1"), + "PROPERTIES_LIST_END": cl_12, + "PARTITION_BY_COUNTS_LIST_END": cl_12, + "PARTITION_BY_NAMES_LIST_END": cl_12, }, - ade: { - getattr(ade, "L1_CACHE", None): ("cl_ext_device_fission", "2011.1"), - getattr(ade, "L2_CACHE", None): ("cl_ext_device_fission", "2011.1"), - getattr(ade, "L3_CACHE", None): ("cl_ext_device_fission", "2011.1"), - getattr(ade, "L4_CACHE", None): ("cl_ext_device_fission", "2011.1"), - getattr(ade, "NUMA", None): ("cl_ext_device_fission", "2011.1"), - getattr(ade, "NEXT_FISSIONABLE", None): ("cl_ext_device_fission", "2011.1"), + + cl.affinity_domain: { + "NUMA": cl_12, + "L4_CACHE": cl_12, + "L3_CACHE": cl_12, + "L2_CACHE": cl_12, + "L1_CACHE": cl_12, + "NEXT_PARITIONNABLE": cl_12, + }, + + cl.device_partition_property_ext: { + "EQUALLY": fission, + "BY_COUNTS": fission, + "BY_NAMES": fission, + "BY_AFFINITY_DOMAIN": fission, + + "PROPERTIES_LIST_END": fission, + "PARTITION_BY_COUNTS_LIST_END": fission, + "PARTITION_BY_NAMES_LIST_END": fission, + }, + cl.affinity_domain_ext: { + "L1_CACHE": fission, + "L2_CACHE": fission, + "L3_CACHE": fission, + "L4_CACHE": fission, + "NUMA": fission, + "NEXT_FISSIONABLE": fission, + }, + + cl.mem_migration_flags: { + "HOST": cl_12, + "CONTENT_UNDEFINED": cl_12, }, - mof: { - getattr(mof, "HOST", None): ("cl_ext_migrate_memobject", "2011.2"), + cl.migrate_mem_object_flags_ext: { + "HOST": ("cl_ext_migrate_memobject", "2011.2"), }, } try: @@ -172,10 +281,10 @@ except AttributeError: else: const_ext_lookup[gl_ci] = { getattr(gl_ci, "CURRENT_DEVICE_FOR_GL_CONTEXT_KHR", None): - ("cl_khr_gl_sharing", "0.92"), + gl_sharing, getattr(gl_ci, "DEVICES_FOR_GL_CONTEXT_KHR", None): - ("cl_khr_gl_sharing", "0.92"), + gl_sharing, } cls_ext_lookup = { @@ -195,13 +304,13 @@ def doc_class(cls): print l cls_const_ext = const_ext_lookup.get(cls, {}) - for i in sorted(dir(cls)): - if not i.startswith("_") and not i in ["to_string", "names", "values"]: - print " .. attribute :: %s" % i - value = getattr(cls, i) + for name in sorted(dir(cls)): + if not name.startswith("_") and not name in ["to_string", "names", "values"]: + print " .. attribute :: %s" % name + value = getattr(cls, name) - if value in cls_const_ext: - for l in get_extra_lines(cls_const_ext[value]): + if name in cls_const_ext: + for l in get_extra_lines(cls_const_ext[name]): print " "+l print " .. method :: to_string(value)" diff --git a/doc/source/misc.rst b/doc/source/misc.rst index e1ae14a4e6f4eaa259c30e9c62c36a5ab120dd52..71143f9b3ea7737b54c3ecc700b602f624b888ad 100644 --- a/doc/source/misc.rst +++ b/doc/source/misc.rst @@ -91,6 +91,8 @@ Version 2011.2 * Add :mod:`pyopencl.characterize`. * Ensure compatibility with OS X Lion. +.. * Beta support for OpenCL 1.2. + Version 2011.1.2 ---------------- diff --git a/src/wrapper/wrap_cl.hpp b/src/wrapper/wrap_cl.hpp index 27d671d41b2b09bc0b4a7e35cd8633d797bd66ef..17ae1a910f7d1bdce8827c481e21b48e8ff8d2d5 100644 --- a/src/wrapper/wrap_cl.hpp +++ b/src/wrapper/wrap_cl.hpp @@ -295,7 +295,9 @@ namespace pyopencl inline py::tuple get_cl_header_version() { -#if defined(CL_VERSION_1_1) +#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); diff --git a/src/wrapper/wrap_constants.cpp b/src/wrapper/wrap_constants.cpp index 321fd43f928e46147e9117f22fb814fd582e9a07..2e2813c756c667ffd272dd0eee0abc1990108b55 100644 --- a/src/wrapper/wrap_constants.cpp +++ b/src/wrapper/wrap_constants.cpp @@ -60,21 +60,30 @@ namespace class map_flags { }; class program_info { }; class program_build_info { }; + class program_binary_type { }; class build_status { }; class kernel_info { }; + class kernel_arg_info { }; + class kernel_arg_address_qualifier { }; + class kernel_arg_access_qualifier { }; class kernel_work_group_info { }; class event_info { }; class command_type { }; class command_execution_status { }; class profiling_info { }; class buffer_create_type { }; + class mem_migration_flags { }; + + class device_partition_property { }; + class affinity_domain { }; class device_partition_property_ext { }; class affinity_domain_ext { }; class gl_object_type { }; class gl_texture_info { }; - class migrate_mem_object_flags {}; + + class migrate_mem_object_flags_ext {}; // }}} } @@ -183,6 +192,18 @@ void pyopencl_expose_constants() ADD_ATTR(, INVALID_GLOBAL_WORK_SIZE); #endif +#ifdef CL_VERSION_1_2 + ADD_ATTR(, COMPILE_PROGRAM_FAILURE); + ADD_ATTR(, LINKER_NOT_AVAILABLE); + ADD_ATTR(, LINK_PROGRAM_FAILURE); + ADD_ATTR(, DEVICE_PARTITION_FAILED); + ADD_ATTR(, KERNEL_ARG_INFO_NOT_AVAILABLE); + ADD_ATTR(, INVALID_IMAGE_DESCRIPTOR); + ADD_ATTR(, INVALID_COMPILER_OPTIONS); + ADD_ATTR(, INVALID_LINKER_OPTIONS); + ADD_ATTR(, INVALID_DEVICE_PARTITION_COUNT); +#endif + #if defined(cl_ext_device_fission) && defined(PYOPENCL_USE_DEVICE_FISSION) ADD_ATTR(, DEVICE_PARTITION_FAILED_EXT); ADD_ATTR(, INVALID_PARTITION_COUNT_EXT); @@ -207,6 +228,9 @@ void pyopencl_expose_constants() ADD_ATTR(DEVICE_TYPE_, CPU); ADD_ATTR(DEVICE_TYPE_, GPU); ADD_ATTR(DEVICE_TYPE_, ACCELERATOR); +#ifdef CL_VERSION_1_2 + ADD_ATTR(DEVICE_TYPE_, CUSTOM); +#endif ADD_ATTR(DEVICE_TYPE_, ALL); } @@ -301,6 +325,20 @@ void pyopencl_expose_constants() ADD_ATTR(DEVICE_, AFFINITY_DOMAINS_EXT); ADD_ATTR(DEVICE_, REFERENCE_COUNT_EXT); ADD_ATTR(DEVICE_, PARTITION_STYLE_EXT); +#endif +#ifdef CL_VERSION_1_2 + ADD_ATTR(DEVICE_, LINKER_AVAILABLE); + ADD_ATTR(DEVICE_, BUILT_IN_KERNELS); + ADD_ATTR(DEVICE_, IMAGE_MAX_BUFFER_SIZE); + ADD_ATTR(DEVICE_, IMAGE_MAX_ARRAY_SIZE); + ADD_ATTR(DEVICE_, PARENT_DEVICE); + ADD_ATTR(DEVICE_, PARTITION_MAX_SUB_DEVICES); + ADD_ATTR(DEVICE_, PARTITION_PROPERTIES); + ADD_ATTR(DEVICE_, PARTITION_AFFINITY_DOMAIN); + ADD_ATTR(DEVICE_, PARTITION_TYPE); + ADD_ATTR(DEVICE_, REFERENCE_COUNT); + ADD_ATTR(DEVICE_, PREFERRED_INTEROP_USER_SYNC); + ADD_ATTR(DEVICE_, PRINTF_BUFFER_SIZE); #endif } @@ -314,6 +352,9 @@ void pyopencl_expose_constants() ADD_ATTR(FP_, FMA); #ifdef CL_VERSION_1_1 ADD_ATTR(FP_, SOFT_FLOAT); +#endif +#ifdef CL_VERSION_1_2 + ADD_ATTR(FP_, CORRECTLY_ROUNDED_DIVIDE_SQRT); #endif } @@ -349,6 +390,9 @@ void pyopencl_expose_constants() ADD_ATTR(CONTEXT_, PROPERTIES); #ifdef CL_VERSION_1_1 ADD_ATTR(CONTEXT_, NUM_DEVICES); +#endif +#ifdef CL_VERSION_1_2 + ADD_ATTR(CONTEXT_, INTEROP_USER_SYNC); #endif } @@ -397,6 +441,11 @@ void pyopencl_expose_constants() ADD_ATTR(MEM_, COPY_HOST_PTR); #ifdef cl_amd_device_memory_flags ADD_ATTR(MEM_, USE_PERSISTENT_MEM_AMD); +#endif +#ifdef CL_VERSION_1_2 + ADD_ATTR(MEM_, HOST_WRITE_ONLY); + ADD_ATTR(MEM_, HOST_READ_ONLY); + ADD_ATTR(MEM_, HOST_NO_ACCESS); #endif } @@ -442,6 +491,12 @@ void pyopencl_expose_constants() ADD_ATTR(MEM_OBJECT_, BUFFER); ADD_ATTR(MEM_OBJECT_, IMAGE2D); ADD_ATTR(MEM_OBJECT_, IMAGE3D); +#ifdef CL_VERSION_1_2 + ADD_ATTR(MEM_OBJECT_, IMAGE2D_ARRAY); + ADD_ATTR(MEM_OBJECT_, IMAGE1D); + ADD_ATTR(MEM_OBJECT_, IMAGE1D_ARRAY); + ADD_ATTR(MEM_OBJECT_, IMAGE1D_BUFFER); +#endif } { @@ -468,6 +523,12 @@ void pyopencl_expose_constants() ADD_ATTR(IMAGE_, WIDTH); ADD_ATTR(IMAGE_, HEIGHT); ADD_ATTR(IMAGE_, DEPTH); +#ifdef CL_VERSION_1_2 + ADD_ATTR(IMAGE_, ARRAY_SIZE); + ADD_ATTR(IMAGE_, BUFFER); + ADD_ATTR(IMAGE_, NUM_MIP_LEVELS); + ADD_ATTR(IMAGE_, NUM_SAMPLES); +#endif } { @@ -500,6 +561,9 @@ void pyopencl_expose_constants() py::class_<map_flags> cls("map_flags", py::no_init); ADD_ATTR(MAP_, READ); ADD_ATTR(MAP_, WRITE); +#ifdef CL_VERSION_1_2 + ADD_ATTR(MAP_, WRITE_INVALIDATE_REGION); +#endif } { @@ -511,6 +575,10 @@ void pyopencl_expose_constants() ADD_ATTR(PROGRAM_, SOURCE); ADD_ATTR(PROGRAM_, BINARY_SIZES); ADD_ATTR(PROGRAM_, BINARIES); +#ifdef CL_VERSION_1_2 + ADD_ATTR(PROGRAM_, NUM_KERNELS); + ADD_ATTR(PROGRAM_, KERNEL_NAMES); +#endif } { @@ -518,6 +586,19 @@ void pyopencl_expose_constants() ADD_ATTR(PROGRAM_BUILD_, STATUS); ADD_ATTR(PROGRAM_BUILD_, OPTIONS); ADD_ATTR(PROGRAM_BUILD_, LOG); +#ifdef CL_VERSION_1_2 + ADD_ATTR(PROGRAM_, BINARY_TYPE); +#endif + } + + { + py::class_<program_binary_type> cls("program_binary_type", py::no_init); +#ifdef CL_VERSION_1_2 + ADD_ATTR(PROGRAM_BINARY_TYPE_, NONE); + ADD_ATTR(PROGRAM_BINARY_TYPE_, COMPILED_OBJECT); + ADD_ATTR(PROGRAM_BINARY_TYPE_, LIBRARY); + ADD_ATTR(PROGRAM_BINARY_TYPE_, EXECUTABLE); +#endif } { @@ -527,6 +608,41 @@ void pyopencl_expose_constants() ADD_ATTR(KERNEL_, REFERENCE_COUNT); ADD_ATTR(KERNEL_, CONTEXT); ADD_ATTR(KERNEL_, PROGRAM); +#ifdef CL_VERSION_1_2 + ADD_ATTR(KERNEL_, ATTRIBUTES); +#endif + } + + { + py::class_<kernel_arg_info> cls("kernel_arg_info", py::no_init); +#ifdef CL_VERSION_1_2 + ADD_ATTR(KERNEL_ARG_, ADDRESS_QUALIFIER); + ADD_ATTR(KERNEL_ARG_, ACCESS_QUALIFIER); + ADD_ATTR(KERNEL_ARG_, TYPE_NAME); + ADD_ATTR(KERNEL_ARG_, ARG_NAME); +#endif + } + + { + py::class_<kernel_arg_address_qualifier> cls( + "kernel_arg_address_qualifier", py::no_init); +#ifdef CL_VERSION_1_2 + ADD_ATTR(KERNEL_ARG_ADDRESS_, GLOBAL); + ADD_ATTR(KERNEL_ARG_ADDRESS_, LOCAL); + ADD_ATTR(KERNEL_ARG_ADDRESS_, CONSTANT); + ADD_ATTR(KERNEL_ARG_ADDRESS_, PRIVATE); +#endif + } + + { + py::class_<kernel_arg_access_qualifier> cls( + "kernel_arg_access_qualifier", py::no_init); +#ifdef CL_VERSION_1_2 + ADD_ATTR(KERNEL_ARG_ACCESS_, READ_ONLY); + ADD_ATTR(KERNEL_ARG_ACCESS_, WRITE_ONLY); + ADD_ATTR(KERNEL_ARG_ACCESS_, READ_WRITE); + ADD_ATTR(KERNEL_ARG_ACCESS_, NONE); +#endif } { @@ -537,6 +653,9 @@ void pyopencl_expose_constants() #ifdef CL_VERSION_1_1 ADD_ATTR(KERNEL_, PREFERRED_WORK_GROUP_SIZE_MULTIPLE); ADD_ATTR(KERNEL_, PRIVATE_MEM_SIZE); +#endif +#ifdef CL_VERSION_1_2 + ADD_ATTR(KERNEL_, GLOBAL_WORK_SIZE); #endif } @@ -577,7 +696,13 @@ void pyopencl_expose_constants() ADD_ATTR(COMMAND_, USER); #endif #ifdef cl_ext_migrate_memobject - ADD_ATTR_SUFFIX(COMMAND_, MIGRATE_MEM_OBJECT, _EXT); + ADD_ATTR(COMMAND_, MIGRATE_MEM_OBJECT_EXT); +#endif +#ifdef CL_VERSION_1_2 + ADD_ATTR(COMMAND_, BARRIER); + ADD_ATTR(COMMAND_, MIGRATE_MEM_OBJECTS); + ADD_ATTR(COMMAND_, FILL_BUFFER); + ADD_ATTR(COMMAND_, FILL_IMAGE); #endif } @@ -605,6 +730,16 @@ void pyopencl_expose_constants() } #endif */ + + { + py::class_<mem_migration_flags> cls( + "mem_migration_flags", py::no_init); +#ifdef CL_VERSION_1_2 + ADD_ATTR(MIGRATE_MEM_OBJECT_, HOST); + ADD_ATTR(MIGRATE_MEM_OBJECT_, CONTENT_UNDEFINED); +#endif + } + { py::class_<device_partition_property_ext> cls( "device_partition_property_ext", py::no_init); @@ -631,6 +766,29 @@ void pyopencl_expose_constants() #endif } + { + py::class_<device_partition_property> cls( + "device_partition_property", py::no_init); +#ifdef CL_VERSION_1_2 + ADD_ATTR_SUFFIX(DEVICE_PARTITION_, EQUALLY, _EXT); + ADD_ATTR_SUFFIX(DEVICE_PARTITION_, BY_COUNTS, _EXT); + ADD_ATTR_SUFFIX(DEVICE_PARTITION_, BY_AFFINITY_DOMAIN, _EXT); + ADD_ATTR_SUFFIX(, PARTITION_BY_COUNTS_LIST_END, _EXT); +#endif + } + + { + py::class_<affinity_domain> cls("affinity_domain", py::no_init); +#ifdef CL_VERSION_1_2 + ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, NUMA, _EXT); + ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, L4_CACHE, _EXT); + ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, L3_CACHE, _EXT); + ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, L2_CACHE, _EXT); + ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, L1_CACHE, _EXT); + ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, NEXT_PARTITIONABLE, _EXT); +#endif + } + #ifdef HAVE_GL { py::class_<gl_object_type> cls("gl_object_type", py::no_init); @@ -648,7 +806,7 @@ void pyopencl_expose_constants() #endif { - py::class_<migrate_mem_object_flags> cls("migrate_mem_object_flags_ext", py::no_init); + py::class_<migrate_mem_object_flags_ext> cls("migrate_mem_object_flags_ext", py::no_init); #ifdef cl_ext_migrate_memobject ADD_ATTR_SUFFIX(MIGRATE_MEM_OBJECT_, HOST, _EXT); #endif