6#include <unordered_set>
47 bool offload_unknown_sizes =
false
54 bool offload_unknown_sizes =
false
70 std::vector<structured_control_flow::StructuredLoop*>& applicable_loops
83 bool offload_unknown_sizes =
false
95 bool offload_unknown_sizes =
false
112 std::vector<structured_control_flow::StructuredLoop*>& scheduled_loops
Definition pass_report_consumer.h:9
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 ~LoopScheduler()=default
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
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
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