Module: OpenCL::Device::EXTDeviceFission

Included in:
OpenCL::Device
Defined in:
lib/opencl_ruby_ffi/ext/device_fission.rb

Instance Method Summary collapse

Instance Method Details

#affinity_domains_extObject

Returns the OpenCL::Device::affinity_domains_ext info

Returns:

  • an Array of cl_device_affinity_domain_ext



182
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 182

get_info_array("Device", :cl_device_affinity_domain_ext, "affinity_domains_ext")

#create_sub_devices_ext(properties) ⇒ Object



234
235
236
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 234

def create_sub_devices_ext( properties )
  OpenCL.create_sub_devices_ext( self, properties )
end

#parent_device_extObject

Returns the parent Device if it exists



185
186
187
188
189
190
191
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 185

def parent_device_ext
  ptr = MemoryPointer::new( Device )
  error = OpenCL.clGetDeviceInfo(self, PARENT_DEVICE_EXT, Device.size, ptr, nil)
  error_check(error)
  return nil if ptr.null?
  return Device::new(ptr.read_pointer)
end

#partition_by_affinity_domain_ext(affinity_domain = AffinityDomainEXT::NEXT_FISSIONABLE_EXT) ⇒ Object



238
239
240
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 238

def partition_by_affinity_domain_ext( affinity_domain = AffinityDomainEXT::NEXT_FISSIONABLE_EXT )
  return OpenCL.create_sub_devices_ext( self,  [ PartitionEXT::BY_AFFINITY_DOMAIN_EXT, affinity_domain ] )
end

#partition_by_counts_ext(*compute_unit_count_list) ⇒ Object



246
247
248
249
250
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 246

def partition_by_counts_ext( *compute_unit_count_list )
  compute_unit_count_list = [1] if compute_unit_count_list == []
  compute_unit_count_list.flatten!
  return OpenCL.create_sub_devices_ext( self,  [ PartitionEXT::BY_COUNTS_EXT] + compute_unit_count_list + [ PartitionEXT::BY_COUNTS_LIST_END_EXT ] )
end

#partition_by_names_ext(*compute_unit_name_list) ⇒ Object



252
253
254
255
256
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 252

def partition_by_names_ext( *compute_unit_name_list )
  compute_unit_name_list = [0] if compute_unit_name_list == []
  compute_unit_name_list.flatten!
  return OpenCL.create_sub_devices_ext( self,  [ PartitionEXT::BY_NAMES_EXT ] + compute_unit_name_list + [ PartitionEXT::BY_NAMES_LIST_END_EXT ] )
end

#partition_equally_ext(compute_unit_number = 1) ⇒ Object



242
243
244
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 242

def partition_equally_ext( compute_unit_number = 1 )
  return OpenCL.create_sub_devices_ext( self,  [ PartitionEXT::EQUALLY_EXT, compute_unit_number ] )
end

#partition_style_extObject



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 195

def partition_style_ext
  ptr1 = MemoryPointer::new( :size_t, 1)
  error = OpenCL.clGetDeviceInfo(self, PARTITION_STYLE_EXT, 0, nil, ptr1)
  error_check(error)
  ptr2 = MemoryPointer::new( ptr1.read_size_t )
  error = OpenCL.clGetDeviceInfo(self, PARTITION_STYLE_EXT, ptr1.read_size_t, ptr2, nil)
  error_check(error)
  arr = ptr2.get_array_of_cl_device_partition_property_ext(0, ptr1.read_size_t/ OpenCL.find_type(:cl_device_partition_property).size)
  return [] if arr.length == 0
  ptype = arr.first.to_i
  arr_2 = []
  arr_2.push( PartitionEXT::new(ptype) )
  return arr_2 if arr.length == 1
  case ptype
  when PartitionEXT::BY_NAMES_EXT
    i = 1
    while arr[i].to_i - (0x1 << Pointer.size * 8) != PartitionEXT::BY_NAMES_LIST_END_EXT do
      arr_2.push( arr[i].to_i )
      i += 1
      return arr_2 if arr.length <= i
    end
    arr_2.push( PartitionEXT::new(PartitionEXT::BY_NAMES_LIST_END_EXT) )
    arr_2.push( 0 )
  when PartitionEXT::EQUALLY_EXT
    arr_2.push(arr[1].to_i)
    arr_2.push( 0 )
  when PartitionEXT::BY_COUNTS_EXT
    i = 1
    while arr[i].to_i != PartitionEXT::BY_COUNTS_LIST_END_EXT do
      arr_2.push( arr[i].to_i )
      i += 1
      return arr_2 if arr.length <= i
    end
    arr_2.push( PartitionEXT::new(PartitionEXT::BY_COUNTS_LIST_END_EXT) )
    arr_2.push( 0 )
  end
  return arr_2
end

#partition_types_extObject

Returns the list of partition types supported by the Device



170
171
172
173
174
175
176
177
178
179
180
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 170

def partition_types_ext
  ptr1 = MemoryPointer::new( :size_t, 1)
  error = OpenCL.clGetDeviceInfo(self, PARTITION_TYPES_EXT, 0, nil, ptr1)
  error_check(error)
  ptr2 = MemoryPointer::new( ptr1.read_size_t )
  error = OpenCL.clGetDeviceInfo(self, PARTITION_TYPES_EXT, ptr1.read_size_t, ptr2, nil)
  error_check(error)
  arr = ptr2.get_array_of_cl_device_partition_property_ext(0, ptr1.read_size_t/ OpenCL.find_type(:cl_device_partition_property_ext).size)
  arr.reject! { |e| e == 0 }
  return arr.collect { |e| PartitionEXT::new(e.to_i) }
end

#reference_count_extObject

Returns the OpenCL::Device::reference_count_ext info

Returns:

  • cl_uint



193
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 193

get_info("Device", :cl_uint, "reference_count_ext")