docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
loop_scheduler.h
Go to the documentation of this file.
1#pragma once
2
4#include <sdfg/passes/pass.h>
6#include <unordered_set>
7#include <vector>
10
11namespace sdfg {
12namespace passes {
13namespace scheduler {
14
20
22 // Static Properties
24};
25
26
28protected:
31
32public:
33 virtual ~LoopScheduler() = default;
34
45 analysis::AnalysisManager& analysis_manager,
47 bool offload_unknown_sizes = false
48 ) = 0;
49
52 analysis::AnalysisManager& analysis_manager,
54 bool offload_unknown_sizes = false
55 ) = 0;
56
67 virtual void pre_schedule(
69 analysis::AnalysisManager& analysis_manager,
70 std::vector<structured_control_flow::StructuredLoop*>& applicable_loops
71 ) {
72 }
73
79 virtual bool can_apply_schedule(
81 analysis::AnalysisManager& analysis_manager,
83 bool offload_unknown_sizes = false
84 ) = 0;
85
91 virtual void apply_schedule(
93 analysis::AnalysisManager& analysis_manager,
95 bool offload_unknown_sizes = false
96 ) = 0;
97
109 virtual bool post_schedule(
111 analysis::AnalysisManager& analysis_manager,
112 std::vector<structured_control_flow::StructuredLoop*>& scheduled_loops
113 ) {
114 return false;
115 }
116
117 virtual void set_report(PassReportConsumer* report) {
118 report_ = report;
119 }
120
125 virtual void set_recorder(transformations::Recorder* recorder) {
126 recorder_ = recorder;
127 }
128
129 virtual std::unordered_set<ScheduleTypeCategory> compatible_types() = 0;
130};
131
132} // namespace scheduler
133} // namespace passes
134} // namespace sdfg
Definition pass_report_consumer.h:9
Definition analysis.h:53
Note: Even though the class references unique_ptr, it will never delete an SDFG it has a reference to...
Definition structured_sdfg_builder.h:44
Definition loop_scheduler.h:27
virtual SchedulerAction find(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, structured_control_flow::StructuredLoop &loop, bool offload_unknown_sizes=false)=0
Phase 1: Determine the action for a loop during loop discovery.
virtual bool can_apply_schedule(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, structured_control_flow::StructuredLoop &loop, bool offload_unknown_sizes=false)=0
Check if the scheduling transform can be applied to a loop.
virtual void pre_schedule(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, std::vector< structured_control_flow::StructuredLoop * > &applicable_loops)
Pre-scheduling phase: collapse and cleanup on the applicable loops.
Definition loop_scheduler.h:67
transformations::Recorder * recorder_
Definition loop_scheduler.h:30
PassReportConsumer * report_
Definition loop_scheduler.h:29
virtual void set_recorder(transformations::Recorder *recorder)
Attach an optional Recorder that captures each scheduling transform applied via apply_schedule as a r...
Definition loop_scheduler.h:125
virtual SchedulerAction find(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, structured_control_flow::While &loop, bool offload_unknown_sizes=false)=0
virtual void set_report(PassReportConsumer *report)
Definition loop_scheduler.h:117
virtual bool post_schedule(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, std::vector< structured_control_flow::StructuredLoop * > &scheduled_loops)
Post-scheduling phase: additional transforms on the scheduled loops.
Definition loop_scheduler.h:109
virtual void apply_schedule(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, structured_control_flow::StructuredLoop &loop, bool offload_unknown_sizes=false)=0
Apply the scheduling transform to a single loop.
virtual std::unordered_set< ScheduleTypeCategory > compatible_types()=0
Base class for structured loop constructs.
Definition structured_loop.h:244
Represents a while-loop with condition-controlled iteration.
Definition while.h:37
Records transformation history for replay and analysis.
Definition recorder.h:32
Definition function_builder.h:10
Definition loop_scheduler.h:13
SchedulerAction
Definition loop_scheduler.h:15
@ APPLY
Definition loop_scheduler.h:16
@ NEXT
Definition loop_scheduler.h:17
@ CHILDREN
Definition loop_scheduler.h:18
Definition approximate_math.h:12
Definition analysis.h:7
is_perfectly_nested: is the entire loop hierarchy with loop at the top perfectly nested on every leve...
Definition loop_analysis.h:38
Definition loop_scheduler.h:21
analysis::LoopInfo loop_info
Definition loop_scheduler.h:23