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>
|
static constexpr const char * | _type_key = "tir.BlockScope" |
|
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:
- Block scope: A contiguous subtree of the sref tree, rooted at each block sref, whose components are:
- scope root: a block sref
- internal srefs: loop srefs
- scope leaves: block srefs
- Child block: The scope leaf blocks under the scope root or a specific internal sref
◆ GetDepsByDst()
Get all dependencies whose dst
equals dst
- Parameters
-
- Returns
- The dependencies
◆ GetDepsBySrc()
Get all dependencies whose src
equals src
- Parameters
-
- 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 |
|
|
) |
| |
◆ _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: