Class: Ikra::Translator::CommandTranslator::ForLoopKernelLauncher

Inherits:
KernelLauncher show all
Defined in:
lib/translator/kernel_launcher/for_loop_kernel_launcher.rb

Instance Attribute Summary collapse

Attributes inherited from KernelLauncher

#additional_arguments, #block_dim, #cached_results, #grid_dim, #kernel_builder, #kernel_result_var_name, #num_threads, #previous_kernel_input, #previously_cached_results, #reuse_memory

Instance Method Summary collapse

Methods inherited from KernelLauncher

#add_additional_arguments, #add_cached_result, #add_previous_kernel_parameter, #assert_ready_to_build, #build_device_memory_free, #build_device_memory_free_in_host_section, #configure_grid, #kernel_builders, #prepare_additional_args_for_launch, #result_size, #result_type, #reuse_memory!, #reuse_memory?, #use_cached_result

Constructor Details

#initialize(kernel_builder:, from_expr: "0", to_expr:, var_name: "i", before_loop: "") ⇒ ForLoopKernelLauncher

Returns a new instance of ForLoopKernelLauncher.



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/translator/kernel_launcher/for_loop_kernel_launcher.rb', line 5

def initialize(
    kernel_builder:, 
    from_expr: "0", 
    to_expr:, 
    var_name: "i", 
    before_loop: "")

    super(kernel_builder)
    @from_expr = from_expr
    @to_expr = to_expr
    @var_name = var_name
    @before_loop = before_loop
end

Instance Attribute Details

#before_loopObject (readonly)

Returns the value of attribute before_loop.



22
23
24
# File 'lib/translator/kernel_launcher/for_loop_kernel_launcher.rb', line 22

def before_loop
  @before_loop
end

#from_exprObject (readonly)

Returns the value of attribute from_expr.



19
20
21
# File 'lib/translator/kernel_launcher/for_loop_kernel_launcher.rb', line 19

def from_expr
  @from_expr
end

#to_exprObject (readonly)

Returns the value of attribute to_expr.



20
21
22
# File 'lib/translator/kernel_launcher/for_loop_kernel_launcher.rb', line 20

def to_expr
  @to_expr
end

#var_nameObject (readonly)

Returns the value of attribute var_name.



21
22
23
# File 'lib/translator/kernel_launcher/for_loop_kernel_launcher.rb', line 21

def var_name
  @var_name
end

Instance Method Details

#build_kernel_launcherObject



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/translator/kernel_launcher/for_loop_kernel_launcher.rb', line 24

def build_kernel_launcher
    Log.info("Building for-loop kernel launcher")

    assert_ready_to_build

    result = before_loop + "\n"
    result = result + "for (int #{var_name} = #{from_expr}; #{var_name}  < #{to_expr}; #{var_name} ++)\n{"

    result = result + super
    result = result + "\n}\n"

    return result
end