100
114
#define ADD_ATTR(PREFIX, NAME) \
101
115
cls.attr(#NAME) = CL_##PREFIX##NAME
116
#define ADD_ATTR_SUFFIX(PREFIX, NAME, SUFFIX) \
117
cls.attr(#NAME) = CL_##PREFIX##NAME##SUFFIX
121
py::class_<error> ("_error", py::no_init)
122
.DEF_SIMPLE_METHOD(routine)
123
.DEF_SIMPLE_METHOD(code)
124
.DEF_SIMPLE_METHOD(what)
129
py::class_<status_code> cls("status_code", py::no_init);
132
ADD_ATTR(, DEVICE_NOT_FOUND);
133
ADD_ATTR(, DEVICE_NOT_AVAILABLE);
134
#if !(defined(CL_PLATFORM_NVIDIA) && CL_PLATFORM_NVIDIA == 0x3001)
135
ADD_ATTR(, COMPILER_NOT_AVAILABLE);
137
ADD_ATTR(, MEM_OBJECT_ALLOCATION_FAILURE);
138
ADD_ATTR(, OUT_OF_RESOURCES);
139
ADD_ATTR(, OUT_OF_HOST_MEMORY);
140
ADD_ATTR(, PROFILING_INFO_NOT_AVAILABLE);
141
ADD_ATTR(, MEM_COPY_OVERLAP);
142
ADD_ATTR(, IMAGE_FORMAT_MISMATCH);
143
ADD_ATTR(, IMAGE_FORMAT_NOT_SUPPORTED);
144
ADD_ATTR(, BUILD_PROGRAM_FAILURE);
145
ADD_ATTR(, MAP_FAILURE);
147
ADD_ATTR(, INVALID_VALUE);
148
ADD_ATTR(, INVALID_DEVICE_TYPE);
149
ADD_ATTR(, INVALID_PLATFORM);
150
ADD_ATTR(, INVALID_DEVICE);
151
ADD_ATTR(, INVALID_CONTEXT);
152
ADD_ATTR(, INVALID_QUEUE_PROPERTIES);
153
ADD_ATTR(, INVALID_COMMAND_QUEUE);
154
ADD_ATTR(, INVALID_HOST_PTR);
155
ADD_ATTR(, INVALID_MEM_OBJECT);
156
ADD_ATTR(, INVALID_IMAGE_FORMAT_DESCRIPTOR);
157
ADD_ATTR(, INVALID_IMAGE_SIZE);
158
ADD_ATTR(, INVALID_SAMPLER);
159
ADD_ATTR(, INVALID_BINARY);
160
ADD_ATTR(, INVALID_BUILD_OPTIONS);
161
ADD_ATTR(, INVALID_PROGRAM);
162
ADD_ATTR(, INVALID_PROGRAM_EXECUTABLE);
163
ADD_ATTR(, INVALID_KERNEL_NAME);
164
ADD_ATTR(, INVALID_KERNEL_DEFINITION);
165
ADD_ATTR(, INVALID_KERNEL);
166
ADD_ATTR(, INVALID_ARG_INDEX);
167
ADD_ATTR(, INVALID_ARG_VALUE);
168
ADD_ATTR(, INVALID_ARG_SIZE);
169
ADD_ATTR(, INVALID_KERNEL_ARGS);
170
ADD_ATTR(, INVALID_WORK_DIMENSION);
171
ADD_ATTR(, INVALID_WORK_GROUP_SIZE);
172
ADD_ATTR(, INVALID_WORK_ITEM_SIZE);
173
ADD_ATTR(, INVALID_GLOBAL_OFFSET);
174
ADD_ATTR(, INVALID_EVENT_WAIT_LIST);
175
ADD_ATTR(, INVALID_EVENT);
176
ADD_ATTR(, INVALID_OPERATION);
177
ADD_ATTR(, INVALID_GL_OBJECT);
178
ADD_ATTR(, INVALID_BUFFER_SIZE);
179
ADD_ATTR(, INVALID_MIP_LEVEL);
181
#if defined(cl_khr_icd) && (cl_khr_icd >= 1)
182
ADD_ATTR(, PLATFORM_NOT_FOUND_KHR);
185
#if defined(cl_khr_gl_sharing) && (cl_khr_gl_sharing >= 1)
186
ADD_ATTR(, INVALID_GL_SHAREGROUP_REFERENCE_KHR);
189
#if PYOPENCL_CL_VERSION >= 0x1010
190
ADD_ATTR(, MISALIGNED_SUB_BUFFER_OFFSET);
191
ADD_ATTR(, EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST);
192
ADD_ATTR(, INVALID_GLOBAL_WORK_SIZE);
195
#if PYOPENCL_CL_VERSION >= 0x1020
196
ADD_ATTR(, COMPILE_PROGRAM_FAILURE);
197
ADD_ATTR(, LINKER_NOT_AVAILABLE);
198
ADD_ATTR(, LINK_PROGRAM_FAILURE);
199
ADD_ATTR(, DEVICE_PARTITION_FAILED);
200
ADD_ATTR(, KERNEL_ARG_INFO_NOT_AVAILABLE);
201
ADD_ATTR(, INVALID_IMAGE_DESCRIPTOR);
202
ADD_ATTR(, INVALID_COMPILER_OPTIONS);
203
ADD_ATTR(, INVALID_LINKER_OPTIONS);
204
ADD_ATTR(, INVALID_DEVICE_PARTITION_COUNT);
207
#if defined(cl_ext_device_fission) && defined(PYOPENCL_USE_DEVICE_FISSION)
208
ADD_ATTR(, DEVICE_PARTITION_FAILED_EXT);
209
ADD_ATTR(, INVALID_PARTITION_COUNT_EXT);
210
ADD_ATTR(, INVALID_PARTITION_NAME_EXT);
104
215
py::class_<platform_info> cls("platform_info", py::no_init);
195
315
ADD_ATTR(DEVICE_, KERNEL_EXEC_TIMEOUT_NV);
196
316
ADD_ATTR(DEVICE_, INTEGRATED_MEMORY_NV);
318
// cl_amd_device_attribute_query
319
#ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD
320
ADD_ATTR(DEVICE_, PROFILING_TIMER_OFFSET_AMD);
322
#if defined(cl_ext_device_fission) && defined(PYOPENCL_USE_DEVICE_FISSION)
323
ADD_ATTR(DEVICE_, PARENT_DEVICE_EXT);
324
ADD_ATTR(DEVICE_, PARTITION_TYPES_EXT);
325
ADD_ATTR(DEVICE_, AFFINITY_DOMAINS_EXT);
326
ADD_ATTR(DEVICE_, REFERENCE_COUNT_EXT);
327
ADD_ATTR(DEVICE_, PARTITION_STYLE_EXT);
329
#if PYOPENCL_CL_VERSION >= 0x1020
330
ADD_ATTR(DEVICE_, LINKER_AVAILABLE);
331
ADD_ATTR(DEVICE_, BUILT_IN_KERNELS);
332
ADD_ATTR(DEVICE_, IMAGE_MAX_BUFFER_SIZE);
333
ADD_ATTR(DEVICE_, IMAGE_MAX_ARRAY_SIZE);
334
ADD_ATTR(DEVICE_, PARENT_DEVICE);
335
ADD_ATTR(DEVICE_, PARTITION_MAX_SUB_DEVICES);
336
ADD_ATTR(DEVICE_, PARTITION_PROPERTIES);
337
ADD_ATTR(DEVICE_, PARTITION_AFFINITY_DOMAIN);
338
ADD_ATTR(DEVICE_, PARTITION_TYPE);
339
ADD_ATTR(DEVICE_, REFERENCE_COUNT);
340
ADD_ATTR(DEVICE_, PREFERRED_INTEROP_USER_SYNC);
341
ADD_ATTR(DEVICE_, PRINTF_BUFFER_SIZE);
410
614
ADD_ATTR(KERNEL_, REFERENCE_COUNT);
411
615
ADD_ATTR(KERNEL_, CONTEXT);
412
616
ADD_ATTR(KERNEL_, PROGRAM);
617
#if PYOPENCL_CL_VERSION >= 0x1020
618
ADD_ATTR(KERNEL_, ATTRIBUTES);
623
py::class_<kernel_arg_info> cls("kernel_arg_info", py::no_init);
624
#if PYOPENCL_CL_VERSION >= 0x1020
625
ADD_ATTR(KERNEL_ARG_, ADDRESS_QUALIFIER);
626
ADD_ATTR(KERNEL_ARG_, ACCESS_QUALIFIER);
627
ADD_ATTR(KERNEL_ARG_, TYPE_NAME);
628
ADD_ATTR(KERNEL_ARG_, NAME);
633
py::class_<kernel_arg_address_qualifier> cls(
634
"kernel_arg_address_qualifier", py::no_init);
635
#if PYOPENCL_CL_VERSION >= 0x1020
636
ADD_ATTR(KERNEL_ARG_ADDRESS_, GLOBAL);
637
ADD_ATTR(KERNEL_ARG_ADDRESS_, LOCAL);
638
ADD_ATTR(KERNEL_ARG_ADDRESS_, CONSTANT);
639
ADD_ATTR(KERNEL_ARG_ADDRESS_, PRIVATE);
644
py::class_<kernel_arg_access_qualifier> cls(
645
"kernel_arg_access_qualifier", py::no_init);
646
#if PYOPENCL_CL_VERSION >= 0x1020
647
ADD_ATTR(KERNEL_ARG_ACCESS_, READ_ONLY);
648
ADD_ATTR(KERNEL_ARG_ACCESS_, WRITE_ONLY);
649
ADD_ATTR(KERNEL_ARG_ACCESS_, READ_WRITE);
650
ADD_ATTR(KERNEL_ARG_ACCESS_, NONE);
453
695
ADD_ATTR(COMMAND_, MARKER);
454
696
ADD_ATTR(COMMAND_, ACQUIRE_GL_OBJECTS);
455
697
ADD_ATTR(COMMAND_, RELEASE_GL_OBJECTS);
456
#ifdef CL_VERSION_1_1
698
#if PYOPENCL_CL_VERSION >= 0x1010
457
699
ADD_ATTR(COMMAND_, READ_BUFFER_RECT);
458
700
ADD_ATTR(COMMAND_, WRITE_BUFFER_RECT);
459
701
ADD_ATTR(COMMAND_, COPY_BUFFER_RECT);
460
702
ADD_ATTR(COMMAND_, USER);
704
#ifdef cl_ext_migrate_memobject
705
ADD_ATTR(COMMAND_, MIGRATE_MEM_OBJECT_EXT);
707
#if PYOPENCL_CL_VERSION >= 0x1020
708
ADD_ATTR(COMMAND_, BARRIER);
709
ADD_ATTR(COMMAND_, MIGRATE_MEM_OBJECTS);
710
ADD_ATTR(COMMAND_, FILL_BUFFER);
711
ADD_ATTR(COMMAND_, FILL_IMAGE);
741
py::class_<mem_migration_flags> cls(
742
"mem_migration_flags", py::no_init);
743
#if PYOPENCL_CL_VERSION >= 0x1020
744
ADD_ATTR(MIGRATE_MEM_OBJECT_, HOST);
745
ADD_ATTR(MIGRATE_MEM_OBJECT_, CONTENT_UNDEFINED);
750
py::class_<device_partition_property_ext> cls(
751
"device_partition_property_ext", py::no_init);
752
#if defined(cl_ext_device_fission) && defined(PYOPENCL_USE_DEVICE_FISSION)
753
ADD_ATTR_SUFFIX(DEVICE_PARTITION_, EQUALLY, _EXT);
754
ADD_ATTR_SUFFIX(DEVICE_PARTITION_, BY_COUNTS, _EXT);
755
ADD_ATTR_SUFFIX(DEVICE_PARTITION_, BY_NAMES, _EXT);
756
ADD_ATTR_SUFFIX(DEVICE_PARTITION_, BY_AFFINITY_DOMAIN, _EXT);
757
ADD_ATTR_SUFFIX(, PROPERTIES_LIST_END, _EXT);
758
ADD_ATTR_SUFFIX(, PARTITION_BY_COUNTS_LIST_END, _EXT);
759
ADD_ATTR_SUFFIX(, PARTITION_BY_NAMES_LIST_END, _EXT);
764
py::class_<affinity_domain_ext> cls("affinity_domain_ext", py::no_init);
765
#if defined(cl_ext_device_fission) && defined(PYOPENCL_USE_DEVICE_FISSION)
766
ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, L1_CACHE, _EXT);
767
ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, L2_CACHE, _EXT);
768
ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, L3_CACHE, _EXT);
769
ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, L4_CACHE, _EXT);
770
ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, NUMA, _EXT);
771
ADD_ATTR_SUFFIX(AFFINITY_DOMAIN_, NEXT_FISSIONABLE, _EXT);
776
py::class_<device_partition_property> cls(
777
"device_partition_property", py::no_init);
778
#if PYOPENCL_CL_VERSION >= 0x1020
779
ADD_ATTR(DEVICE_PARTITION_, EQUALLY);
780
ADD_ATTR(DEVICE_PARTITION_, BY_COUNTS);
781
ADD_ATTR(DEVICE_PARTITION_, BY_COUNTS_LIST_END);
782
ADD_ATTR(DEVICE_PARTITION_, BY_AFFINITY_DOMAIN);
787
py::class_<device_affinity_domain> cls("device_affinity_domain", py::no_init);
788
#if PYOPENCL_CL_VERSION >= 0x1020
789
ADD_ATTR(DEVICE_AFFINITY_DOMAIN_, NUMA);
790
ADD_ATTR(DEVICE_AFFINITY_DOMAIN_, L4_CACHE);
791
ADD_ATTR(DEVICE_AFFINITY_DOMAIN_, L3_CACHE);
792
ADD_ATTR(DEVICE_AFFINITY_DOMAIN_, L2_CACHE);
793
ADD_ATTR(DEVICE_AFFINITY_DOMAIN_, L1_CACHE);
794
ADD_ATTR(DEVICE_AFFINITY_DOMAIN_, NEXT_PARTITIONABLE);
491
800
py::class_<gl_object_type> cls("gl_object_type", py::no_init);