Module: OpenCL::Kernel::OpenCL20
- Included in:
- OpenCL::Kernel
- Defined in:
- lib/opencl_ruby_ffi/Kernel.rb
Instance Method Summary collapse
-
#enqueue_with_args(command_queue, global_work_size, *args) ⇒ Object
Enqueues the Kernel in the given queue, specifying the global_work_size.
-
#set_arg_svm_pointer(index, svm_pointer) ⇒ Object
Set the index th argument of the Kernel to an svm pointer value.
-
#set_svm_fine_grain_system(flag) ⇒ Object
Specifies the granularity of the SVM system.
-
#set_svm_ptrs(ptrs) ⇒ Object
Specifies the list of SVM pointers the kernel will be using.
Instance Method Details
#enqueue_with_args(command_queue, global_work_size, *args) ⇒ Object
Enqueues the Kernel in the given queue, specifying the global_work_size. Arguments for the kernel are specified afterwards. Last, a hash containing options for enqueu_ndrange kernel can be specified
350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 350 def enqueue_with_args(command_queue, global_work_size, *args) n = self.num_args error_check(INVALID_KERNEL_ARGS) if args.length < n error_check(INVALID_KERNEL_ARGS) if args.length > n + 1 if args.length == n + 1 = args.last else = {} end n.times { |i| if args[i].class == SVMPointer and self.context.platform.version_number >= 2.0 then self.set_arg_svm_pointer(i, args[i]) else self.set_arg(i, args[i]) end } command_queue.enqueue_ndrange_kernel(self, global_work_size, ) end |
#set_arg_svm_pointer(index, svm_pointer) ⇒ Object
Set the index th argument of the Kernel to an svm pointer value.
345 346 347 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 345 def set_arg_svm_pointer(index, svm_pointer) OpenCL.set_kernel_arg_svm_pointer(self, index, svm_pointer) end |
#set_svm_fine_grain_system(flag) ⇒ Object
Specifies the granularity of the SVM system.
335 336 337 338 339 340 341 342 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 335 def set_svm_fine_grain_system( flag ) error_check(INVALID_OPERATION) if self.context.platform.version_number < 2.0 pt = MemoryPointer::new( :cl_bool ) pt.write_cl_bool( flag ) error = OpenCL.clSetKernelExecInfo( self, EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, pt.size, pt) error_check(error) return self end |
#set_svm_ptrs(ptrs) ⇒ Object
Specifies the list of SVM pointers the kernel will be using
322 323 324 325 326 327 328 329 330 331 332 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 322 def set_svm_ptrs( ptrs ) error_check(INVALID_OPERATION) if self.context.platform.version_number < 2.0 pointers = [ptrs].flatten pt = MemoryPointer::new( :pointer, pointers.length ) pointers.each_with_index { |p, i| pt[i].write_pointer(p) } error = OpenCL.clSetKernelExecInfo( self, EXEC_INFO_SVM_PTRS, pt.size, pt) error_check(error) return self end |