docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
einsum_replacer.h
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <string>
5#include <vector>
6
9#include <sdfg/options.h>
13
15
16namespace sdfg::einsum {
17
19
33public:
34 virtual ~EinsumReplacementContext() = default;
35
36 virtual std::unique_ptr<passes::LibNodeExpander::AccessNodeExpand> replacement_requires_access_nodes(
37 const std::vector<passes::LibNodeExpander::InputUse>& access_dirs, bool leave_unconsumed_indices
38 ) = 0;
39
41 virtual ReplaceOutcome unable() = 0;
43};
44
45
53public:
54 virtual ~EinsumReplacer() = default;
55
56 virtual std::string name() const = 0;
57
58 virtual ReplaceOutcome replace(EinsumReplacementContext& context, const EinsumCluster& cluster) const = 0;
59};
60
69);
70
71} // namespace sdfg::einsum
Access nodes for reading/writing data in the dataflow graph.
Note: Even though the class references unique_ptr, it will never delete an SDFG it has a reference to...
Definition structured_sdfg_builder.h:44
Non-destructive counterpart of an EinsumNode.
Definition einsum_detection.h:150
ExpandContext for replacing an EinsumCluster with a new implementation.
Definition einsum_replacer.h:32
virtual ReplaceOutcome unable()=0
virtual std::unique_ptr< passes::LibNodeExpander::AccessNodeExpand > replacement_requires_access_nodes(const std::vector< passes::LibNodeExpander::InputUse > &access_dirs, bool leave_unconsumed_indices)=0
virtual ReplaceOutcome successfully_modified_node_only()=0
virtual ReplaceOutcome unapplicable()=0
Interface for replacing an EinsumCluster with a different implementation.
Definition einsum_replacer.h:52
virtual ~EinsumReplacer()=default
virtual ReplaceOutcome replace(EinsumReplacementContext &context, const EinsumCluster &cluster) const =0
virtual std::string name() const =0
Definition function_builder.h:10
Definition einsum.h:13
passes::LibNodeExpander::ExpandOutcome ReplaceOutcome
Definition einsum_replacer.h:18
ReplaceOutcome replace_einsum_cluster(builder::StructuredSDFGBuilder &builder, const EinsumCluster &cluster, const EinsumReplacer &replacer)
Drive a single replacement.
Definition lib_node_expander.h:12