Tape Machine (#30)

Adds a tape machine way of executing the code.
The tape machine is a series of FunctionCall objects, which can either be called one by one, or be used to generate expressions to make up a function.

Reviewed-on: Rubydragon/MetagraphOptimization.jl#30
Co-authored-by: Anton Reinhard <anton.reinhard@proton.me>
Co-committed-by: Anton Reinhard <anton.reinhard@proton.me>
This commit is contained in:
2024-01-03 16:38:32 +01:00
committed by Anton Reinhard
parent 92e0eeaaef
commit 82ed774b7e
21 changed files with 398 additions and 502 deletions

View File

@@ -79,6 +79,7 @@ export execute
export parse_dag, parse_process
export gen_process_input
export get_compute_function
export gen_tape, execute_tape
# estimator
export cost_type, graph_cost, operation_effect
@@ -120,6 +121,7 @@ include("diff/type.jl")
include("properties/type.jl")
include("operation/type.jl")
include("graph/type.jl")
include("scheduler/type.jl")
include("trie.jl")
include("utility.jl")
@@ -155,7 +157,6 @@ include("properties/utility.jl")
include("task/create.jl")
include("task/compare.jl")
include("task/compute.jl")
include("task/print.jl")
include("task/properties.jl")
include("estimator/interface.jl")
@@ -200,6 +201,8 @@ include("devices/cuda/impl.jl")
include("scheduler/interface.jl")
include("scheduler/greedy.jl")
include("code_gen/main.jl")
include("code_gen/type.jl")
include("code_gen/tape_machine.jl")
include("code_gen/function.jl")
end # module MetagraphOptimization