docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
visualizer.h
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <utility>
5#include <vector>
6
10#include "sdfg/function.h"
11#include "sdfg/sdfg.h"
22#include "sdfg/types/type.h"
23
24namespace sdfg {
25namespace visualizer {
26
28protected:
31 std::vector<std::pair<const std::string, const std::string>> replacements_;
32
33 virtual std::string expression(const std::string expr);
34
35 // SDFG nodes
36 virtual void visualizeSDFG(const SDFG& sdfg) = 0;
37
38 // Structured SDFG nodes
41 virtual void visualizeBlock(const StructuredSDFG& sdfg, const structured_control_flow::Block& block) = 0;
44 ) = 0;
46 virtual void visualizeIfElse(const StructuredSDFG& sdfg, const structured_control_flow::IfElse& if_else) = 0;
47 virtual void visualizeWhile(const StructuredSDFG& sdfg, const structured_control_flow::While& while_loop) = 0;
48 virtual void visualizeFor(const StructuredSDFG& sdfg, const structured_control_flow::For& loop) = 0;
49 virtual void visualizeReturn(const StructuredSDFG& sdfg, const structured_control_flow::Return& return_node) = 0;
50 virtual void visualizeBreak(const StructuredSDFG& sdfg, const structured_control_flow::Break& break_node) = 0;
51 virtual void visualizeContinue(const StructuredSDFG& sdfg, const structured_control_flow::Continue& continue_node) = 0;
52 virtual void visualizeMap(const StructuredSDFG& sdfg, const structured_control_flow::Map& map_node) = 0;
53 virtual void visualizeReduce(const StructuredSDFG& sdfg, const structured_control_flow::Reduce& reduce_node) = 0;
54
55 // Data Flow Graph
56 virtual void visualizeDataFlowGraph(const std::string& id, const data_flow::DataFlowGraph& dfg) = 0;
57 virtual void visualizeTasklet(data_flow::Tasklet const& tasklet);
58 virtual void visualizeForBounds(
59 symbolic::Symbol const& indvar,
60 symbolic::Expression const& init,
61 symbolic::Condition const& condition,
62 symbolic::Expression const& update
63 );
64
65 std::string subsetRangeString(data_flow::Subset const& subset, int subIdx);
66
67public:
69
70 virtual void visualize();
71
73 return this->stream_;
74 }
75
76 virtual void visualizeSubset(data_flow::Subset const& begin_sub, types::IType const* type = nullptr, int subIdx = 0);
77};
78
79} // namespace visualizer
80} // namespace sdfg
Definition function.h:43
Definition sdfg.h:34
Definition structured_sdfg.h:30
Definition utils.h:16
Definition data_flow_graph.h:29
Simple computational operation in the dataflow graph.
Definition tasklet.h:348
A control flow node representing a basic block with dataflow computations.
Definition block.h:42
Represents a break statement that exits the innermost loop.
Definition while.h:93
Represents a continue statement that skips to the next loop iteration.
Definition while.h:128
Base class for all structured control flow nodes in a StructuredSDFG.
Definition control_flow_node.h:44
Represents a traditional for-loop with sequential execution.
Definition for.h:43
Represents a conditional if-else control flow node with multiple cases.
Definition if_else.h:47
Represents a parallel map loop with configurable scheduling.
Definition map.h:47
Represents a loop with an associative/commutative reduction carried dependency.
Definition reduce.h:106
Represents a return statement that exits the function with a value.
Definition return.h:32
A sequential container of control flow nodes.
Definition sequence.h:52
Represents a while-loop with condition-controlled iteration.
Definition while.h:37
Abstract base interface for all types in the sdfglib type system.
Definition type.h:625
virtual void visualizeContinue(const StructuredSDFG &sdfg, const structured_control_flow::Continue &continue_node)=0
virtual void visualizeMap(const StructuredSDFG &sdfg, const structured_control_flow::Map &map_node)=0
virtual void visualizeReturn(const StructuredSDFG &sdfg, const structured_control_flow::Return &return_node)=0
codegen::PrettyPrinter stream_
Definition visualizer.h:29
virtual void visualizeAssignmentBlock(const StructuredSDFG &sdfg, const structured_control_flow::AssignmentBlock &assignment_block)=0
virtual void visualizeSubset(data_flow::Subset const &begin_sub, types::IType const *type=nullptr, int subIdx=0)
Visualizer(const Function &sdfg)
Definition visualizer.h:68
virtual std::string expression(const std::string expr)
virtual void visualizeBreak(const StructuredSDFG &sdfg, const structured_control_flow::Break &break_node)=0
virtual void visualizeNode(const StructuredSDFG &sdfg, const structured_control_flow::ControlFlowNode &node)
virtual void visualizeSequence(const StructuredSDFG &sdfg, const structured_control_flow::Sequence &sequence)=0
virtual void visualizeReduce(const StructuredSDFG &sdfg, const structured_control_flow::Reduce &reduce_node)=0
const Function & sdfg_
Definition visualizer.h:30
virtual void visualizeTasklet(data_flow::Tasklet const &tasklet)
codegen::PrettyPrinter const & getStream() const
Definition visualizer.h:72
virtual void visualizeSDFG(const SDFG &sdfg)=0
virtual void visualizeDataFlowGraph(const std::string &id, const data_flow::DataFlowGraph &dfg)=0
std::vector< std::pair< const std::string, const std::string > > replacements_
Definition visualizer.h:31
virtual void visualizeFor(const StructuredSDFG &sdfg, const structured_control_flow::For &loop)=0
virtual void visualizeStructuredSDFG(const StructuredSDFG &sdfg)=0
virtual void visualizeForBounds(symbolic::Symbol const &indvar, symbolic::Expression const &init, symbolic::Condition const &condition, symbolic::Expression const &update)
virtual void visualizeIfElse(const StructuredSDFG &sdfg, const structured_control_flow::IfElse &if_else)=0
virtual void visualizeWhile(const StructuredSDFG &sdfg, const structured_control_flow::While &while_loop)=0
virtual void visualizeBlock(const StructuredSDFG &sdfg, const structured_control_flow::Block &block)=0
std::string subsetRangeString(data_flow::Subset const &subset, int subIdx)
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
SymEngine::RCP< const SymEngine::Boolean > Condition
Reference-counted pointer to a boolean condition expression.
Definition symbolic.h:86
Edges in the dataflow graph representing data movement.
symbolic::MultiExpression Subset
Type alias for a subset specification (array of symbolic expressions).
Definition memlet.h:103
Definition dot_visualizer.h:16
Definition analysis.h:7
Symbolic system for integer-based symbol analysis.
Simple computational operations in the dataflow graph.
Core type system definitions for sdfglib.