Module: OpenCL::Kernel::KHRSubGroups

Included in:
OpenCL::Kernel
Defined in:
lib/opencl_ruby_ffi/khr/sub_groups.rb

Instance Method Summary collapse

Instance Method Details

#max_sub_group_size_for_ndrange_khr(local_work_size, device = program.devices.first) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/opencl_ruby_ffi/khr/sub_groups.rb', line 16

def max_sub_group_size_for_ndrange_khr(local_work_size, device = program.devices.first)
  error_check(INVALID_OPERATION) unless device.extensions.include?( "cl_khr_sub_groups" )
  local_work_size = [local_work_size].flatten
  lws_p = MemoryPointer::new( :size_t, local_work_size.length )
  local_work_size.each_with_index { |e,i|
    lws_p[i].write_size_t( e )
  }
  ptr = MemoryPointer::new( :size_t )
  error = OpenCL.clGetKernelSubGroupInfoKHR(self, device, MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR, lws_p.size, lws_p, ptr.size, ptr, nil)
  error_check(error)
  return ptr.read_size_t
end

#sub_groups_count_for_ndrange_khr(local_work_size, device = program.devices.first) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/opencl_ruby_ffi/khr/sub_groups.rb', line 29

def sub_groups_count_for_ndrange_khr(local_work_size, device = program.devices.first)
  error_check(INVALID_OPERATION) unless device.extensions.include?( "cl_khr_sub_groups" )
  local_work_size = [local_work_size].flatten
  lws_p = MemoryPointer::new( :size_t, local_work_size.length )
  local_work_size.each_with_index { |e,i|
    lws_p[i].write_size_t( e )
  }
  ptr = MemoryPointer::new( :size_t )
  error = OpenCL.clGetKernelSubGroupInfoKHR(self, device, SUB_GROUP_COUNT_FOR_NDRANGE_KHR, lws_p.size, lws_p, ptr.size, ptr, nil)
  error_check(error)
  return ptr.read_size_t
end