Module: OpenCL::Kernel::OpenCL21
- Included in:
- OpenCL::Kernel
- Defined in:
- lib/opencl_ruby_ffi/Kernel.rb
Instance Method Summary collapse
- #clone ⇒ Object
- #compile_num_sub_groups(device = program.devices.first) ⇒ Object
- #local_size_for_sub_group_count(sub_group_number, device = program.devices.first) ⇒ Object
- #max_num_sub_groups(device = program.devices.first) ⇒ Object
- #max_sub_group_size_for_ndrange(local_work_size, device = program.devices.first) ⇒ Object
- #sub_groups_count_for_ndrange(local_work_size, device = program.devices.first) ⇒ Object
Instance Method Details
#clone ⇒ Object
425 426 427 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 425 def clone return OpenCL.clone_kernel( self ) end |
#compile_num_sub_groups(device = program.devices.first) ⇒ Object
378 379 380 381 382 383 384 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 378 def compile_num_sub_groups(device = program.devices.first) error_check(INVALID_OPERATION) if self.context.platform.version_number < 2.1 ptr = MemoryPointer::new( :size_t ) error = OpenCL.clGetKernelSubGroupInfo(self, device, COMPILE_NUM_SUB_GROUPS, 0, nil, ptr.size, ptr, nil) error_check(error) return ptr.read_size_t end |
#local_size_for_sub_group_count(sub_group_number, device = program.devices.first) ⇒ Object
412 413 414 415 416 417 418 419 420 421 422 423 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 412 def local_size_for_sub_group_count(sub_group_number, device = program.devices.first) error_check(INVALID_OPERATION) if self.context.platform.version_number < 2.1 sgp_p = MemoryPointer::new( :size_t ) sgp_p.write_size_t(sub_group_number) size_ptr = MemoryPointer::new( :size_t ) error = OpenCL.clGetKernelSubGroupInfo(self, device, LOCAL_SIZE_FOR_SUB_GROUP_COUNT, sgp_p.size, sgp_p, 0, nil, size_ptr) error_check(error) lws_p = MemoryPointer::new( size_ptr.read_size_t ) error = OpenCL.clGetKernelSubGroupInfo(self, device, LOCAL_SIZE_FOR_SUB_GROUP_COUNT, sgp_p.size, sgp_p, lws_p.size, lws_p, nil) error_check(error) return lws_p.get_array_of_size_t(0, lws_p.size/size_ptr.size) end |
#max_num_sub_groups(device = program.devices.first) ⇒ Object
370 371 372 373 374 375 376 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 370 def max_num_sub_groups(device = program.devices.first) error_check(INVALID_OPERATION) if self.context.platform.version_number < 2.1 ptr = MemoryPointer::new( :size_t ) error = OpenCL.clGetKernelSubGroupInfo(self, device, MAX_NUM_SUB_GROUPS, 0, nil, ptr.size, ptr, nil) error_check(error) return ptr.read_size_t end |
#max_sub_group_size_for_ndrange(local_work_size, device = program.devices.first) ⇒ Object
386 387 388 389 390 391 392 393 394 395 396 397 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 386 def max_sub_group_size_for_ndrange(local_work_size, device = program.devices.first) error_check(INVALID_OPERATION) if self.context.platform.version_number < 2.1 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.clGetKernelSubGroupInfo(self, device, MAX_SUB_GROUP_SIZE_FOR_NDRANGE, lws_p.size, lws_p, ptr.size, ptr, nil) error_check(error) return ptr.read_size_t end |
#sub_groups_count_for_ndrange(local_work_size, device = program.devices.first) ⇒ Object
399 400 401 402 403 404 405 406 407 408 409 410 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 399 def sub_groups_count_for_ndrange(local_work_size, device = program.devices.first) error_check(INVALID_OPERATION) if self.context.platform.version_number < 2.1 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.clGetKernelSubGroupInfo(self, device, SUB_GROUP_COUNT_FOR_NDRANGE, lws_p.size, lws_p, ptr.size, ptr, nil) error_check(error) return ptr.read_size_t end |