Tensor copy node that copies values form one container to another according to their tensor access.
More...
|
| | TensorCopyNode (size_t element_id, const DebugInfo &debug_info, const graph::Vertex vertex, data_flow::DataFlowGraph &parent, const TensorLayout &layout_x, const TensorLayout &layout_y, const data_flow::ImplementationType &impl_type=data_flow::ImplementationType_NONE) |
| const TensorLayout & | layout_x () const |
| const TensorLayout & | layout_y () const |
| bool | is_identity_mode () const |
| | The tensor copy node is in identity mode.
|
| bool | is_permutation_mode () const |
| | The tensor copy node is in permutation mode.
|
| bool | is_squeeze_mode () const |
| | The tensor copy node is in squeeze mode.
|
| bool | is_reshape_mode () const |
| | The tensor copy node is in reshape mode.
|
| void | validate (const Function &function) const override |
| | Validate the code node's configuration.
|
| virtual bool | supports_integer_types () const override |
| | Check if this operation supports integer types.
|
| virtual passes::LibNodeExpander::ExpandOutcome | expand (passes::LibNodeExpander::ExpandContext &context, structured_control_flow::Block &block) override |
| | Expand this node into its internal operations.
|
| virtual std::string | toStr () const override |
| | Convert node to string representation.
|
| virtual symbolic::SymbolSet | symbols () const override |
| | Get all symbols used in this node.
|
| virtual symbolic::Expression | flop () const override |
| | Calculate floating point operations for this node.
|
| virtual data_flow::PointerAccessType | pointer_access_type (int input_idx) const override |
| | Describes what a pointer is used for.
|
| 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.
|
| virtual void | replace (const symbolic::Expression old_expression, const symbolic::Expression new_expression) override |
| void | replace (const symbolic::ExpressionMapping &replacements) override |
| | TensorNode (size_t element_id, const DebugInfo &debug_info, const graph::Vertex vertex, data_flow::DataFlowGraph &parent, const data_flow::LibraryNodeCode &code, const std::vector< std::string > &outputs, const std::vector< std::string > &inputs, const data_flow::ImplementationType &impl_type) |
| | Construct a tensor node.
|
| virtual void | verify_data_types (const data_flow::DataFlowGraph &graph) const |
| | Called as part of validate.
|
| void | validate (const Function &function) const override |
| | Validate tensor node constraints.
|
| types::PrimitiveType | primitive_type (const data_flow::DataFlowGraph &graph) const |
| | Get the primitive type of this tensor operation.
|
| | MathNode (size_t element_id, const DebugInfo &debug_info, const graph::Vertex vertex, data_flow::DataFlowGraph &parent, const data_flow::LibraryNodeCode &code, const std::vector< std::string > &outputs, const std::vector< std::string > &inputs, const data_flow::ImplementationType &implementation_type, bool side_effects=false) |
| | Construct a mathematical library node.
|
| | LibraryNode (const LibraryNode &data_node)=delete |
| LibraryNode & | operator= (const LibraryNode &)=delete |
| virtual | ~LibraryNode ()=default |
| ElementType | type_id () const override |
| | Returns the type of the element.
|
| const LibraryNodeCode & | code () const |
| | Get the operation code.
|
| const ImplementationType & | implementation_type () const |
| | Get the implementation type (const).
|
| ImplementationType & | implementation_type () |
| | Get the implementation type (mutable).
|
| void | set_implementation_type (const ImplementationType &impl_type) |
| bool | side_effect () const override |
| | Check if this node has side effects.
|
| PointerAccessType | pointer_access_type (const Memlet &edge) const |
| virtual bool | relocalize_operand (int input_idx, const math::tensor::TensorLayout &packed) |
| | Repoint the operand at input_idx to a locally staged buffer.
|
| virtual bool | can_relocalize_operand (int input_idx, const math::tensor::TensorLayout &packed) const |
| | Side-effect-free predicate mirroring relocalize_operand: whether the operand at input_idx can be repointed at the buffer view packed.
|
| virtual std::optional< SubgroupAccess > | operand_access (int input_idx, unsigned subgroup_size) const |
| | The elements one subgroup of subgroup_size lanes reads from the operand at input_idx, if the node declares them.
|
| EdgeRemoveOption | can_remove_out_edge (const data_flow::DataFlowGraph &graph, const Memlet *memlet) const override |
| | Is the edge in question removable, or will this make the node its an output on invalid?
|
| EdgeRemoveOption | can_remove_in_edge (const data_flow::DataFlowGraph &graph, const Memlet *memlet) const override |
| bool | pointer_use_creates_side_effects (const DataFlowGraph &dataflow, const Function &func) |
| | CodeNode (const CodeNode &data_node)=delete |
| CodeNode & | operator= (const CodeNode &)=delete |
| const std::vector< std::string > & | outputs () const |
| | Get output connector names (const).
|
| const std::vector< std::string > & | inputs () const |
| | Get input connector names (const).
|
| std::vector< std::string > & | outputs () |
| | Get output connector names (mutable).
|
| std::vector< std::string > & | inputs () |
| | Get input connector names (mutable).
|
| const std::string & | output (size_t index) const |
| | Get output connector name by index.
|
| const std::string & | input (size_t index) const |
| | Get input connector name by index.
|
| bool | has_constant_input (size_t index) const |
| | Check if an input is connected to a constant node.
|
| | DataFlowNode (const DataFlowNode &data_node)=delete |
| DataFlowNode & | operator= (const DataFlowNode &)=delete |
| graph::Vertex | vertex () const |
| | Get the graph vertex for this node.
|
| const DataFlowGraph & | get_parent () const |
| | Get the parent dataflow graph (const).
|
| DataFlowGraph & | get_parent () |
| | Get the parent dataflow graph (mutable).
|
| virtual bool | update_edge_removed (const std::string &out_conn) |
| | Element (size_t element_id, const DebugInfo &debug_info) |
| virtual | ~Element ()=default |
| size_t | element_id () const |
| const DebugInfo & | debug_info () const |
| void | set_debug_info (const DebugInfo &debug_info) |
| void | add_metadata (const std::string &key, const std::string &value) |
| void | remove_metadata (const std::string &key) |
| const std::string & | metadata (const std::string &key) const |
| const std::string * | metadata_if_exists (const std::string &key) const |
| const std::unordered_map< std::string, std::string > & | metadata () const |
| std::string_view | element_type () const |
| | Returns the type of the element as a human-readable string.
|
|
| static bool | classof (const Element &element) |
| static bool | classof (const Element &element) |
| | LLVM-style RTTI predicate: true if element is a CodeNode.
|
| static bool | classof (const Element &element) |
| | LLVM-style RTTI predicate: true if element is a DataFlowNode.
|
| void | validate_shape_matches (const std::vector< symbolic::Expression > &required_shape, const TensorLayout &layout, const std::string &name) const |
| | LibraryNode (size_t element_id, const DebugInfo &debug_info, const graph::Vertex vertex, DataFlowGraph &parent, const LibraryNodeCode &code, const std::vector< std::string > &outputs, const std::vector< std::string > &inputs, const bool side_effect, const ImplementationType &implementation_type) |
| | Protected constructor for library nodes.
|
| | CodeNode (size_t element_id, const DebugInfo &debug_info, const graph::Vertex vertex, DataFlowGraph &parent, const std::vector< std::string > &outputs, const std::vector< std::string > &inputs) |
| | Protected constructor for code nodes.
|
| | DataFlowNode (size_t element_id, const DebugInfo &debug_info, const graph::Vertex vertex, DataFlowGraph &parent) |
| | Protected constructor for dataflow nodes.
|
| static data_flow::TaskletCode | get_integer_minmax_tasklet (types::PrimitiveType prim_type, bool is_max) |
| | Get the appropriate tasklet code for min/max operations on integers.
|
| LibraryNodeCode | code_ |
| | Operation identifier (e.g., "GEMM", "Add").
|
| bool | side_effect_ |
| | Whether this node has side effects.
|
| ImplementationType | implementation_type_ |
| | How to implement this node.
|
| std::vector< std::string > | outputs_ |
| | Names of output connectors.
|
| std::vector< std::string > | inputs_ |
| | Names of input connectors.
|
| size_t | element_id_ |
| DebugInfo | debug_info_ |
| std::unordered_map< std::string, std::string > | metadata_ |
Tensor copy node that copies values form one container to another according to their tensor access.
The only critertion for this copy node to work is that both tensor types must have the same number of elements. There are four expansion modes:
- Identity mode: The shape of both tensors are the same. The tensor can just be copied straight forwardly.
- Permutation mode: The shapes of the tensors have the same length and the same elements but their ordering is different. The tensor is copied by adapting the index variable access to the input tensor.
- Squeeze mode: The shape of the tensors contain the same elements in the same order but one of the tensors has additional ones in it. The tensor is copied by filling the index variable access of the unsqueezed tensor with zeros.
- Reshape mode: None of the above modes. The tensors are copied by shifting one index variable over the whole size with divisions and modulos.