|
docc 0.8.3 (0d44999b)
C++ API Reference
|
Non-destructive counterpart of an EinsumNode. More...
#include <sdfg/einsum/einsum_detection.h>
Public Member Functions | |
| std::pair< data_flow::AccessNode *, const data_flow::Subset & > | get_input_for (size_t input_idx) |
| const std::vector< EinsumIndexing > & | get_input_indexings () const |
| std::string | toStr () const |
| const data_flow::Subset & | get_input_subset (size_t input_idx) const |
| const EinsumIndexing & | get_output_indexing () const |
| symbolic::Expression | get_linearized_outer_offset (int input_idx) const |
| const data_flow::Subset & | out_indices () const |
Public Attributes | |
| structured_control_flow::Block * | block = nullptr |
| Block that holds the reduction core of this cluster. | |
| std::vector< EinsumDimension > | dims |
| std::vector< std::unique_ptr< EinsumEdge > > | in_edges |
| std::vector< std::string > | inputs |
| std::vector< EinsumIndexing > | einsum_in_indices |
| Inner-index mapping per input operand (parallel to in_indices/inputs). | |
| EinsumIndexing | einsum_out_indices |
| Inner-index mapping of the output operand. | |
| std::unique_ptr< EinsumEdge > | output_edge = nullptr |
| Reduction/output access node of the cluster. | |
| data_flow::AccessNode * | output_node = nullptr |
| std::unordered_map< std::string, data_flow::DataFlowNode * > | input_nodes |
| Source node for each input connector (may be null for synthetic constants). | |
| bool | subtraction = false |
| True if the core reduction was a subtraction (carries an implicit -1 factor). | |
| std::list< data_flow::DataFlowNode * > | consumed_nodes |
| Dataflow nodes folded into this cluster (reduction tasklet, mul tasklets, ...). | |
| std::list< structured_control_flow::StructuredLoop * > | consumed_loops |
| Surrounding loops folded into this cluster as reduction/free dimensions. From outermost to innermost. | |
Non-destructive counterpart of an EinsumNode.
Carries the same properties as an EinsumNode (dims, out/in indices, inputs) but instead of being materialized in the graph it only references the graph elements it represents. Additionally it records which dataflow nodes and which surrounding loops have been consumed (folded) into the cluster.
| std::pair< data_flow::AccessNode *, const data_flow::Subset & > sdfg::einsum::EinsumCluster::get_input_for | ( | size_t | input_idx | ) |
| const std::vector< EinsumIndexing > & sdfg::einsum::EinsumCluster::get_input_indexings | ( | ) | const |
| const data_flow::Subset & sdfg::einsum::EinsumCluster::get_input_subset | ( | size_t | input_idx | ) | const |
| symbolic::Expression sdfg::einsum::EinsumCluster::get_linearized_outer_offset | ( | int | input_idx | ) | const |
| const EinsumIndexing & sdfg::einsum::EinsumCluster::get_output_indexing | ( | ) | const |
| const data_flow::Subset & sdfg::einsum::EinsumCluster::out_indices | ( | ) | const |
| std::string sdfg::einsum::EinsumCluster::toStr | ( | ) | const |
| structured_control_flow::Block* sdfg::einsum::EinsumCluster::block = nullptr |
Block that holds the reduction core of this cluster.
| std::list<structured_control_flow::StructuredLoop*> sdfg::einsum::EinsumCluster::consumed_loops |
Surrounding loops folded into this cluster as reduction/free dimensions. From outermost to innermost.
| std::list<data_flow::DataFlowNode*> sdfg::einsum::EinsumCluster::consumed_nodes |
Dataflow nodes folded into this cluster (reduction tasklet, mul tasklets, ...).
| std::vector<EinsumDimension> sdfg::einsum::EinsumCluster::dims |
| std::vector<EinsumIndexing> sdfg::einsum::EinsumCluster::einsum_in_indices |
Inner-index mapping per input operand (parallel to in_indices/inputs).
| EinsumIndexing sdfg::einsum::EinsumCluster::einsum_out_indices |
Inner-index mapping of the output operand.
| std::vector<std::unique_ptr<EinsumEdge> > sdfg::einsum::EinsumCluster::in_edges |
| std::unordered_map<std::string, data_flow::DataFlowNode*> sdfg::einsum::EinsumCluster::input_nodes |
Source node for each input connector (may be null for synthetic constants).
| std::vector<std::string> sdfg::einsum::EinsumCluster::inputs |
| std::unique_ptr<EinsumEdge> sdfg::einsum::EinsumCluster::output_edge = nullptr |
Reduction/output access node of the cluster.
| data_flow::AccessNode* sdfg::einsum::EinsumCluster::output_node = nullptr |
| bool sdfg::einsum::EinsumCluster::subtraction = false |
True if the core reduction was a subtraction (carries an implicit -1 factor).