/usr/local/lib64/python3.6/site-packages/torch/include/torch/csrc/jit/tensorexpr
NameSizeModeActions
operators/-0755rm
analysis.h58880644editdlrm
block_codegen.h42110644editdlrm
bounds_inference.h22300644editdlrm
bounds_overlap.h33290644editdlrm
codegen.h64020644editdlrm
cpp_codegen.h22780644editdlrm
cpp_intrinsics.h7190644editdlrm
cuda_codegen.h77820644editdlrm
cuda_random.h26420644editdlrm
dim_arg.h8840644editdlrm
eval.h96390644editdlrm
exceptions.h32530644editdlrm
expr.h115880644editdlrm
external_functions.h12740644editdlrm
external_functions_registry.h23430644editdlrm
fwd_decls.h28060644editdlrm
graph_opt.h25530644editdlrm
half_support.h50380644editdlrm
hash_provider.h79300644editdlrm
intrinsic_symbols.h4200644editdlrm
ir.h226220644editdlrm
ir_cloner.h20690644editdlrm
ir_mutator.h20100644editdlrm
ir_printer.h36930644editdlrm
ir_simplifier.h150900644editdlrm
ir_verifier.h12400644editdlrm
ir_visitor.h18250644editdlrm
kernel.h92100644editdlrm
llvm_codegen.h31800644editdlrm
llvm_jit.h19650644editdlrm
loopnest.h215990644editdlrm
mem_dependency_checker.h130030644editdlrm
reduction.h67420644editdlrm
registerizer.h124980644editdlrm
stmt.h211380644editdlrm
tensor.h76400644editdlrm
tensorexpr_init.h2680644editdlrm
types.h38800644editdlrm
unique_name_manager.h9400644editdlrm
var_substitutor.h17530644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/include/torch/csrc/jit/tensorexpr/bounds_inference.h (2230B)
#pragma once #include #include #include #include #include namespace torch { namespace jit { namespace tensorexpr { class Expr; class Buf; class Stmt; enum C10_API_ENUM TensorAccessKind { kLoad, kStore, kMutate }; // NOLINTNEXTLINE(cppcoreguidelines-pro-type-member-init) struct TORCH_API TensorAccessBoundsInfo { TensorAccessKind kind; std::vector start; std::vector stop; }; using BoundsInfo = std::unordered_map>; TORCH_API BoundsInfo inferBounds(StmtPtr s, bool distinctAccessKinds = true); // Bounds inference caching the analysis. The MemDependencyChecker must already // have been run. TORCH_API BoundsInfo getInferredBounds( analysis::MemDependencyChecker& analyzer, StmtPtr s, bool distinctAccessKinds = true); TORCH_API BoundsInfo getInferredBounds( analysis::MemDependencyChecker& analyzer, ExprPtr e, bool distinctAccessKinds = true); TORCH_API void printBoundsInfo(const BoundsInfo& v); TORCH_API std::vector getBoundExtents( const std::vector& infos); // The kind of dependency found, in increasing order of exclusivity. enum class HazardKind { ReadAfterWrite, WriteAfterRead, WriteAfterWrite, NoDependency, }; TORCH_API HazardKind getPotentialHazards( analysis::MemDependencyChecker& analyzer, StmtPtr A, StmtPtr B); // Returns true if there is a conflicting overlap between accesses in // statements A and B. A conflicting overlap is an overlap in buffer accesses // where at least one of the accesses is a Store. TORCH_API bool hasConflictingOverlap( analysis::MemDependencyChecker& analyzer, StmtPtr A, StmtPtr B); // Same as above, between accesses in stores S1 and S2. TORCH_API bool isOverlapping( analysis::MemDependencyChecker& analyzer, StorePtr S1, StorePtr S2); // Same as above, between accesses in store S and load L. TORCH_API bool isOverlapping( analysis::MemDependencyChecker& analyzer, StorePtr S, LoadPtr L); } // namespace tensorexpr } // namespace jit } // namespace torch