5#include <nlohmann/json_fwd.hpp>
36 std::vector<EinsumDimension> dims_;
39 std::vector<data_flow::Subset> in_indices_;
47 const std::vector<std::string>&
inputs,
48 const std::vector<EinsumDimension>&
dims,
50 const std::vector<data_flow::Subset>&
in_indices,
51 bool rename_indvars =
true
59 const std::vector<EinsumDimension>&
dims()
const;
73 const std::vector<data_flow::Subset>&
in_indices()
const;
91 virtual std::string
toStr()
const override;
95 virtual std::unique_ptr<data_flow::DataFlowNode>
size_t element_id() const
const DebugInfo & debug_info() const
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
const std::vector< std::string > & inputs() const
Get input connector names (const).
Definition data_flow_graph.h:29
graph::Vertex vertex() const
Get the graph vertex for this node.
Base class for all library nodes in the dataflow graph.
Definition library_node.h:106
const EinsumDimension & dim(size_t index) const
const symbolic::Symbol & indvar(size_t index) const
EinsumNode & operator=(const EinsumNode &)=delete
const std::vector< EinsumDimension > & dims() const
virtual void replace(const symbolic::ExpressionMapping &replacements) override
virtual bool expand(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager)
const data_flow::Subset & in_indices(size_t index) const
const std::vector< data_flow::Subset > & in_indices() const
symbolic::SymbolSet internal_symbols() const
virtual symbolic::Expression flop() const override
Calculate floating point operations for this node.
virtual symbolic::SymbolSet symbols() const override
Get all symbols used in this node.
const symbolic::Expression & init(size_t index) const
const symbolic::Expression & out_index(size_t index) const
virtual ~EinsumNode()=default
virtual std::unique_ptr< data_flow::DataFlowNode > clone(size_t element_id, const graph::Vertex vertex, data_flow::DataFlowGraph &parent) const override
Clone this node for graph transformations.
passes::LibNodeExpander::ExpandOutcome expand(passes::LibNodeExpander::ExpandContext &context, structured_control_flow::Block &block) override
Expand this node into its internal operations.
EinsumNode(size_t element_id, const DebugInfo &debug_info, const graph::Vertex vertex, data_flow::DataFlowGraph &parent, const std::vector< std::string > &inputs, const std::vector< EinsumDimension > &dims, const data_flow::Subset &out_indices, const std::vector< data_flow::Subset > &in_indices, bool rename_indvars=true)
virtual void validate(const Function &function) const override
Validate the code node's configuration.
virtual void replace(const symbolic::Expression old_expression, const symbolic::Expression new_expression) override
EinsumNode(const EinsumNode &)=delete
const symbolic::Expression & in_index(size_t index1, size_t index2) const
const symbolic::Expression & bound(size_t index) const
const data_flow::Subset & out_indices() const
virtual std::string toStr() const override
Convert node to string representation.
Definition einsum_node.h:101
virtual data_flow::LibraryNode & deserialize(const nlohmann::json &j, builder::StructuredSDFGBuilder &builder, structured_control_flow::Block &parent) override
Deserialize a library node from JSON.
virtual nlohmann::json serialize(const data_flow::LibraryNode &libnode) override
Serialize a library node to JSON.
Base class for mathematical library nodes with expansion support.
Definition math_node.h:68
Definition lib_node_expander.h:122
Base class for library node serialization.
Definition json_serializer.h:195
A control flow node representing a basic block with dataflow computations.
Definition block.h:42
Base class for all nodes in the dataflow graph.
SymEngine::RCP< const SymEngine::Basic > Expression
Reference-counted pointer to a symbolic expression (SymEngine Basic).
Definition symbolic.h:83
SymEngine::RCP< const SymEngine::Symbol > Symbol
Reference-counted pointer to a SymEngine Symbol.
Definition symbolic.h:71
std::set< Symbol, SymEngine::RCPBasicKeyLess > SymbolSet
Ordered set of symbols.
Definition symbolic.h:95
SymEngine::map_basic_basic ExpressionMapping
Definition symbolic.h:109
Library node definitions for calling functions beyond simple instructions.
Mathematical library node base class with expansion support.
Edges in the dataflow graph representing data movement.
Definition function_builder.h:10
symbolic::MultiExpression Subset
Type alias for a subset specification (array of symbolic expressions).
Definition memlet.h:103
StringEnum LibraryNodeCode
Definition library_node.h:65
data_flow::LibraryNodeCode LibraryNodeType_Einsum("Einsum")
boost::graph_traits< Graph >::vertex_descriptor Vertex
Definition graph.h:25
Definition einsum_node.h:28
symbolic::Expression bound
Definition einsum_node.h:31
symbolic::Expression init
Definition einsum_node.h:30
symbolic::Symbol indvar
Definition einsum_node.h:29
Definition lib_node_expander.h:12
Symbolic system for integer-based symbol analysis.