metacl 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -1
- data/lib/metacl/dsl.rb +1 -0
- data/lib/metacl/dsl/expression_applicator.rb +20 -4
- data/lib/metacl/dsl/gpu_transer.rb +21 -0
- data/lib/metacl/dsl/root.rb +15 -5
- data/lib/metacl/templates.rb +5 -1
- data/lib/metacl/templates/download_from_gpu.rb +14 -0
- data/lib/metacl/templates/expression_applicator_wrapper.cl.template +1 -21
- data/lib/metacl/templates/expression_applicator_wrapper.rb +4 -56
- data/lib/metacl/templates/iterate.any.template +1 -0
- data/lib/metacl/templates/iterate.rb +16 -0
- data/lib/metacl/templates/kernel.cl.template +1 -1
- data/lib/metacl/templates/kernel.rb +3 -2
- data/lib/metacl/templates/kernel_init.cl.template +16 -0
- data/lib/metacl/templates/kernel_init.rb +51 -0
- data/lib/metacl/templates/upload_to_gpu.rb +20 -0
- data/lib/metacl/templates/wrapper.cl.template +4 -1
- data/lib/metacl/templates/wrapper.cpp.template +1 -0
- data/lib/metacl/templates/wrapper.rb +3 -3
- data/lib/metacl/version.rb +1 -1
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f78c15cdb7d30650509f1fe663a854b9ffc5d5e9
|
4
|
+
data.tar.gz: 6225085ec4af69bb79757e38fc4472f6665104c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2073478d343372b2a74ca9448e0cbd7c4d60014c9883944f2e7e5730444140b24df908882c23478070120a18d14af0eb0868ca346d3ebf48a62628f38f7bf03c
|
7
|
+
data.tar.gz: 4c8efdd5cf387bea3f8866c29201028f631a4dbf47918d58778fe1d26b487ce1703633ca9b45ee3917ce01099fd845c25ba0913bd5547f81ec92fb5e8661a34b
|
data/README.md
CHANGED
@@ -18,7 +18,11 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
|
21
|
+
$ metacl some.mcl
|
22
|
+
|
23
|
+
Translates some.mcl to some.cpp. Example compile command for OS X (also you must have cl.hpp in OpenCL folder):
|
24
|
+
|
25
|
+
$ clang++ -framework OpenCL -stdlib=libc++ -std=gnu++11 some.cpp
|
22
26
|
|
23
27
|
## Contributing
|
24
28
|
|
data/lib/metacl/dsl.rb
CHANGED
@@ -1,10 +1,19 @@
|
|
1
1
|
module MetaCL
|
2
2
|
module DSL
|
3
3
|
class ExpressionApplicator
|
4
|
-
|
4
|
+
@@counter = 0
|
5
|
+
attr_reader :code, :init_code
|
5
6
|
|
6
7
|
def initialize(program, expr, result_matrix, options = {})
|
7
|
-
|
8
|
+
@@counter += 1
|
9
|
+
@program = program
|
10
|
+
@expr = if expr.kind_of? Logic::Node
|
11
|
+
expr.deep_clone
|
12
|
+
elsif expr.kind_of? Symbol
|
13
|
+
Logic::Node.new :data, nil, nil, name: expr
|
14
|
+
elsif expr.kind_of? Numeric
|
15
|
+
Logic::Node.new :const, nil, nil, data: expr
|
16
|
+
end
|
8
17
|
@result_matrix = program.resources.matrices_hash[result_matrix]
|
9
18
|
|
10
19
|
@left_border = options[:from] || [0, 0]
|
@@ -15,11 +24,17 @@ module MetaCL
|
|
15
24
|
prepare_tree
|
16
25
|
code_generation
|
17
26
|
|
18
|
-
@
|
27
|
+
@init_code = if @program.platform == :cl
|
28
|
+
Templates::KernelInit.render(@left_border, @right_border, @expr.params.code || '', @result_matrix, @expr.objects, @@counter, @program.platform)
|
29
|
+
else
|
30
|
+
''
|
31
|
+
end
|
32
|
+
@code = Templates::ExpressionApplicatorWrapper.render(@left_border, @right_border, @expr.params.code || '', @expr.objects, @result_matrix, @@counter, @program.platform)
|
19
33
|
end
|
20
34
|
|
21
35
|
def self.construct(program, expr, result_matrix, options = {})
|
22
|
-
ExpressionApplicator.new(program, expr, result_matrix, options)
|
36
|
+
e = ExpressionApplicator.new(program, expr, result_matrix, options)
|
37
|
+
[e.code, e.init_code]
|
23
38
|
end
|
24
39
|
|
25
40
|
def prepare_tree
|
@@ -85,6 +100,7 @@ module MetaCL
|
|
85
100
|
end
|
86
101
|
end
|
87
102
|
|
103
|
+
@expr.params.code ||= ''
|
88
104
|
@expr.params.code += "#{@result_matrix.name}[i*#{@result_matrix.size_m} + j] = #{@expr.params.var};\n"
|
89
105
|
end
|
90
106
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module MetaCL
|
2
|
+
module DSL
|
3
|
+
module GPUTransfers
|
4
|
+
def upload_to_gpu(*args)
|
5
|
+
args.each do |name|
|
6
|
+
object = @program.resources[name]
|
7
|
+
@inner_code << Templates::UploadToGPU.render(object, @program.platform)
|
8
|
+
end
|
9
|
+
@inner_code << "\n"
|
10
|
+
end
|
11
|
+
|
12
|
+
def download_from_gpu(*args)
|
13
|
+
args.each do |name|
|
14
|
+
object = @program.resources[name]
|
15
|
+
@inner_code << Templates::DownloadFromGPU.render(object, @program.platform)
|
16
|
+
end
|
17
|
+
@inner_code << "\n"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/metacl/dsl/root.rb
CHANGED
@@ -5,18 +5,20 @@ module MetaCL
|
|
5
5
|
|
6
6
|
include Directs
|
7
7
|
include DataDefinitions
|
8
|
+
include GPUTransfers
|
8
9
|
|
9
10
|
using Refinements
|
10
11
|
|
11
12
|
def initialize(program, filename)
|
12
13
|
@program = program
|
13
14
|
super() # call initializers from modules
|
14
|
-
@inner_code
|
15
|
-
@
|
15
|
+
@inner_code = ""
|
16
|
+
@post_init_code = ""
|
17
|
+
@outer_code = ""
|
16
18
|
|
17
19
|
instance_eval IO.read(filename), filename
|
18
20
|
|
19
|
-
@code = Templates::Wrapper.render(@inner_code, @outer_code, @program.platform)
|
21
|
+
@code = Templates::Wrapper.render(@inner_code, @post_init_code, @outer_code, @program.platform)
|
20
22
|
end
|
21
23
|
|
22
24
|
def platform(name)
|
@@ -24,7 +26,7 @@ module MetaCL
|
|
24
26
|
end
|
25
27
|
|
26
28
|
def prints(string)
|
27
|
-
@inner_code << Templates::Prints.render(string, @program.platform) << "\n"
|
29
|
+
@inner_code << Templates::Prints.render(string, @program.platform) << "\n\n"
|
28
30
|
end
|
29
31
|
|
30
32
|
def expression(name, *args, &block)
|
@@ -34,13 +36,21 @@ module MetaCL
|
|
34
36
|
|
35
37
|
def apply_expression(matrix_name, options = {}, &block)
|
36
38
|
expr = Expression.construct(@program, &block)
|
37
|
-
|
39
|
+
code, init_code = ExpressionApplicator.construct(@program, expr, matrix_name, options)
|
40
|
+
@inner_code << code << "\n\n"
|
41
|
+
@post_init_code << init_code << "\n\n"
|
38
42
|
end
|
39
43
|
|
40
44
|
def print_matrix(name)
|
41
45
|
matrix = @program.resources.matrices_hash[name]
|
42
46
|
@inner_code << Templates::PrintMatrix.render(matrix.name, matrix.size_n, matrix.size_m, @program.platform)
|
43
47
|
end
|
48
|
+
|
49
|
+
def repeat(count, &block)
|
50
|
+
@inner_code << Templates::Iterate.render(count) << "\n"
|
51
|
+
instance_eval(&block)
|
52
|
+
@inner_code << "}\n\n"
|
53
|
+
end
|
44
54
|
end
|
45
55
|
end
|
46
56
|
end
|
data/lib/metacl/templates.rb
CHANGED
@@ -6,4 +6,8 @@ require 'metacl/templates/init_matrix'
|
|
6
6
|
require 'metacl/templates/kernel'
|
7
7
|
require 'metacl/templates/expression_applicator_wrapper'
|
8
8
|
require 'metacl/templates/print_matrix'
|
9
|
-
require 'metacl/templates/aggregator'
|
9
|
+
require 'metacl/templates/aggregator'
|
10
|
+
require 'metacl/templates/upload_to_gpu'
|
11
|
+
require 'metacl/templates/download_from_gpu'
|
12
|
+
require 'metacl/templates/kernel_init'
|
13
|
+
require 'metacl/templates/iterate'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module MetaCL
|
2
|
+
module Templates
|
3
|
+
class DownloadFromGPU < Mustache
|
4
|
+
|
5
|
+
def render(object, platform)
|
6
|
+
if platform == :cl
|
7
|
+
"queue.enqueueReadBuffer(buffer_#{object.name},CL_TRUE,0,sizeof(#{object.type})*#{object.size_n}*#{object.size_m},#{object.name}.data());\n"
|
8
|
+
else
|
9
|
+
""
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,21 +1 @@
|
|
1
|
-
|
2
|
-
{{{kernel_code}}}
|
3
|
-
|
4
|
-
sources.push_back({kernel_code.c_str(),kernel_code.length()});
|
5
|
-
|
6
|
-
cl::Program program(context,sources);
|
7
|
-
if(program.build({default_device})!=CL_SUCCESS){
|
8
|
-
std::cout<<" Error building: "<<program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(default_device)<<"\n";
|
9
|
-
exit(1);
|
10
|
-
}
|
11
|
-
|
12
|
-
//create queue to which we will push commands for the device.
|
13
|
-
cl::CommandQueue queue(context,default_device);
|
14
|
-
|
15
|
-
{{{push_buffers}}}
|
16
|
-
|
17
|
-
auto metacl_program = cl::make_kernel<{{{template_params}}}>(program, "metacl_program");
|
18
|
-
cl::EnqueueArgs eargs(queue, cl::NullRange, cl::NDRange({{n_to}} - {{n_from}}, {{m_to}} - {{m_from}}), cl::NullRange);
|
19
|
-
metacl_program(eargs, {{{kernel_params}}}).wait();
|
20
|
-
|
21
|
-
{{{pop_buffer}}}
|
1
|
+
metacl_program{{counter}}(eargs{{counter}}, {{{kernel_params}}}).wait();
|
@@ -2,54 +2,23 @@ module MetaCL
|
|
2
2
|
module Templates
|
3
3
|
class ExpressionApplicatorWrapper < Mustache
|
4
4
|
attr_reader :n_from, :n_to, :m_from, :m_to, :code
|
5
|
-
attr_reader :
|
5
|
+
attr_reader :kernel_params, :counter
|
6
6
|
|
7
|
-
def render(from_border, to_border, code, objects, result_object, platform)
|
7
|
+
def render(from_border, to_border, code, objects, result_object, counter, platform)
|
8
8
|
@n_from, @m_from = from_border
|
9
9
|
@n_to, @m_to = to_border
|
10
|
-
@code = Utils.tab_text(code, platform == :cl ? 1 : 2)
|
11
10
|
@objects = objects
|
12
11
|
@result_object = result_object
|
12
|
+
@code = Utils.tab_text(code, platform == :cl ? 1 : 2)
|
13
|
+
@counter = counter
|
13
14
|
|
14
15
|
if platform == :cl
|
15
|
-
gen_push_buffers
|
16
|
-
gen_template_params
|
17
16
|
gen_kernel_params
|
18
|
-
gen_pop_buffer
|
19
|
-
gen_kernel_code
|
20
17
|
end
|
21
18
|
|
22
19
|
super IO.read("#{__dir__}/expression_applicator_wrapper.#{platform}.template")
|
23
20
|
end
|
24
21
|
|
25
|
-
def gen_push_buffers
|
26
|
-
@push_buffers = ""
|
27
|
-
@objects.each do |x|
|
28
|
-
case x.klass
|
29
|
-
when :matrix
|
30
|
-
@push_buffers << "queue.enqueueWriteBuffer(buffer_#{x.name},CL_TRUE,0,sizeof(#{x.type})*#{x.size_n}*#{x.size_m},#{x.name}.data());\n"
|
31
|
-
when :array
|
32
|
-
@push_buffers << "queue.enqueueWriteBuffer(buffer_#{x.name},CL_TRUE,0,sizeof(#{x.type})*#{x.length},#{x.name}.data());\n"
|
33
|
-
when :numeric
|
34
|
-
# TODO: @push_buffers << "queue.enqueueWriteBuffer(buffer_#{x.name},CL_TRUE,0,sizeof(#{x.type}),#{x.name};\n"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def gen_template_params
|
40
|
-
params = []
|
41
|
-
@objects.each do |x|
|
42
|
-
case x.klass
|
43
|
-
when :matrix, :array
|
44
|
-
params << "cl::Buffer&"
|
45
|
-
when :numeric
|
46
|
-
# TODO
|
47
|
-
end
|
48
|
-
end
|
49
|
-
params << "cl::Buffer&" # for result
|
50
|
-
@template_params = params.join(', ')
|
51
|
-
end
|
52
|
-
|
53
22
|
def gen_kernel_params
|
54
23
|
params = []
|
55
24
|
@objects.each do |x|
|
@@ -64,27 +33,6 @@ module MetaCL
|
|
64
33
|
params << "buffer_#{@result_object.name}"
|
65
34
|
@kernel_params = params.join(', ')
|
66
35
|
end
|
67
|
-
|
68
|
-
def gen_pop_buffer
|
69
|
-
x = @result_object
|
70
|
-
@pop_buffer = "queue.enqueueReadBuffer(buffer_#{x.name},CL_TRUE,0,sizeof(#{x.type})*#{x.size_n}*#{x.size_m},#{x.name}.data());\n"
|
71
|
-
end
|
72
|
-
|
73
|
-
def gen_kernel_code
|
74
|
-
params = []
|
75
|
-
@objects.each do |x|
|
76
|
-
case x.klass
|
77
|
-
when :matrix, :array
|
78
|
-
params << "global const #{x.type}* #{x.name}"
|
79
|
-
when :numeric
|
80
|
-
# TODO
|
81
|
-
end
|
82
|
-
end
|
83
|
-
params << "global #{@result_object.type}* #{@result_object.name}"
|
84
|
-
|
85
|
-
@kernel_code = Templates::Kernel.render(params.join(', '), @code, @n_from, @m_from)
|
86
|
-
@kernel_code = Utils.stringify_text(@kernel_code)
|
87
|
-
end
|
88
36
|
end
|
89
37
|
end
|
90
38
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
for (int iterator{{counter}} = 0; iterator{{counter}} < {{repeats}}; ++iterator{{counter}}) {
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module MetaCL
|
2
|
+
module Templates
|
3
|
+
class Iterate < Mustache
|
4
|
+
@@counter = 0
|
5
|
+
attr_reader :counter, :repeats
|
6
|
+
|
7
|
+
def render(repeats)
|
8
|
+
@@counter += 1
|
9
|
+
@counter = @@counter
|
10
|
+
@repeats = repeats
|
11
|
+
#@code = Utils.tab_text(code, 1)
|
12
|
+
super IO.read("#{__dir__}/iterate.any.template")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,9 +1,10 @@
|
|
1
1
|
module MetaCL
|
2
2
|
module Templates
|
3
3
|
class Kernel < Mustache
|
4
|
-
attr_reader :params, :code, :n_from, :m_from
|
4
|
+
attr_reader :params, :code, :n_from, :m_from, :counter
|
5
5
|
|
6
|
-
def render(params, code, n_from, m_from)
|
6
|
+
def render(params, code, n_from, m_from, counter)
|
7
|
+
@counter = counter
|
7
8
|
@params, @code = params, code
|
8
9
|
@n_from, @m_from = n_from, m_from
|
9
10
|
super IO.read("#{__dir__}/kernel.cl.template")
|
@@ -0,0 +1,16 @@
|
|
1
|
+
cl::Program::Sources sources{{counter}};
|
2
|
+
|
3
|
+
std::string kernel_code{{counter}} =
|
4
|
+
{{{kernel_code}}}
|
5
|
+
|
6
|
+
sources{{counter}}.push_back({kernel_code{{counter}}.c_str(),kernel_code{{counter}}.length()});
|
7
|
+
|
8
|
+
cl::Program program{{counter}}(context,sources{{counter}});
|
9
|
+
if(program{{counter}}.build({default_device})!=CL_SUCCESS){
|
10
|
+
std::cout<<" Error building: "<<program{{counter}}.getBuildInfo<CL_PROGRAM_BUILD_LOG>(default_device)<<"\n";
|
11
|
+
exit(1);
|
12
|
+
}
|
13
|
+
|
14
|
+
auto metacl_program{{counter}} = cl::make_kernel<{{{template_params}}}>(program{{counter}}, "metacl_program{{counter}}");
|
15
|
+
|
16
|
+
cl::EnqueueArgs eargs{{counter}}(queue, cl::NullRange, cl::NDRange({{n_to}} - {{n_from}}, {{m_to}} - {{m_from}}), cl::NullRange);
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module MetaCL
|
2
|
+
module Templates
|
3
|
+
class KernelInit < Mustache
|
4
|
+
attr_reader :counter, :kernel_code, :n_from, :m_from, :n_to, :m_to, :template_params
|
5
|
+
|
6
|
+
def render(from_border, to_border, code, result_object, objects, counter, platform)
|
7
|
+
if platform == :cl
|
8
|
+
@counter = counter
|
9
|
+
@code = Utils.tab_text(code, 1)
|
10
|
+
@result_object = result_object
|
11
|
+
@objects = objects
|
12
|
+
@n_from, @m_from = from_border
|
13
|
+
@n_to, @m_to = to_border
|
14
|
+
gen_kernel_code
|
15
|
+
gen_template_params
|
16
|
+
super IO.read("#{__dir__}/kernel_init.cl.template")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def gen_kernel_code
|
21
|
+
params = []
|
22
|
+
@objects.each do |x|
|
23
|
+
case x.klass
|
24
|
+
when :matrix, :array
|
25
|
+
params << "global const #{x.type}* #{x.name}"
|
26
|
+
when :numeric
|
27
|
+
# TODO
|
28
|
+
end
|
29
|
+
end
|
30
|
+
params << "global #{@result_object.type}* #{@result_object.name}"
|
31
|
+
|
32
|
+
@kernel_code = Templates::Kernel.render(params.join(', '), @code, @n_from, @m_from, @counter)
|
33
|
+
@kernel_code = Utils.stringify_text(@kernel_code)
|
34
|
+
end
|
35
|
+
|
36
|
+
def gen_template_params
|
37
|
+
params = []
|
38
|
+
@objects.each do |x|
|
39
|
+
case x.klass
|
40
|
+
when :matrix, :array
|
41
|
+
params << "cl::Buffer&"
|
42
|
+
when :numeric
|
43
|
+
# TODO
|
44
|
+
end
|
45
|
+
end
|
46
|
+
params << "cl::Buffer&" # for result
|
47
|
+
@template_params = params.join(', ')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module MetaCL
|
2
|
+
module Templates
|
3
|
+
class UploadToGPU < Mustache
|
4
|
+
|
5
|
+
def render(object, platform)
|
6
|
+
if platform == :cl
|
7
|
+
case object.klass
|
8
|
+
when :matrix
|
9
|
+
@result = "queue.enqueueWriteBuffer(buffer_#{object.name},CL_TRUE,0,sizeof(#{object.type})*#{object.size_n}*#{object.size_m},#{object.name}.data());\n"
|
10
|
+
when :array
|
11
|
+
@result = "queue.enqueueWriteBuffer(buffer_#{object.name},CL_TRUE,0,sizeof(#{object.type})*#{object.length},#{object.name}.data());\n"
|
12
|
+
when :numeric
|
13
|
+
# TODO: @push_buffers << "queue.enqueueWriteBuffer(buffer_#{x.name},CL_TRUE,0,sizeof(#{x.type}),#{x.name};\n"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
@result || ''
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -31,7 +31,10 @@ int main(){
|
|
31
31
|
|
32
32
|
cl::Context context({default_device});
|
33
33
|
|
34
|
-
|
34
|
+
//create queue to which we will push commands for the device.
|
35
|
+
cl::CommandQueue queue(context,default_device);
|
36
|
+
|
37
|
+
{{{post_init_code}}}
|
35
38
|
|
36
39
|
{{{inner_code}}}
|
37
40
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module MetaCL
|
2
2
|
module Templates
|
3
3
|
class Wrapper < Mustache
|
4
|
-
attr_accessor :inner_code, :outer_code
|
4
|
+
attr_accessor :inner_code, :outer_code, :post_init_code
|
5
5
|
|
6
|
-
def render(inner_code, outer_code, platform)
|
7
|
-
@inner_code, @outer_code = Utils.tab_text(inner_code), outer_code
|
6
|
+
def render(inner_code, post_init_code, outer_code, platform)
|
7
|
+
@inner_code, @post_init_code, @outer_code = Utils.tab_text(inner_code), Utils.tab_text(post_init_code), outer_code
|
8
8
|
super IO.read("#{__dir__}/wrapper.#{platform}.template")
|
9
9
|
end
|
10
10
|
end
|
data/lib/metacl/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metacl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roman Kolesnev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mustache
|
@@ -101,6 +101,7 @@ files:
|
|
101
101
|
- lib/metacl/dsl/directs.rb
|
102
102
|
- lib/metacl/dsl/expression.rb
|
103
103
|
- lib/metacl/dsl/expression_applicator.rb
|
104
|
+
- lib/metacl/dsl/gpu_transer.rb
|
104
105
|
- lib/metacl/dsl/root.rb
|
105
106
|
- lib/metacl/logic.rb
|
106
107
|
- lib/metacl/logic/node.rb
|
@@ -110,6 +111,7 @@ files:
|
|
110
111
|
- lib/metacl/templates.rb
|
111
112
|
- lib/metacl/templates/aggregator.any.template
|
112
113
|
- lib/metacl/templates/aggregator.rb
|
114
|
+
- lib/metacl/templates/download_from_gpu.rb
|
113
115
|
- lib/metacl/templates/expression_applicator_wrapper.cl.template
|
114
116
|
- lib/metacl/templates/expression_applicator_wrapper.cpp.template
|
115
117
|
- lib/metacl/templates/expression_applicator_wrapper.rb
|
@@ -122,12 +124,17 @@ files:
|
|
122
124
|
- lib/metacl/templates/init_numeric.cl.template
|
123
125
|
- lib/metacl/templates/init_numeric.cpp.template
|
124
126
|
- lib/metacl/templates/init_numeric.rb
|
127
|
+
- lib/metacl/templates/iterate.any.template
|
128
|
+
- lib/metacl/templates/iterate.rb
|
125
129
|
- lib/metacl/templates/kernel.cl.template
|
126
130
|
- lib/metacl/templates/kernel.rb
|
131
|
+
- lib/metacl/templates/kernel_init.cl.template
|
132
|
+
- lib/metacl/templates/kernel_init.rb
|
127
133
|
- lib/metacl/templates/print_matrix.any.template
|
128
134
|
- lib/metacl/templates/print_matrix.rb
|
129
135
|
- lib/metacl/templates/prints.any.template
|
130
136
|
- lib/metacl/templates/prints.rb
|
137
|
+
- lib/metacl/templates/upload_to_gpu.rb
|
131
138
|
- lib/metacl/templates/wrapper.cl.template
|
132
139
|
- lib/metacl/templates/wrapper.cpp.template
|
133
140
|
- lib/metacl/templates/wrapper.rb
|