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

Analysis that infers the assumed memory layouts of memlets. More...

#include <sdfg/analysis/memory_layout_analysis.h>

Inheritance diagram for sdfg::analysis::MemoryLayoutAnalysis:
[legend]

Public Member Functions

 MemoryLayoutAnalysis (StructuredSDFG &sdfg)
 MemoryLayoutAnalysis (StructuredSDFG &sdfg, const Options &options)
std::string name () const override
bool invalidate (structured_control_flow::ControlFlowNode &changed) override
 Marks the subtree of changed and the scopes around it as out of date; queries compute them again.
const MemoryTile * access (const data_flow::Memlet &memlet) const
 Get the inferred memory layout for a memlet.
const MemoryTile * tile (const structured_control_flow::ControlFlowNode &scope, const std::string &container) const
 Get the inferred memory layout for a container at a specific scope.
const std::vector< MemoryTileGroup > * tile_groups (const structured_control_flow::ControlFlowNode &scope, const std::string &container) const
 Get tile groups for a container at a specific scope.
const MemoryTileGroup * tile_group_for (const structured_control_flow::ControlFlowNode &scope, const data_flow::Memlet &memlet) const
 Get the tile group containing a specific memlet at a scope.
Public Member Functions inherited from sdfg::analysis::Analysis
 Analysis (StructuredSDFG &sdfg)
 Analysis (StructuredSDFG &sdfg, const Options &options)
virtual ~Analysis ()=default
 Analysis (const Analysis &a)=delete
Analysis & operator= (const Analysis &)=delete

Protected Member Functions

void run (analysis::AnalysisManager &analysis_manager) override
Protected Member Functions inherited from sdfg::analysis::Analysis
template<class T>
T option (const OptionKey< T > &key, T fallback=T{}) const

Additional Inherited Members

Protected Attributes inherited from sdfg::analysis::Analysis
StructuredSDFG & sdfg_
symbolic::Assumptions additional_assumptions_
const Options * options_ = &Options::empty()

Detailed Description

Analysis that infers the assumed memory layouts of memlets.

This analysis attempts to infer the memory layout of memlets using symbolic assumptions to interpret linearized subset expressions.

The technique is based on the algorithm described in: "Optimistic Delinearization of Parametrically Sized Arrays" by Grosser et al. https://dl.acm.org/doi/10.1145/2751205.2751248

Constructor & Destructor Documentation

◆ MemoryLayoutAnalysis() [1/2]

sdfg::analysis::MemoryLayoutAnalysis::MemoryLayoutAnalysis ( StructuredSDFG & sdfg)

◆ MemoryLayoutAnalysis() [2/2]

sdfg::analysis::MemoryLayoutAnalysis::MemoryLayoutAnalysis ( StructuredSDFG & sdfg,
const Options & options )

Member Function Documentation

◆ access()

const MemoryTile * sdfg::analysis::MemoryLayoutAnalysis::access ( const data_flow::Memlet & memlet) const

Get the inferred memory layout for a memlet.

Parameters
memletThe memlet to query
Returns
A pointer to the inferred memory layout information if inference was successful, nullptr otherwise

◆ invalidate()

bool sdfg::analysis::MemoryLayoutAnalysis::invalidate ( structured_control_flow::ControlFlowNode & changed)
overridevirtual

Marks the subtree of changed and the scopes around it as out of date; queries compute them again.

Reimplemented from sdfg::analysis::Analysis.

◆ name()

std::string sdfg::analysis::MemoryLayoutAnalysis::name ( ) const
inlineoverridevirtual

◆ run()

void sdfg::analysis::MemoryLayoutAnalysis::run ( analysis::AnalysisManager & analysis_manager)
overrideprotectedvirtual

◆ tile()

const MemoryTile * sdfg::analysis::MemoryLayoutAnalysis::tile ( const structured_control_flow::ControlFlowNode & scope,
const std::string & container ) const

Get the inferred memory layout for a container at a specific scope.

Parameters
scopeThe structured control-flow scope to query (Sequence, IfElse, While, StructuredLoop)
containerThe container name
Returns
A pointer to the memory tile at that scope, nullptr if not available

◆ tile_group_for()

const MemoryTileGroup * sdfg::analysis::MemoryLayoutAnalysis::tile_group_for ( const structured_control_flow::ControlFlowNode & scope,
const data_flow::Memlet & memlet ) const

Get the tile group containing a specific memlet at a scope.

Parameters
scopeThe structured control-flow scope to query
memletThe memlet to find
Returns
A pointer to the tile group containing the memlet, nullptr if not found

◆ tile_groups()

const std::vector< MemoryTileGroup > * sdfg::analysis::MemoryLayoutAnalysis::tile_groups ( const structured_control_flow::ControlFlowNode & scope,
const std::string & container ) const

Get tile groups for a container at a specific scope.

Parameters
scopeThe structured control-flow scope to query
containerThe container name
Returns
A pointer to the vector of tile groups, nullptr if not available

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