Class: Pure::Driver
- Inherits:
-
Object
- Object
- Pure::Driver
- Defined in:
- lib/pure/driver.rb
Instance Method Summary collapse
- #build_fun_map(driver, name, elems) ⇒ Object
- #compute(root) ⇒ Object
- #each_function_name(&block) ⇒ Object
-
#initialize(worker_class, mod, num_parallel, overrides) ⇒ Driver
constructor
A new instance of Driver.
Constructor Details
#initialize(worker_class, mod, num_parallel, overrides) ⇒ Driver
Returns a new instance of Driver.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/pure/driver.rb', line 4 def initialize(worker_class, mod, num_parallel, overrides) @worker = worker_class.new @worker.define_function_begin(mod, num_parallel) @driver = CompTree.build do |driver| overrides.each_pair { |name, value| driver.define(name.to_sym) { value } } mod.each_function { |name, spec| if elems = spec[:elems] build_fun_map(driver, name, elems) end node = driver.nodes[name] unless node and node.function function = @worker.define_function(spec) driver.define(name, *spec[:args], &function) end } driver end @worker.define_function_end end |
Instance Method Details
#build_fun_map(driver, name, elems) ⇒ Object
36 37 38 39 40 |
# File 'lib/pure/driver.rb', line 36 def build_fun_map(driver, name, elems) elems.each_with_index { |(elem_name, elem), i| driver.define(elem_name) { elem } } end |
#compute(root) ⇒ Object
26 27 28 29 30 |
# File 'lib/pure/driver.rb', line 26 def compute(root) @driver.compute(root, @worker.num_parallel) rescue CompTree::NoFunctionError => exception raise Pure::NoFunctionError.new(exception.node_name) end |
#each_function_name(&block) ⇒ Object
32 33 34 |
# File 'lib/pure/driver.rb', line 32 def each_function_name(&block) @driver.nodes.each_key(&block) end |