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
320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 320 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.
315 316 317 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 315 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.
305 306 307 308 309 310 311 312 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 305 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
292 293 294 295 296 297 298 299 300 301 302 |
# File 'lib/opencl_ruby_ffi/Kernel.rb', line 292 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 |