docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::passes::scheduler::ROCMScheduler Class Reference

#include <sdfg/passes/scheduler/rocm_scheduler.h>

Inheritance diagram for sdfg::passes::scheduler::ROCMScheduler:
[legend]

Public Member Functions

SchedulerAction find (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, structured_control_flow::StructuredLoop &loop, bool offload_unknown_sizes=false) override
 Phase 1: Determine the action for a loop during loop discovery.
SchedulerAction find (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, structured_control_flow::While &loop, bool offload_unknown_sizes=false) override
bool can_apply_schedule (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, structured_control_flow::StructuredLoop &loop, bool offload_unknown_sizes=false) override
 Check if the scheduling transform can be applied to a loop.
void apply_schedule (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, structured_control_flow::StructuredLoop &loop, bool offload_unknown_sizes=false) override
 Apply the scheduling transform to a single loop.
void pre_schedule (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, std::vector< structured_control_flow::StructuredLoop * > &applicable_loops) override
 Pre-scheduling phase: collapse and cleanup on the applicable loops.
bool post_schedule (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, std::vector< structured_control_flow::StructuredLoop * > &scheduled_loops) override
 Post-scheduling phase: additional transforms on the scheduled loops.
std::unordered_set< ScheduleTypeCategory > compatible_types () override
Public Member Functions inherited from sdfg::passes::scheduler::LoopScheduler
virtual ~LoopScheduler ()=default
virtual void set_report (PassReportConsumer *report)
virtual void set_recorder (transformations::Recorder *recorder)
 Attach an optional Recorder that captures each scheduling transform applied via apply_schedule as a replayable descriptor.

Static Public Member Functions

static std::string target ()

Additional Inherited Members

Protected Attributes inherited from sdfg::passes::scheduler::LoopScheduler
PassReportConsumer * report_ = nullptr
transformations::Recorder * recorder_ = nullptr

Member Function Documentation

◆ apply_schedule()

void sdfg::passes::scheduler::ROCMScheduler::apply_schedule ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager,
structured_control_flow::StructuredLoop & loop,
bool offload_unknown_sizes = false )
overridevirtual

Apply the scheduling transform to a single loop.

Called only on loops that passed can_apply_schedule().

Implements sdfg::passes::scheduler::LoopScheduler.

◆ can_apply_schedule()

bool sdfg::passes::scheduler::ROCMScheduler::can_apply_schedule ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager,
structured_control_flow::StructuredLoop & loop,
bool offload_unknown_sizes = false )
overridevirtual

Check if the scheduling transform can be applied to a loop.

Called after pre_schedule. Used to filter the applicable loops before applying.

Implements sdfg::passes::scheduler::LoopScheduler.

◆ compatible_types()

std::unordered_set< ScheduleTypeCategory > sdfg::passes::scheduler::ROCMScheduler::compatible_types ( )
overridevirtual

◆ find() [1/2]

SchedulerAction sdfg::passes::scheduler::ROCMScheduler::find ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager,
structured_control_flow::StructuredLoop & loop,
bool offload_unknown_sizes = false )
overridevirtual

Phase 1: Determine the action for a loop during loop discovery.

Returns NEXT if the loop should be scheduled (added to the applicable set), CHILDREN if the scheduler should descend into child loops instead, or SKIP if the loop already carries a non-None schedule and must be left untouched (neither scheduled nor traversed into).

Implements sdfg::passes::scheduler::LoopScheduler.

◆ find() [2/2]

SchedulerAction sdfg::passes::scheduler::ROCMScheduler::find ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager,
structured_control_flow::While & loop,
bool offload_unknown_sizes = false )
overridevirtual

◆ post_schedule()

bool sdfg::passes::scheduler::ROCMScheduler::post_schedule ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager,
std::vector< structured_control_flow::StructuredLoop * > & scheduled_loops )
overridevirtual

Post-scheduling phase: additional transforms on the scheduled loops.

Called once per target after apply_schedule, even if no loops were scheduled (scheduled_loops may be empty). GPU schedulers use this for loop reordering, nested parallelization, and library node transfer extraction.

Default implementation is a no-op.

Returns
true if the SDFG was modified

Reimplemented from sdfg::passes::scheduler::LoopScheduler.

◆ pre_schedule()

void sdfg::passes::scheduler::ROCMScheduler::pre_schedule ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager,
std::vector< structured_control_flow::StructuredLoop * > & applicable_loops )
overridevirtual

Pre-scheduling phase: collapse and cleanup on the applicable loops.

Called after loop discovery and before can_apply_schedule/apply_schedule. Implementations may collapse loop nests, run symbol propagation, dead data/CFG elimination, etc. The vector is modified in-place to reflect any pointer changes (e.g. after collapse).

Default implementation is a no-op.

Reimplemented from sdfg::passes::scheduler::LoopScheduler.

◆ target()

std::string sdfg::passes::scheduler::ROCMScheduler::target ( )
inlinestatic

The documentation for this class was generated from the following file: