docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::tiles::AxisSchedule Class Reference

Target-neutral cooperation facts derived from one loop's schedule. More...

#include <sdfg/tiles/tile.h>

Public Member Functions

 AxisSchedule ()=default
 AxisSchedule (Level level, Space space, bool has_scratchpad, unsigned spatial_axis=0, symbolic::Integer parallel_size=symbolic::integer(0), bool needs_sync=false, symbolic::Integer lanes=symbolic::integer(1))
bool has_scratchpad () const
Level level () const
Space space () const
unsigned spatial_axis () const
const symbolic::Integer & parallel_size () const
bool needs_sync () const
const symbolic::Integer & lanes () const

Static Public Member Functions

static std::optional< AxisSchedule > classify (const structured_control_flow::ScheduleType &sched)
 Classify a loop's schedule, or std::nullopt for a sequential loop (which does not shape storage).
static std::optional< Level > classify_level (const structured_control_flow::ScheduleType &sched)
 The cooperation Level a target assigns to sched, or std::nullopt when no registered target treats it as a scratchpad (device-parallel) schedule (a sequential or host-thread loop).
static bool drives_cooperative_copy (const structured_control_flow::ScheduleType &sched)
 True when sched is a group-level schedule whose parallel threads can drive a cooperative shared-memory staging copy (a genuine offload schedule).

Detailed Description

Target-neutral cooperation facts derived from one loop's schedule.

Constructor & Destructor Documentation

◆ AxisSchedule() [1/2]

sdfg::tiles::AxisSchedule::AxisSchedule ( )
default

◆ AxisSchedule() [2/2]

sdfg::tiles::AxisSchedule::AxisSchedule ( Level level,
Space space,
bool has_scratchpad,
unsigned spatial_axis = 0,
symbolic::Integer parallel_size = symbolic::integer(0),
bool needs_sync = false,
symbolic::Integer lanes = symbolic::integer(1) )

Member Function Documentation

◆ classify()

std::optional< AxisSchedule > sdfg::tiles::AxisSchedule::classify ( const structured_control_flow::ScheduleType & sched)
static

Classify a loop's schedule, or std::nullopt for a sequential loop (which does not shape storage).

New offload schedule types extend this factory.

◆ classify_level()

std::optional< Level > sdfg::tiles::AxisSchedule::classify_level ( const structured_control_flow::ScheduleType & sched)
static

The cooperation Level a target assigns to sched, or std::nullopt when no registered target treats it as a scratchpad (device-parallel) schedule (a sequential or host-thread loop).

Neutral schedule test: == Level::Group means group-cooperative, == Level::Device means device-wide.

◆ drives_cooperative_copy()

bool sdfg::tiles::AxisSchedule::drives_cooperative_copy ( const structured_control_flow::ScheduleType & sched)
static

True when sched is a group-level schedule whose parallel threads can drive a cooperative shared-memory staging copy (a genuine offload schedule).

Distinguishes real offload block schedules from legacy fused whole-kernel schedules, which cooperate at group level but cannot host a separate copy Map.

◆ has_scratchpad()

bool sdfg::tiles::AxisSchedule::has_scratchpad ( ) const
inline

◆ lanes()

const symbolic::Integer & sdfg::tiles::AxisSchedule::lanes ( ) const
inline

◆ level()

Level sdfg::tiles::AxisSchedule::level ( ) const
inline

◆ needs_sync()

bool sdfg::tiles::AxisSchedule::needs_sync ( ) const
inline

◆ parallel_size()

const symbolic::Integer & sdfg::tiles::AxisSchedule::parallel_size ( ) const
inline

◆ space()

Space sdfg::tiles::AxisSchedule::space ( ) const
inline

◆ spatial_axis()

unsigned sdfg::tiles::AxisSchedule::spatial_axis ( ) const
inline

The documentation for this class was generated from the following file:
  • opt/include/sdfg/tiles/tile.h