Module: OpenCL::Device::EXTDeviceFission
- Included in:
- OpenCL::Device
- Defined in:
- lib/opencl_ruby_ffi/ext/device_fission.rb
Instance Method Summary collapse
-
#affinity_domains_ext ⇒ Object
Returns the OpenCL::Device::affinity_domains_ext info.
- #create_sub_devices_ext(properties) ⇒ Object
-
#parent_device_ext ⇒ Object
Returns the parent Device if it exists.
- #partition_by_affinity_domain_ext(affinity_domain = AffinityDomainEXT::NEXT_FISSIONABLE_EXT) ⇒ Object
- #partition_by_counts_ext(*compute_unit_count_list) ⇒ Object
- #partition_by_names_ext(*compute_unit_name_list) ⇒ Object
- #partition_equally_ext(compute_unit_number = 1) ⇒ Object
- #partition_style_ext ⇒ Object
-
#partition_types_ext ⇒ Object
Returns the list of partition types supported by the Device.
-
#reference_count_ext ⇒ Object
Returns the OpenCL::Device::reference_count_ext info.
Instance Method Details
#affinity_domains_ext ⇒ Object
Returns the OpenCL::Device::affinity_domains_ext info
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_ext ⇒ Object
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_ext ⇒ Object
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_ext ⇒ Object
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_ext ⇒ Object
Returns the OpenCL::Device::reference_count_ext info
192 |
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 192 get_info("Device", :cl_uint, "reference_count_ext") |