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

One enclosing parallel loop of a tile: its schedule facts plus the tile-role (Private when its indvar addresses the tile base, Cooperative otherwise). More...

#include <sdfg/tiles/tile.h>

Public Member Functions

 TileAxis ()=default
 TileAxis (symbolic::Symbol indvar, Role role, AxisSchedule schedule, symbolic::Expression init=symbolic::integer(0), symbolic::Integer stride=symbolic::integer(1))
const symbolic::Symbol & indvar () const
Role role () const
const AxisSchedule & schedule () const
const symbolic::Expression & init () const
const symbolic::Integer & stride () const
bool cooperative () const

Static Public Member Functions

static std::vector< TileAxis > enclosing (structured_control_flow::StructuredLoop &loop, const symbolic::MultiExpression &bases, const symbolic::Expression &offset=symbolic::integer(0))
 The enclosing parallel axes of a tile with the given bases (min index per dim) and linearized offset: an axis is Cooperative when its indvar addresses neither a base nor the offset, Private otherwise; sequential loops are skipped.

Detailed Description

One enclosing parallel loop of a tile: its schedule facts plus the tile-role (Private when its indvar addresses the tile base, Cooperative otherwise).

Constructor & Destructor Documentation

◆ TileAxis() [1/2]

sdfg::tiles::TileAxis::TileAxis ( )
default

◆ TileAxis() [2/2]

sdfg::tiles::TileAxis::TileAxis ( symbolic::Symbol indvar,
Role role,
AxisSchedule schedule,
symbolic::Expression init = symbolic::integer(0),
symbolic::Integer stride = symbolic::integer(1) )

Member Function Documentation

◆ cooperative()

bool sdfg::tiles::TileAxis::cooperative ( ) const
inline

◆ enclosing()

std::vector< TileAxis > sdfg::tiles::TileAxis::enclosing ( structured_control_flow::StructuredLoop & loop,
const symbolic::MultiExpression & bases,
const symbolic::Expression & offset = symbolic::integer(0) )
static

The enclosing parallel axes of a tile with the given bases (min index per dim) and linearized offset: an axis is Cooperative when its indvar addresses neither a base nor the offset, Private otherwise; sequential loops are skipped.

Innermost-first. The single source of the schedule classification. Library-node operands carry their grid/block indvars in offset (the per-dim bases are zero), so the offset must be scanned too.

◆ indvar()

const symbolic::Symbol & sdfg::tiles::TileAxis::indvar ( ) const
inline

◆ init()

const symbolic::Expression & sdfg::tiles::TileAxis::init ( ) const
inline

◆ role()

Role sdfg::tiles::TileAxis::role ( ) const
inline

◆ schedule()

const AxisSchedule & sdfg::tiles::TileAxis::schedule ( ) const
inline

◆ stride()

const symbolic::Integer & sdfg::tiles::TileAxis::stride ( ) const
inline

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