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

Collects the uses of an output container within a GPU MMA loop nest. More...

#include <sdfg/transformations/redundant_zero_init_elimination.h>

Inheritance diagram for sdfg::transformations::MmaNestOutputUses:
[legend]

Classes

struct  CFragmentLoad

Public Member Functions

 MmaNestOutputUses (StructuredSDFG &sdfg, analysis::AnalysisManager &analysis_manager, structured_control_flow::StructuredLoop &nest, const std::string &container)
bool visit () override
bool accept (structured_control_flow::Block &node) override
bool valid () const
 The container is only used by fragment stores and C-fragment loads only nested in maps and branches.
bool has_mma () const
bool has_store () const
const std::vector< CFragmentLoad > & c_loads () const
Public Member Functions inherited from sdfg::visitor::ImmutableStructuredSDFGVisitor
 ImmutableStructuredSDFGVisitor (StructuredSDFG &sdfg, analysis::AnalysisManager &analysis_manager)
virtual ~ImmutableStructuredSDFGVisitor ()=default
virtual bool accept (structured_control_flow::AssignmentBlock &node)
virtual bool accept (structured_control_flow::Sequence &node)
virtual bool accept (structured_control_flow::Return &node)
virtual bool accept (structured_control_flow::IfElse &node)
virtual bool accept (structured_control_flow::For &node)
virtual bool accept (structured_control_flow::While &node)
virtual bool accept (structured_control_flow::Continue &node)
virtual bool accept (structured_control_flow::Break &node)
virtual bool accept (structured_control_flow::Map &node)
virtual bool accept (structured_control_flow::Reduce &node)

Additional Inherited Members

Protected Member Functions inherited from sdfg::visitor::ImmutableStructuredSDFGVisitor
virtual bool visit_internal (structured_control_flow::Sequence &parent)
Protected Attributes inherited from sdfg::visitor::ImmutableStructuredSDFGVisitor
StructuredSDFG & sdfg_
analysis::AnalysisManager & analysis_manager_

Detailed Description

Collects the uses of an output container within a GPU MMA loop nest.

Visits all blocks below the nest root and records MMA matmul nodes, fragment stores to the container and C-fragment loads of it. Any other use of the container, or a C-fragment load below a sequential loop, invalidates the result. visit() stops early once the result is invalid.

Constructor & Destructor Documentation

◆ MmaNestOutputUses()

sdfg::transformations::MmaNestOutputUses::MmaNestOutputUses ( StructuredSDFG & sdfg,
analysis::AnalysisManager & analysis_manager,
structured_control_flow::StructuredLoop & nest,
const std::string & container )

Member Function Documentation

◆ accept()

bool sdfg::transformations::MmaNestOutputUses::accept ( structured_control_flow::Block & node)
overridevirtual

◆ c_loads()

const std::vector< CFragmentLoad > & sdfg::transformations::MmaNestOutputUses::c_loads ( ) const
inline

◆ has_mma()

bool sdfg::transformations::MmaNestOutputUses::has_mma ( ) const
inline

◆ has_store()

bool sdfg::transformations::MmaNestOutputUses::has_store ( ) const
inline

◆ valid()

bool sdfg::transformations::MmaNestOutputUses::valid ( ) const
inline

The container is only used by fragment stores and C-fragment loads only nested in maps and branches.

◆ visit()

bool sdfg::transformations::MmaNestOutputUses::visit ( )
overridevirtual

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