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



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

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

#create_sub_devices_ext(properties) ⇒ Object



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

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

#parent_device_extObject

Returns the parent Device if it exists



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

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



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

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



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

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



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

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



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

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



194
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
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 194

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



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

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



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

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