tvm
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
tvm::tir::BlockScopeNode Class Reference

An object with 1-to-1 correspondence with each block reference in the sref tree. This data structure is used to track the producer-consumer dependencies between blocks. For example even leaf nodes have a scope node, even though they have no dependencies. More...

#include <block_scope.h>

Inheritance diagram for tvm::tir::BlockScopeNode:
Collaboration diagram for tvm::tir::BlockScopeNode:

Public Member Functions

 TVM_DECLARE_FINAL_OBJECT_INFO (BlockScopeNode, Object)
 
Array< DependencyGetDepsBySrc (const StmtSRef &src) const
 Get all dependencies whose src equals src More...
 
Array< DependencyGetDepsByDst (const StmtSRef &dst) const
 Get all dependencies whose dst equals dst More...
 

Static Public Member Functions

static void RegisterReflection ()
 

Public Attributes

std::unordered_map< StmtSRef, Array< Dependency >, ObjectPtrHash, ObjectPtrEqual > src2deps
 Lookup table for the src of dependencies. More...
 
std::unordered_map< StmtSRef, Array< Dependency >, ObjectPtrHash, ObjectPtrEqual > dst2deps
 Lookup table for the dst of dependencies. More...
 
std::unordered_map< Buffer, Array< StmtSRef >, ObjectPtrHash, ObjectPtrEqual > buffer_writers
 The mapping from the buffer to the blocks who write it. More...
 

Static Public Attributes

static constexpr const char * _type_key = "tir.BlockScope"
 

Detailed Description

An object with 1-to-1 correspondence with each block reference in the sref tree. This data structure is used to track the producer-consumer dependencies between blocks. For example even leaf nodes have a scope node, even though they have no dependencies.

Glossary:

Member Function Documentation

◆ GetDepsByDst()

Array<Dependency> tvm::tir::BlockScopeNode::GetDepsByDst ( const StmtSRef dst) const

Get all dependencies whose dst equals dst

Parameters
dstThe queried block
Returns
The dependencies

◆ GetDepsBySrc()

Array<Dependency> tvm::tir::BlockScopeNode::GetDepsBySrc ( const StmtSRef src) const

Get all dependencies whose src equals src

Parameters
srcThe queried block
Returns
The dependencies

◆ RegisterReflection()

static void tvm::tir::BlockScopeNode::RegisterReflection ( )
inlinestatic

◆ TVM_DECLARE_FINAL_OBJECT_INFO()

tvm::tir::BlockScopeNode::TVM_DECLARE_FINAL_OBJECT_INFO ( BlockScopeNode  ,
Object   
)

Member Data Documentation

◆ _type_key

constexpr const char* tvm::tir::BlockScopeNode::_type_key = "tir.BlockScope"
staticconstexpr

◆ buffer_writers

std::unordered_map<Buffer, Array<StmtSRef>, ObjectPtrHash, ObjectPtrEqual> tvm::tir::BlockScopeNode::buffer_writers

The mapping from the buffer to the blocks who write it.

◆ dst2deps

std::unordered_map<StmtSRef, Array<Dependency>, ObjectPtrHash, ObjectPtrEqual> tvm::tir::BlockScopeNode::dst2deps

Lookup table for the dst of dependencies.

◆ src2deps

std::unordered_map<StmtSRef, Array<Dependency>, ObjectPtrHash, ObjectPtrEqual> tvm::tir::BlockScopeNode::src2deps

Lookup table for the src of dependencies.

Note
We intentionally didn't use tvm::Map as the data structure, because we need the values inside to be mutable so that they could be further maintained properly during transformations.

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