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
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_ext ⇒ Object
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_ext ⇒ Object
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_ext ⇒ Object
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_ext ⇒ Object
Returns the OpenCL::Device::reference_count_ext info
193 |
# File 'lib/opencl_ruby_ffi/ext/device_fission.rb', line 193 get_info("Device", :cl_uint, "reference_count_ext") |