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

#include <sdfg/analysis/data_transfer_elimination_analysis.h>

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

Public Member Functions

 DataTransferEliminationAnalysis (StructuredSDFG &sdfg, AnalysisManager &ana)
void handle_lib_node (Block &block, data_flow::LibraryNode &node) override
void handle_structured_loop_before_body (StructuredLoop &loop) override
void on_escape (const std::string &container, const ControlFlowNode *node, const Element *user) override
void on_write_via (const std::string &container, const ControlFlowNode *node, const data_flow::Memlet *user) override
void on_read_via (const std::string &container, const ControlFlowNode *node, const data_flow::Memlet *user) override
void use_as_return_src (const std::string &container, const Return &ret) override
void use_as_symbol_read (const std::string &container, const ControlFlowNode *node, const Element *user, SymbolReadLocation loc, int loc_index, symbolic::Expression expr) override
void use_as_src_node (const std::string &container, const data_flow::AccessNode &node, const data_flow::Memlet &edge, const Block &block) override
void use_as_dst_node (const std::string &container, const data_flow::AccessNode &node, const data_flow::Memlet &edge, const Block &block) override
void use_as_symbol_write (const symbolic::Symbol &container, const ControlFlowNode *node, const Element *user, SymbolWriteLocation loc) override
std::unique_ptr< OffloadState > create_initial_state (const structured_control_flow::ControlFlowNode &node) override
void run ()
Public Member Functions inherited from sdfg::users::BaseUserVisitor
virtual void handle_structured_loop_after_body (StructuredLoop &loop)
bool visit (sdfg::structured_control_flow::Block &node) override
bool visit (sdfg::structured_control_flow::AssignmentBlock &node) override
bool visit (sdfg::structured_control_flow::Sequence &node) override
bool visit (sdfg::structured_control_flow::IfElse &node) override
bool handleStructuredLoop (StructuredLoop &loop) override
bool visit (sdfg::structured_control_flow::Return &node) override
Public Member Functions inherited from sdfg::visitor::ActualStructuredSDFGVisitor
 ActualStructuredSDFGVisitor ()
virtual ~ActualStructuredSDFGVisitor ()=default
bool visit (sdfg::structured_control_flow::ControlFlowNode &node)
bool dispatch (sdfg::structured_control_flow::ControlFlowNode &node)
virtual bool visit (sdfg::structured_control_flow::For &node)
virtual bool visit (sdfg::structured_control_flow::Map &node)
virtual bool visit (sdfg::structured_control_flow::Reduce &node)
virtual bool visit (sdfg::structured_control_flow::While &node)
virtual bool visit (sdfg::structured_control_flow::Continue &node)
virtual bool visit (sdfg::structured_control_flow::Break &node)
Public Member Functions inherited from sdfg::users::BaseUserAnalyzer
virtual ~BaseUserAnalyzer ()=default
Public Member Functions inherited from sdfg::analysis::ForwardStructuredDataFlowAnalysis< OffloadState >
virtual ~ForwardStructuredDataFlowAnalysis ()=default
void run_forward (structured_control_flow::Sequence &root)
 Run the analysis starting from the given root sequence.
const OffloadState & state (const structured_control_flow::ControlFlowNode &node) const
 Retrieve the computed data-flow state for a node.
bool has_state (const structured_control_flow::ControlFlowNode &node) const
Public Member Functions inherited from sdfg::analysis::DataTransferEliminationCandidateCollector
void found_transfer_reuse_pair (const ExposedOffload &src, OffloadHolder &dst)
void register_device_free (const std::string &container, structured_control_flow::Block *block, offloading::DataOffloadingNode *node)
const std::vector< DeviceFreeSite > * device_frees (const std::string &container) const
 All device-buffer free sites for container, or nullptr if it is never freed on device.
void found_empty_host_malloc (const ExposedOffload &malloc, OffloadHolder &h2d_transfer)
void found_redundant_d2h_pair (const ExposedOffload &h2d, OffloadHolder &d2h)
const std::vector< std::pair< ExposedOffload, OffloadHolder & > > & transfer_reuse_candidates () const
const std::vector< std::pair< ExposedOffload, OffloadHolder & > > & empty_malloc_candidates () const
const std::vector< std::pair< ExposedOffload, OffloadHolder & > > & redundant_d2h_candidates () const

Additional Inherited Members

Public Types inherited from sdfg::users::BaseUserAnalyzer
enum class  SymbolReadLocation {
  Assignment , LoopHeader , IfHeader , MemletSubset ,
  LibraryNode
}
enum class  SymbolWriteLocation { Assignment , LoopHeader }
Public Types inherited from sdfg::analysis::ForwardStructuredDataFlowAnalysis< OffloadState >
using ExposedType
Static Public Attributes inherited from sdfg::users::BaseUserAnalyzer
static constexpr int LOC_LOOP_READ_INIT = 0
static constexpr int LOC_LOOP_READ_CONDITION = 1
static constexpr int LOC_LOOP_READ_UPDATE = 2
Protected Member Functions inherited from sdfg::analysis::ForwardStructuredDataFlowAnalysis< OffloadState >
OffloadState & get_or_create_state (const structured_control_flow::ControlFlowNode &node)
virtual ExposedType boundary ()
 Provide the initial set flowing into the root.
Protected Attributes inherited from sdfg::analysis::DataTransferEliminationCandidateCollector
std::vector< std::pair< ExposedOffload, OffloadHolder & > > transfer_reuse_candidates_
std::vector< std::pair< ExposedOffload, OffloadHolder & > > empty_malloc_candidates_
std::vector< std::pair< ExposedOffload, OffloadHolder & > > redundant_d2h_candidates_
std::unordered_map< std::string, std::vector< DeviceFreeSite > > device_free_sites_

Constructor & Destructor Documentation

◆ DataTransferEliminationAnalysis()

sdfg::analysis::DataTransferEliminationAnalysis::DataTransferEliminationAnalysis ( StructuredSDFG & sdfg,
AnalysisManager & ana )
inline

Member Function Documentation

◆ create_initial_state()

std::unique_ptr< OffloadState > sdfg::analysis::DataTransferEliminationAnalysis::create_initial_state ( const structured_control_flow::ControlFlowNode & node)
overridevirtual

◆ handle_lib_node()

void sdfg::analysis::DataTransferEliminationAnalysis::handle_lib_node ( Block & block,
data_flow::LibraryNode & node )
overridevirtual

Reimplemented from sdfg::users::BaseUserVisitor.

◆ handle_structured_loop_before_body()

void sdfg::analysis::DataTransferEliminationAnalysis::handle_structured_loop_before_body ( StructuredLoop & loop)
overridevirtual

Reimplemented from sdfg::users::BaseUserVisitor.

◆ on_escape()

void sdfg::analysis::DataTransferEliminationAnalysis::on_escape ( const std::string & container,
const ControlFlowNode * node,
const Element * user )
overridevirtual

◆ on_read_via()

void sdfg::analysis::DataTransferEliminationAnalysis::on_read_via ( const std::string & container,
const ControlFlowNode * node,
const data_flow::Memlet * user )
overridevirtual

◆ on_write_via()

void sdfg::analysis::DataTransferEliminationAnalysis::on_write_via ( const std::string & container,
const ControlFlowNode * node,
const data_flow::Memlet * user )
overridevirtual

◆ run()

void sdfg::analysis::DataTransferEliminationAnalysis::run ( )

◆ use_as_dst_node()

void sdfg::analysis::DataTransferEliminationAnalysis::use_as_dst_node ( const std::string & container,
const data_flow::AccessNode & node,
const data_flow::Memlet & edge,
const Block & block )
inlineoverridevirtual

◆ use_as_return_src()

void sdfg::analysis::DataTransferEliminationAnalysis::use_as_return_src ( const std::string & container,
const Return & ret )
inlineoverridevirtual

◆ use_as_src_node()

void sdfg::analysis::DataTransferEliminationAnalysis::use_as_src_node ( const std::string & container,
const data_flow::AccessNode & node,
const data_flow::Memlet & edge,
const Block & block )
inlineoverridevirtual

◆ use_as_symbol_read()

void sdfg::analysis::DataTransferEliminationAnalysis::use_as_symbol_read ( const std::string & container,
const ControlFlowNode * node,
const Element * user,
SymbolReadLocation loc,
int loc_index,
symbolic::Expression expr )
inlineoverridevirtual

◆ use_as_symbol_write()

void sdfg::analysis::DataTransferEliminationAnalysis::use_as_symbol_write ( const symbolic::Symbol & container,
const ControlFlowNode * node,
const Element * user,
SymbolWriteLocation loc )
inlineoverridevirtual

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