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
398 399 400 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 398 def clone return OpenCL.clone_kernel( self ) end |
#compile_num_sub_groups(device = program.devices.first) ⇒ Object
351 352 353 354 355 356 357 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 351 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
385 386 387 388 389 390 391 392 393 394 395 396 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 385 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
343 344 345 346 347 348 349 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 343 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
359 360 361 362 363 364 365 366 367 368 369 370 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 359 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
372 373 374 375 376 377 378 379 380 381 382 383 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 372 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 |