opencl_ruby_ffi 1.3.7 → 1.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -46,17 +46,17 @@ module OpenCL
46
46
 
47
47
  # Returns the Context associated to the Mem
48
48
  def context
49
- return @_context if @_context
50
- ptr = MemoryPointer::new( Context )
51
- error = OpenCL.clGetMemObjectInfo(self, CONTEXT, Context.size, ptr, nil)
52
- error_check(error)
53
- @_context = Context::new( ptr.read_pointer )
49
+ @_context ||= begin
50
+ ptr = MemoryPointer::new( Context )
51
+ error = OpenCL.clGetMemObjectInfo(self, CONTEXT, Context.size, ptr, nil)
52
+ error_check(error)
53
+ Context::new( ptr.read_pointer )
54
+ end
54
55
  end
55
56
 
56
57
  # Returns the Platform associated to the Mem
57
58
  def platform
58
- return @_platform if @_platform
59
- @_platform = self.context.platform
59
+ @_platform ||= self.context.platform
60
60
  end
61
61
 
62
62
  # Returns the texture_target argument specified in create_from_GL_texture for Mem
@@ -130,11 +130,17 @@ module OpenCL
130
130
  extend InnerGenerator
131
131
 
132
132
  get_info("Mem", :cl_bool, "uses_svm_pointer", true)
133
+ end
134
+
135
+ module OpenCL30
136
+ extend InnerGenerator
133
137
 
138
+ get_info_array("Mem", :cl_mem_properties, "properties")
134
139
  end
135
140
 
136
141
  register_extension( :v11, OpenCL11, "platform.version_number >= 1.1" )
137
142
  register_extension( :v20, OpenCL20, "platform.version_number >= 2.0" )
143
+ register_extension( :v30, OpenCL30, "platform.version_number >= 3.0" )
138
144
 
139
145
  end
140
146
 
@@ -34,6 +34,14 @@ module OpenCL
34
34
  get_info("Pipe", :cl_uint, "packet_size")
35
35
  get_info("Pipe", :cl_uint, "max_packets")
36
36
 
37
+ module OpenCL30
38
+ extend InnerGenerator
39
+
40
+ get_info_array("Pipe", :cl_pipe_properties, "properties")
41
+ end
42
+
43
+ register_extension( :v30, Pipe::OpenCL30, "platform.version_number >= 3.0" )
44
+
37
45
  end
38
46
 
39
47
  end
@@ -63,18 +63,18 @@ module OpenCL
63
63
 
64
64
  # Returns an Array of Platform containing the available OpenCL platforms
65
65
  def self.get_platforms
66
- return @_platforms if @_platforms
67
- ptr1 = MemoryPointer::new(:cl_uint , 1)
66
+ @_platforms ||= begin
67
+ ptr1 = MemoryPointer::new(:cl_uint , 1)
68
68
 
69
- error = clGetPlatformIDs(0, nil, ptr1)
70
- error_check(error)
71
- ptr2 = MemoryPointer::new(:pointer, ptr1.read_uint)
72
- error = clGetPlatformIDs(ptr1.read_uint(), ptr2, nil)
73
- error_check(error)
74
- @_platforms = ptr2.get_array_of_pointer(0,ptr1.read_uint()).collect { |platform_ptr|
75
- Platform::new(platform_ptr, false)
76
- }
77
- return @_platforms
69
+ error = clGetPlatformIDs(0, nil, ptr1)
70
+ error_check(error)
71
+ ptr2 = MemoryPointer::new(:pointer, ptr1.read_uint)
72
+ error = clGetPlatformIDs(ptr1.read_uint(), ptr2, nil)
73
+ error_check(error)
74
+ ptr2.get_array_of_pointer(0,ptr1.read_uint()).collect { |platform_ptr|
75
+ Platform::new(platform_ptr, false)
76
+ }
77
+ end
78
78
  end
79
79
 
80
80
  class << self
@@ -181,8 +181,33 @@ module OpenCL
181
181
 
182
182
  end
183
183
 
184
+ module OpenCL30
185
+ extend InnerGenerator
186
+
187
+ def numeric_version
188
+ ptr = MemoryPointer::new( :cl_version )
189
+ error = OpenCL.clGetPlatformInfo( self, NUMERIC_VERSION, 4, ptr, nil)
190
+ error_check(error)
191
+ return Version::from_int(ptr.read_cl_version)
192
+ end
193
+
194
+ def extensions_with_version
195
+ sz = MemoryPointer::new( :size_t )
196
+ error = OpenCL.clGetPlatformInfo( self, EXTENSIONS_WITH_VERSION, 0, nil, sz)
197
+ error_check(error)
198
+ sz = sz.read_size_t
199
+ ptr = MemoryPointer::new( sz )
200
+ error = OpenCL.clGetPlatformInfo( self, EXTENSIONS_WITH_VERSION, sz, ptr, nil)
201
+ error_check(error)
202
+ nvsz = NameVersion.size
203
+ return (sz/nvsz).times.collect { |i| NameVersion::new(ptr + i*nvsz) }
204
+ end
205
+
206
+ end
207
+
184
208
  register_extension( :v12, OpenCL12, "version_number >= 1.2" )
185
209
  register_extension( :v21, OpenCL21, "version_number >= 2.1" )
210
+ register_extension( :v30, OpenCL30, "version_number >= 3.0" )
186
211
 
187
212
  end
188
213
 
@@ -280,7 +280,11 @@ module OpenCL
280
280
  build_status.each { |d,s|
281
281
  success |= true if s.to_i == BuildStatus::SUCCESS
282
282
  }
283
- return "#<#{self.class.name}: #{success ? kernel_names : ""}>"
283
+ begin
284
+ return "#<#{self.class.name}: #{success ? kernel_names : ""}>"
285
+ rescue
286
+ return "#<#{self.class.name}: >"
287
+ end
284
288
  end
285
289
 
286
290
  alias_method :orig_method_missing, :method_missing
@@ -304,17 +308,17 @@ module OpenCL
304
308
 
305
309
  # Returns the Platform associated with the Program
306
310
  def platform
307
- return @_platform if @_platform
308
- @_platform = self.context.platform
311
+ @_platform ||= self.context.platform
309
312
  end
310
313
 
311
314
  # Returns the Context the Program is associated to
312
315
  def context
313
- return @_context if @_context
314
- ptr = MemoryPointer::new( Context )
315
- error = OpenCL.clGetProgramInfo(self, CONTEXT, Context.size, ptr, nil)
316
- error_check(error)
317
- @_context = Context::new( ptr.read_pointer )
316
+ @_context ||= begin
317
+ ptr = MemoryPointer::new( Context )
318
+ error = OpenCL.clGetProgramInfo(self, CONTEXT, Context.size, ptr, nil)
319
+ error_check(error)
320
+ Context::new( ptr.read_pointer )
321
+ end
318
322
  end
319
323
 
320
324
  get_info("Program", :cl_uint, "num_devices", true)
@@ -322,15 +326,15 @@ module OpenCL
322
326
 
323
327
  # Returns the Array of Device the Program is associated with
324
328
  def devices
325
- return @_devices if @_devices
326
- n = self.num_devices
327
- ptr2 = MemoryPointer::new( Device, n )
328
- error = OpenCL.clGetProgramInfo(self, DEVICES, Device.size*n, ptr2, nil)
329
- error_check(error)
330
- @_devices = ptr2.get_array_of_pointer(0, n).collect { |device_ptr|
331
- Device::new(device_ptr)
332
- }
333
- return @_devices
329
+ @_devices ||= begin
330
+ n = self.num_devices
331
+ ptr2 = MemoryPointer::new( Device, n )
332
+ error = OpenCL.clGetProgramInfo(self, DEVICES, Device.size*n, ptr2, nil)
333
+ error_check(error)
334
+ ptr2.get_array_of_pointer(0, n).collect { |device_ptr|
335
+ Device::new(device_ptr)
336
+ }
337
+ end
334
338
  end
335
339
 
336
340
  get_info("Program", :string, "source")
@@ -158,7 +158,7 @@ module OpenCL
158
158
  # ==== Returns
159
159
  #
160
160
  # the Event associated with the command
161
- def self.enqueue_svm_memfill(command_queue, svm_ptr, pattern, size, options = {})
161
+ def self.enqueue_svm_memfill(command_queue, svm_ptr, pattern, options = {})
162
162
  error_check(INVALID_OPERATION) if command_queue.context.platform.version_number < 2.0
163
163
  num_events, events = get_event_wait_list( options )
164
164
  pattern_size = pattern.size
@@ -30,7 +30,7 @@ module OpenCL
30
30
  prop_size += 2 if options[:mip_filter_mode]
31
31
  prop_size += 2 if options[:lod_min]
32
32
  prop_size += 2 if options[:lod_max]
33
- properties = MemoryPointer::new( :cl_sampler_info )
33
+ properties = MemoryPointer::new( :cl_sampler_properties, prop_size )
34
34
  properties[0].write_cl_sampler_info( Sampler::NORMALIZED_COORDS )
35
35
  properties[1].write_cl_bool( normalized_coords )
36
36
  properties[2].write_cl_sampler_info( Sampler::ADDRESSING_MODE )
@@ -71,11 +71,12 @@ module OpenCL
71
71
 
72
72
  # Returns the context associated with the Sampler
73
73
  def context
74
- return @_context if @_context
75
- ptr = MemoryPointer::new( Context )
76
- error = OpenCL.clGetSamplerInfo(self, CONTEXT, Context.size, ptr, nil)
77
- error_check(error)
78
- @_context = Context::new( ptr.read_pointer )
74
+ @_context ||= begin
75
+ ptr = MemoryPointer::new( Context )
76
+ error = OpenCL.clGetSamplerInfo(self, CONTEXT, Context.size, ptr, nil)
77
+ error_check(error)
78
+ Context::new( ptr.read_pointer )
79
+ end
79
80
  end
80
81
 
81
82
  get_info("Sampler", :cl_uint, "reference_count")
@@ -9,3 +9,4 @@ require "opencl_ruby_ffi/ext/device_fission.rb"
9
9
  require "opencl_ruby_ffi/khr/sub_groups.rb"
10
10
  require "opencl_ruby_ffi/khr/priority_hints.rb"
11
11
  require "opencl_ruby_ffi/khr/throttle_hints.rb"
12
+ require "opencl_ruby_ffi/khr/device_uuid.rb"
@@ -228,6 +228,23 @@ module OpenCL
228
228
  get_info("Device", :cl_unified_shared_memory_capabilities_intel, "device_shared_mem_capabilities_intel")
229
229
  get_info("Device", :cl_unified_shared_memory_capabilities_intel, "cross_device_mem_capabilities_intel")
230
230
  get_info("Device", :cl_unified_shared_memory_capabilities_intel, "shared_system_mem_capabilities_intel")
231
+
232
+ def clGetDeviceGlobalVariablePointerINTEL
233
+ @_clGetDeviceGlobalVariablePointerINTEL ||= begin
234
+ p = platform.get_extension_function("clGetDeviceGlobalVariablePointerINTEL", :cl_int, [Device, Program, :string, :pointer, :pointer])
235
+ error_check(OpenCL::INVALID_OPERATION) unless p
236
+ p
237
+ end
238
+ end
239
+
240
+ def get_global_variable_pointer_intel(program, name)
241
+ pSize = MemoryPointer::new(:size_t)
242
+ pAddr = MemoryPointer::new(:pointer)
243
+ error = clGetDeviceGlobalVariablePointerINTEL.call(self, program, name, pSize, pAddr)
244
+ error_check(error)
245
+ return USMPointer::new(pAddr.read_pointer.slice(0, pSize.read_size_t), self)
246
+ end
247
+
231
248
  end
232
249
  register_extension( :cl_intel_unified_shared_memory_preview, UnifiedSharedMemoryPreviewINTEL, "extensions.include?(\"cl_intel_unified_shared_memory_preview\")" )
233
250
  end
@@ -282,38 +299,43 @@ module OpenCL
282
299
  extend InnerGenerator
283
300
 
284
301
  def clGetMemAllocInfoINTEL
285
- return @_clGetMemAllocInfoINTEL if @_clGetMemAllocInfoINTEL
286
- @_clGetMemAllocInfoINTEL = platform.get_extension_function("clGetMemAllocInfoINTEL", :cl_int, [Context, :pointer, :cl_mem_info_intel, :size_t, :pointer, :pointer])
287
- error_check(OpenCL::INVALID_OPERATION) unless @_clGetMemAllocInfoINTEL
288
- return @_clGetMemAllocInfoINTEL
302
+ @_clGetMemAllocInfoINTEL ||= begin
303
+ p = platform.get_extension_function("clGetMemAllocInfoINTEL", :cl_int, [Context, :pointer, :cl_mem_info_intel, :size_t, :pointer, :pointer])
304
+ error_check(OpenCL::INVALID_OPERATION) unless p
305
+ p
306
+ end
289
307
  end
290
308
 
291
309
  def clHostMemAllocINTEL
292
- return @_clHostMemAllocINTEL if @_clHostMemAllocINTEL
293
- @_clHostMemAllocINTEL = platform.get_extension_function("clHostMemAllocINTEL", :pointer, [Context, :pointer, :size_t, :cl_uint, :pointer])
294
- error_check(OpenCL::INVALID_OPERATION) unless @_clHostMemAllocINTEL
295
- return @_clHostMemAllocINTEL
310
+ @_clHostMemAllocINTEL ||= begin
311
+ p = platform.get_extension_function("clHostMemAllocINTEL", :pointer, [Context, :pointer, :size_t, :cl_uint, :pointer])
312
+ error_check(OpenCL::INVALID_OPERATION) unless p
313
+ p
314
+ end
296
315
  end
297
316
 
298
317
  def clDeviceMemAllocINTEL
299
- return @_clDeviceMemAllocINTEL if @_clDeviceMemAllocINTEL
300
- @_clDeviceMemAllocINTEL = platform.get_extension_function("clDeviceMemAllocINTEL", :pointer, [Context, Device, :pointer, :size_t, :cl_uint, :pointer])
301
- error_check(OpenCL::INVALID_OPERATION) unless @_clDeviceMemAllocINTEL
302
- return @_clDeviceMemAllocINTEL
318
+ @_clDeviceMemAllocINTEL ||= begin
319
+ p = platform.get_extension_function("clDeviceMemAllocINTEL", :pointer, [Context, Device, :pointer, :size_t, :cl_uint, :pointer])
320
+ error_check(OpenCL::INVALID_OPERATION) unless p
321
+ p
322
+ end
303
323
  end
304
324
 
305
325
  def clSharedMemAllocINTEL
306
- return @_clSharedMemAllocINTEL if @_clSharedMemAllocINTEL
307
- @_clSharedMemAllocINTEL = platform.get_extension_function("clSharedMemAllocINTEL", :pointer, [Context, Device, :pointer, :size_t, :cl_uint, :pointer])
308
- error_check(OpenCL::INVALID_OPERATION) unless @_clSharedMemAllocINTEL
309
- return @_clSharedMemAllocINTEL
326
+ @_clSharedMemAllocINTEL ||= begin
327
+ p = platform.get_extension_function("clSharedMemAllocINTEL", :pointer, [Context, Device, :pointer, :size_t, :cl_uint, :pointer])
328
+ error_check(OpenCL::INVALID_OPERATION) unless p
329
+ p
330
+ end
310
331
  end
311
332
 
312
333
  def clMemFreeINTEL
313
- return @_clMemFreeINTEL if @_clMemFreeINTEL
314
- @_clMemFreeINTEL = platform.get_extension_function("clMemFreeINTEL", :cl_int, [Context, :pointer])
315
- error_check(OpenCL::INVALID_OPERATION) unless @_clMemFreeINTEL
316
- return @_clMemFreeINTEL
334
+ return @_clMemFreeINTEL ||= begin
335
+ p = platform.get_extension_function("clMemFreeINTEL", :cl_int, [Context, :pointer])
336
+ error_check(OpenCL::INVALID_OPERATION) unless p
337
+ p
338
+ end
317
339
  end
318
340
 
319
341
  def get_mem_properties_intel(properties)
@@ -414,10 +436,11 @@ module OpenCL
414
436
  extend InnerGenerator
415
437
 
416
438
  def clSetKernelArgMemPointerINTEL
417
- return @_clSetKernelArgMemPointerINTEL if @_clSetKernelArgMemPointerINTEL
418
- @_clSetKernelArgMemPointerINTEL = context.platform.get_extension_function("clSetKernelArgMemPointerINTEL", :cl_int, Kernel, :cl_uint, :pointer)
419
- error_check(OpenCL::INVALID_OPERATION) unless @_clSetKernelArgMemPointerINTEL
420
- return @_clSetKernelArgMemPointerINTEL
439
+ @_clSetKernelArgMemPointerINTEL ||= begin
440
+ p = context.platform.get_extension_function("clSetKernelArgMemPointerINTEL", :cl_int, Kernel, :cl_uint, :pointer)
441
+ error_check(OpenCL::INVALID_OPERATION) unless p
442
+ p
443
+ end
421
444
  end
422
445
 
423
446
  def set_arg_mem_pointer_intel(index, usm_pointer)
@@ -508,31 +531,35 @@ module OpenCL
508
531
  extend InnerGenerator
509
532
 
510
533
  def clEnqueueMemFillINTEL
511
- return @_clEnqueueMemFillINTEL if @_clEnqueueMemFillINTEL
512
- @_clEnqueueMemFillINTEL = platform.get_extension_function("clEnqueueMemFillINTEL", :cl_int, [CommandQueue, :pointer, :pointer, :size_t, :size_t, :cl_uint, :pointer, :pointer])
513
- error_check(OpenCL::INVALID_OPERATION) unless @_clEnqueueMemFillINTEL
514
- return @_clEnqueueMemFillINTEL
534
+ @_clEnqueueMemFillINTEL ||= begin
535
+ p = platform.get_extension_function("clEnqueueMemFillINTEL", :cl_int, [CommandQueue, :pointer, :pointer, :size_t, :size_t, :cl_uint, :pointer, :pointer])
536
+ error_check(OpenCL::INVALID_OPERATION) unless p
537
+ p
538
+ end
515
539
  end
516
540
 
517
541
  def clEnqueueMemcpyINTEL
518
- return @_clEnqueueMemcpyINTEL if @_clEnqueueMemcpyINTEL
519
- @_clEnqueueMemcpyINTEL = platform.get_extension_function("clEnqueueMemcpyINTEL", :cl_int, [CommandQueue, :cl_bool, :pointer, :pointer, :size_t, :cl_uint, :pointer, :pointer])
520
- error_check(OpenCL::INVALID_OPERATION) unless @_clEnqueueMemcpyINTEL
521
- return @_clEnqueueMemcpyINTEL
542
+ @_clEnqueueMemcpyINTEL ||= begin
543
+ p = platform.get_extension_function("clEnqueueMemcpyINTEL", :cl_int, [CommandQueue, :cl_bool, :pointer, :pointer, :size_t, :cl_uint, :pointer, :pointer])
544
+ error_check(OpenCL::INVALID_OPERATION) unless p
545
+ p
546
+ end
522
547
  end
523
548
 
524
549
  def clEnqueueMigrateMemINTEL
525
- return @_clEnqueueMigrateMemINTEL if @_clEnqueueMigrateMemINTEL
526
- @_clEnqueueMigrateMemINTEL = platform.get_extension_function("clEnqueueMigrateMemINTEL", :cl_int, [CommandQueue, :pointer, :size_t, :cl_mem_migration_flags_intel, :cl_uint, :pointer, :pointer])
527
- error_check(OpenCL::INVALID_OPERATION) unless @_clEnqueueMemcpyINTEL
528
- return @_clEnqueueMemcpyINTEL
550
+ @_clEnqueueMigrateMemINTEL ||= begin
551
+ p = platform.get_extension_function("clEnqueueMigrateMemINTEL", :cl_int, [CommandQueue, :pointer, :size_t, :cl_mem_migration_flags_intel, :cl_uint, :pointer, :pointer])
552
+ error_check(OpenCL::INVALID_OPERATION) unless p
553
+ p
554
+ end
529
555
  end
530
556
 
531
557
  def clEnqueueMemAdviseINTEL
532
- return @_clEnqueueMemAdviseINTEL if @_clEnqueueMemAdviseINTEL
533
- @_clEnqueueMemAdviseINTEL = platform.get_extension_function("clEnqueueMemAdviseINTEL", :cl_int, [CommandQueue, :pointer, :size_t, :cl_mem_advice_intel, :cl_uint, :pointer, :pointer])
534
- error_check(OpenCL::INVALID_OPERATION) unless @_clEnqueueMemAdviseINTEL
535
- return @_clEnqueueMemAdviseINTEL
558
+ @_clEnqueueMemAdviseINTEL ||= begin
559
+ p = platform.get_extension_function("clEnqueueMemAdviseINTEL", :cl_int, [CommandQueue, :pointer, :size_t, :cl_mem_advice_intel, :cl_uint, :pointer, :pointer])
560
+ error_check(OpenCL::INVALID_OPERATION) unless p
561
+ p
562
+ end
536
563
  end
537
564
 
538
565
  def enqueue_mem_fill_intel(usm_ptr, pattern, options = {})
@@ -0,0 +1,119 @@
1
+ using OpenCLRefinements if RUBY_VERSION.scan(/\d+/).collect(&:to_i).first >= 2
2
+
3
+ module OpenCL
4
+
5
+ UUID_SIZE_KHR = 16
6
+ LUID_SIZE_KHR = 8
7
+
8
+ DEVICE_UUID_KHR = 0x106A
9
+ DRIVER_UUID_KHR = 0x106B
10
+ DEVICE_LUID_VALID_KHR = 0x106C
11
+ DEVICE_LUID_KHR = 0x106D
12
+ DEVICE_NODE_MASK_KHR = 0x106E
13
+
14
+ class UUID < Struct
15
+ layout :id, [ OpenCL.find_type(:cl_uchar), UUID_SIZE_KHR ]
16
+ def to_s
17
+ a = self[:id].to_a
18
+ s = ""
19
+ s << "%02x" % a[15]
20
+ s << "%02x" % a[14]
21
+ s << "%02x" % a[13]
22
+ s << "%02x" % a[12]
23
+ s << "-"
24
+ s << "%02x" % a[11]
25
+ s << "%02x" % a[10]
26
+ s << "-"
27
+ s << "%02x" % a[9]
28
+ s << "%02x" % a[8]
29
+ s << "-"
30
+ s << "%02x" % a[7]
31
+ s << "%02x" % a[6]
32
+ s << "-"
33
+ s << "%02x" % a[5]
34
+ s << "%02x" % a[4]
35
+ s << "%02x" % a[3]
36
+ s << "%02x" % a[2]
37
+ s << "%02x" % a[1]
38
+ s << "%02x" % a[0]
39
+ end
40
+
41
+ def self.from_string(uuid)
42
+ new.from_string(uuid)
43
+ end
44
+
45
+ def from_string(uuid)
46
+ m = uuid.match(/(\h\h)(\h\h)(\h\h)(\h\h)-(\h\h)(\h\h)-(\h\h)(\h\h)-(\h\h)(\h\h)-(\h\h)(\h\h)(\h\h)(\h\h)(\h\h)(\h\h)/)
47
+ raise "invalid format" unless m
48
+ UUID_SIZE_KHR.times { |i|
49
+ self[:id][UUID_SIZE_KHR-1-i] = m[i+1].to_i(16)
50
+ }
51
+ self
52
+ end
53
+ end
54
+
55
+ class LUID < Struct
56
+ layout :id, [ OpenCL.find_type(:cl_uchar), LUID_SIZE_KHR ]
57
+ def to_s
58
+ a = self[:id].to_a
59
+ s = ""
60
+ s << "%02x" % a[7]
61
+ s << "%02x" % a[6]
62
+ s << "%02x" % a[5]
63
+ s << "%02x" % a[4]
64
+ s << "%02x" % a[3]
65
+ s << "%02x" % a[2]
66
+ s << "%02x" % a[1]
67
+ s << "%02x" % a[0]
68
+ end
69
+
70
+ def self.from_string(uuid)
71
+ new.from_string(uuid)
72
+ end
73
+
74
+ def from_string(uuid)
75
+ m = uuid.match(/(\h\h)(\h\h)(\h\h)(\h\h)(\h\h)(\h\h)(\h\h)(\h\h)/)
76
+ raise "invalid format" unless m
77
+ LUID_SIZE_KHR.times { |i|
78
+ self[:id][LUID_SIZE_KHR-1-i] = m[i+1].to_i(16)
79
+ }
80
+ self
81
+ end
82
+ end
83
+
84
+ class Device
85
+ UUID_KHR = 0x106A
86
+ LUID_VALID_KHR = 0x106C
87
+ LUID_KHR = 0x106D
88
+ NODE_MASK_KHR = 0x106E
89
+
90
+ module KHRDeviceUUID
91
+ extend InnerGenerator
92
+ get_info("Device", :cl_bool, "luid_valid_khr")
93
+ get_info("Device", :cl_uint, "node_mask_khr")
94
+
95
+ def uuid_khr
96
+ id = UUID.new
97
+ error = OpenCL.clGetDeviceInfo( self, UUID_KHR, UUID_SIZE_KHR, id, nil)
98
+ error_check(error)
99
+ return id
100
+ end
101
+
102
+ def driver_uuid_khr
103
+ id = UUID.new
104
+ error = OpenCL.clGetDeviceInfo( self, DRIVER_UUID_KHR, UUID_SIZE_KHR, id, nil)
105
+ error_check(error)
106
+ return id
107
+ end
108
+
109
+ def luid_khr
110
+ id = LUID.new
111
+ error = OpenCL.clGetDeviceInfo( self, LUID_KHR, LUID_SIZE_KHR, id, nil)
112
+ error_check(error)
113
+ return id
114
+ end
115
+ end
116
+ register_extension( :cl_khr_device_uuid, KHRDeviceUUID, "extensions.include?(\"cl_khr_device_uuid\")" )
117
+ end
118
+
119
+ end