class MetaCL::Templates::KernelInit

Attributes

counter[R]
kernel_code[R]
m_from[R]
m_to[R]
n_from[R]
n_to[R]
template_params[R]

Public Instance Methods

gen_kernel_code() click to toggle source
# File lib/metacl/templates/kernel_init.rb, line 20
def gen_kernel_code
  params = []
  @objects.each do |x|
    case x.klass
      when :matrix, :array
        params << "global const #{x.type}* #{x.name}"
      when :numeric
        # TODO
    end
  end
  params << "global #{@result_object.type}* #{@result_object.name}"

  @kernel_code = Templates::Kernel.render(params.join(', '), @code, @n_from, @m_from, @counter)
  @kernel_code = Utils.stringify_text(@kernel_code)
end
gen_template_params() click to toggle source
# File lib/metacl/templates/kernel_init.rb, line 36
def gen_template_params
  params = []
  @objects.each do |x|
    case x.klass
      when :matrix, :array
        params << "cl::Buffer&"
      when :numeric
        # TODO
    end
  end
  params << "cl::Buffer&" # for result
  @template_params = params.join(', ')
end
render(from_border, to_border, code, result_object, objects, counter, platform) click to toggle source
Calls superclass method
# File lib/metacl/templates/kernel_init.rb, line 6
def render(from_border, to_border, code, result_object, objects, counter, platform)
  if platform == :cl
    @counter        = counter
    @code           = Utils.tab_text(code, 1)
    @result_object  = result_object
    @objects        = objects
    @n_from, @m_from  = from_border
    @n_to, @m_to      = to_border
    gen_kernel_code
    gen_template_params
    super IO.read("#{__dir__}/kernel_init.cl.template")
  end
end