27 std::string
name()
const override {
28 return "Einsum2MatMul";
63 std::optional<math::tensor::TensorLayout>
layout_a;
64 std::optional<math::tensor::TensorLayout>
layout_b;
65 std::optional<math::tensor::TensorLayout>
layout_y;
Proof-of-concept replacer that turns a matmul-shaped EinsumCluster into a MatMulNode.
Definition einsum2matmul.h:25
std::string name() const override
Definition einsum2matmul.h:27
ReplaceOutcome replace(EinsumReplacementContext &context, const EinsumCluster &cluster) const override
bool analyze(const EinsumCluster &cluster, MatMulAnalysis &result) const
Runs the applicability analysis for the canonical MatMul form.
math::tensor::TensorLayout build_tensor_layout(const EinsumIndexing &indexing, bool swapped, const symbolic::Expression &outer_dim, const symbolic::Expression &inner_dim, const symbolic::Expression &outer_offset, const symbolic::Expression &inner_offset, const symbolic::Expression &external_offset) const
virtual bool can_be_applied(const EinsumCluster &cluster) const
Checks whether this replacer could be applied to the given cluster.
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
Interface for replacing an EinsumCluster with a different implementation.
Definition einsum_replacer.h:52
The metadata associated with a addressing a tensor in elements Meant to be used with TensorNodes to d...
Definition tensor_layout.h:20
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
passes::LibNodeExpander::ExpandOutcome ReplaceOutcome
Definition einsum_replacer.h:18
PrimitiveType
Enumeration of all primitive data types supported by sdfglib.
Definition type.h:35
@ Void
Void type (0 bits).
Definition type.h:36
Results of the applicability analysis that are reused by the replacement step.
Definition einsum2matmul.h:51
types::PrimitiveType input_type
whether the indices in our contributors array are swapped to how we canonically name them this is not...
Definition einsum2matmul.h:69
symbolic::Symbol indvar_outer_1
Definition einsum2matmul.h:52
symbolic::Expression k
Definition einsum2matmul.h:57
types::PrimitiveType output_type
Definition einsum2matmul.h:70
std::optional< math::tensor::TensorLayout > layout_a
Definition einsum2matmul.h:63
symbolic::Expression m
Definition einsum2matmul.h:55
symbolic::Expression m_init
Definition einsum2matmul.h:58
symbolic::Symbol indvar_inner
Definition einsum2matmul.h:54
symbolic::Symbol indvar_outer_2
Definition einsum2matmul.h:53
int a_idx
Definition einsum2matmul.h:61
symbolic::Expression k_init
Definition einsum2matmul.h:60
std::optional< math::tensor::TensorLayout > layout_y
Definition einsum2matmul.h:65
std::optional< math::tensor::TensorLayout > layout_b
Definition einsum2matmul.h:64
symbolic::Expression n
Definition einsum2matmul.h:56
int b_idx
Definition einsum2matmul.h:62
symbolic::Expression n_init
Definition einsum2matmul.h:59
How the consumed einsum dimensions map onto one operand's access subset.
Definition einsum_detection.h:50
Core type system definitions for sdfglib.