Abstract base class for all dataflow graph nodes.
DataFlowNode provides the core interface for all nodes in the dataflow graph. Key responsibilities:
- Vertex management: Each node has a unique graph vertex
- Parent graph access: Nodes know their containing graph
- Validation: Abstract interface for semantic validation
- Cloning: Abstract interface for creating node copies
This is an abstract class and cannot be instantiated directly. Use derived classes like AccessNode, Tasklet, or LibraryNode.
Is the edge in question removable, or will this make the node its an output on invalid?
Currently, some nodes may require every out connector to have at least 1 connection attached
- Returns
- NotRemovable, NoDependencies, CustomRemove
[NotRemovable] means only if the entire node can be removed, can the edge be removed [NoDependencies] means, the edge can be removed trivially, the node will work without for the remaining functions [CustomRemove] means, a call to [remove_out_edge] can have the node remove the edge itself and make necessary
Implemented in sdfg::data_flow::AccessNode, sdfg::data_flow::LibraryNode, sdfg::data_flow::Tasklet, sdfg::math::cmath::CMathNode, and sdfg::offloading::DataOffloadingNode.
Clone this node for graph transformations.
- Parameters
-
| element_id | New element identifier for the clone |
| vertex | New graph vertex for the clone |
| parent | Parent graph for the clone |
- Returns
- Unique pointer to the cloned node
Pure virtual function that must be implemented by derived classes to support graph transformations and optimizations.
Implemented in sdfg::cuda::CUDADataOffloadingNode, sdfg::data_flow::AccessNode, sdfg::data_flow::AtomicScalarOpNode, sdfg::data_flow::BarrierLocalNode, sdfg::data_flow::CallNode, sdfg::data_flow::ConstantNode, sdfg::data_flow::InvokeNode, sdfg::data_flow::LoadConstNode, sdfg::data_flow::MetadataNode, sdfg::data_flow::Tasklet, sdfg::einsum::EinsumNode, sdfg::fp_math::OzakiMatMulNode, sdfg::gpu::GpuMmaFillNode, sdfg::gpu::GpuMmaFragmentEltwiseAddNode, sdfg::gpu::GpuMmaFragmentLoadNode, sdfg::gpu::GpuMmaFragmentStoreNode, sdfg::gpu::GpuMmaMatmulNode, sdfg::gpu::GpuTileArrivalNode, sdfg::math::blas::BatchedGEMMNode, sdfg::math::blas::DotNode, sdfg::math::blas::GEMMNode, sdfg::math::cmath::CMathNode, sdfg::math::tensor::AbsNode, sdfg::math::tensor::AddNode, sdfg::math::tensor::ArangeNode, sdfg::math::tensor::BatchNormNode, sdfg::math::tensor::BroadcastNode, sdfg::math::tensor::CastNode, sdfg::math::tensor::ClampNode, sdfg::math::tensor::CMathTensorNode, sdfg::math::tensor::ConcatNode, sdfg::math::tensor::ConditionalTensorCopyNode, sdfg::math::tensor::ConstPaddingNode, sdfg::math::tensor::ConvNode, sdfg::math::tensor::DivNode, sdfg::math::tensor::EluNode, sdfg::math::tensor::EmbeddingNode, sdfg::math::tensor::EmbeddingRenormNode, sdfg::math::tensor::ErfNode, sdfg::math::tensor::ExpNode, sdfg::math::tensor::FillNode, sdfg::math::tensor::GELUNode, sdfg::math::tensor::IndexNode, sdfg::math::tensor::LayerNormNode, sdfg::math::tensor::LeakyReLUNode, sdfg::math::tensor::LogicalNotNode, sdfg::math::tensor::MatMulNode, sdfg::math::tensor::MaximumNode, sdfg::math::tensor::MaxNode, sdfg::math::tensor::MeanNode, sdfg::math::tensor::MinimumNode, sdfg::math::tensor::MinNode, sdfg::math::tensor::MulNode, sdfg::math::tensor::PoolingNode, sdfg::math::tensor::PowNode, sdfg::math::tensor::ReLUNode, sdfg::math::tensor::RsqrtNode, sdfg::math::tensor::SigmoidNode, sdfg::math::tensor::SoftmaxNode, sdfg::math::tensor::SqrtNode, sdfg::math::tensor::StdNode, sdfg::math::tensor::SubNode, sdfg::math::tensor::SumNode, sdfg::math::tensor::TanhNode, sdfg::math::tensor::TaskletTensorNode, sdfg::math::tensor::TensorCopyNode, sdfg::math::tensor::UpsampleBilinear2DNode, sdfg::offloading::ExternalDataOffloadingNode, sdfg::rocm::ROCMDataOffloadingNode, sdfg::stdlib::AllocaNode, sdfg::stdlib::AssertNode, sdfg::stdlib::CallocNode, sdfg::stdlib::FreeNode, sdfg::stdlib::MallocNode, sdfg::stdlib::MemcpyNode, sdfg::stdlib::MemmoveNode, sdfg::stdlib::MemsetNode, sdfg::stdlib::TrapNode, sdfg::stdlib::UnreachableNode, sdfg::tiles::PipelineCommitNode, sdfg::tiles::PipelineWaitNode, and sdfg::tiles::TileCopyNode.
| virtual bool sdfg::data_flow::DataFlowNode::side_effect |
( |
| ) |
const |
|
nodiscardpure virtual |