pystencils.flow.flowgraph.FlowgraphNode#

class pystencils.flow.flowgraph.FlowgraphNode(predecessors, name=None)#

Base class for data-flow graph nodes in pystencils.flow.

Data flow graphs are immutable.

Each node in the data flow graph exposes
  • zero or more predecessors

  • zero or more free symbols (that must be provided by exports from direct predecessors)

  • zero or more exported symbols (that can be consumed by successors)

A node’s successors are not tracked explicitly, as that would break the immutability.

Nodes shall be hashable and equality-comparable.

Parameters:
property predecessors: frozenset[FlowgraphNode]#

This node’s predecessors

property free_symbols: frozenset[Symbol]#

Free symbols of this node.

A symbol is free if it is used in this node’s equations but not defined in this node. Free symbols must be imported from predecessors.

property exports: frozenset[Symbol]#

Symbols exported by this node

property effects: frozenset[Store | Reduce]#

Effectful assignments in this node

abstract replace_predecessors(predecessors)#

Return a copy of this node with a new list of predecessors

Return type:

FlowgraphNode

Parameters:

predecessors (Iterable[FlowgraphNode])

walk()#

Iterate the subgraph above this node in depth-first fashion.

Return type:

Generator[FlowgraphNode, None, None]