Module: OpenCL::Kernel::UnifiedSharedMemoryPreviewINTEL

Included in:
OpenCL::Kernel
Defined in:
lib/opencl_ruby_ffi/intel/unified_shared_memory_preview.rb

Instance Method Summary collapse

Instance Method Details

#clSetKernelArgMemPointerINTELObject



438
439
440
441
442
443
444
# File 'lib/opencl_ruby_ffi/intel/unified_shared_memory_preview.rb', line 438

def clSetKernelArgMemPointerINTEL
  @_clSetKernelArgMemPointerINTEL ||= begin
    p = context.platform.get_extension_function("clSetKernelArgMemPointerINTEL", :cl_int, Kernel, :cl_uint, :pointer)
    error_check(OpenCL::INVALID_OPERATION) unless p
    p
  end
end

#enqueue_with_args(command_queue, global_work_size, *args) ⇒ Object



487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
# File 'lib/opencl_ruby_ffi/intel/unified_shared_memory_preview.rb', line 487

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
    options = args.last
  else
    options = {}
  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])
    elsif args[i].class == USMPointer then
      self.set_arg_mem_pointer_intel(i, args[i])
    else
      self.set_arg(i, args[i])
    end
  }
  command_queue.enqueue_ndrange_kernel(self, global_work_size, options)
end

#set_arg_mem_pointer_intel(index, usm_pointer) ⇒ Object



446
447
448
449
450
# File 'lib/opencl_ruby_ffi/intel/unified_shared_memory_preview.rb', line 446

def set_arg_mem_pointer_intel(index, usm_pointer)
  error = clSetKernelArgMemPointerINTEL.call(self, index, usm_pointer)
  error_check(error)
  return self 
end

#set_indirect_device_access_intel(flag) ⇒ Object



471
472
473
474
475
476
477
# File 'lib/opencl_ruby_ffi/intel/unified_shared_memory_preview.rb', line 471

def set_indirect_device_access_intel( flag )
  pt = MemoryPointer::new(  :cl_bool )
  pt.write_cl_bool( flag )
  error = OpenCL.clSetKernelExecInfo( self, EXEC_INFO_INDIRECT_DEVICE_ACCESS_INTEL, pt.size, pt)
  error_check(error)
  self
end

#set_indirect_host_access_intel(flag) ⇒ Object



463
464
465
466
467
468
469
# File 'lib/opencl_ruby_ffi/intel/unified_shared_memory_preview.rb', line 463

def set_indirect_host_access_intel( flag )
  pt = MemoryPointer::new(  :cl_bool )
  pt.write_cl_bool( flag )
  error = OpenCL.clSetKernelExecInfo( self, EXEC_INFO_INDIRECT_HOST_ACCESS_INTEL, pt.size, pt)
  error_check(error)
  self
end

#set_shared_device_access_intel(flag) ⇒ Object



479
480
481
482
483
484
485
# File 'lib/opencl_ruby_ffi/intel/unified_shared_memory_preview.rb', line 479

def set_shared_device_access_intel( flag )
  pt = MemoryPointer::new(  :cl_bool )
  pt.write_cl_bool( flag )
  error = OpenCL.clSetKernelExecInfo( self, EXEC_INFO_SHARED_DEVICE_ACCESS_INTEL, pt.size, pt)
  error_check(error)
  self
end

#set_usm_ptrs_intel(ptrs) ⇒ Object



452
453
454
455
456
457
458
459
460
461
# File 'lib/opencl_ruby_ffi/intel/unified_shared_memory_preview.rb', line 452

def set_usm_ptrs_intel( ptrs )
  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_USM_PTRS_INTEL, pt.size, pt)
  error_check(error)
  self
end