/
usr
/
local
/
lib64
/
python3.6
/
site-packages
/
torch
/
include
/
torch
/
csrc
/
jit
/
tensorexpr
/
/usr/local/lib64/python3.6/site-packages/torch/include/torch/csrc/jit/tensorexpr
mkdir
upload
Name
Size
Mode
Actions
operators/
-
0755
rm
analysis.h
5888
0644
edit
dl
rm
block_codegen.h
4211
0644
edit
dl
rm
bounds_inference.h
2230
0644
edit
dl
rm
bounds_overlap.h
3329
0644
edit
dl
rm
codegen.h
6402
0644
edit
dl
rm
cpp_codegen.h
2278
0644
edit
dl
rm
cpp_intrinsics.h
719
0644
edit
dl
rm
cuda_codegen.h
7782
0644
edit
dl
rm
cuda_random.h
2642
0644
edit
dl
rm
dim_arg.h
884
0644
edit
dl
rm
eval.h
9639
0644
edit
dl
rm
exceptions.h
3253
0644
edit
dl
rm
expr.h
11588
0644
edit
dl
rm
external_functions.h
1274
0644
edit
dl
rm
external_functions_registry.h
2343
0644
edit
dl
rm
fwd_decls.h
2806
0644
edit
dl
rm
graph_opt.h
2553
0644
edit
dl
rm
half_support.h
5038
0644
edit
dl
rm
hash_provider.h
7930
0644
edit
dl
rm
intrinsic_symbols.h
420
0644
edit
dl
rm
ir.h
22622
0644
edit
dl
rm
ir_cloner.h
2069
0644
edit
dl
rm
ir_mutator.h
2010
0644
edit
dl
rm
ir_printer.h
3693
0644
edit
dl
rm
ir_simplifier.h
15090
0644
edit
dl
rm
ir_verifier.h
1240
0644
edit
dl
rm
ir_visitor.h
1825
0644
edit
dl
rm
kernel.h
9210
0644
edit
dl
rm
llvm_codegen.h
3180
0644
edit
dl
rm
llvm_jit.h
1965
0644
edit
dl
rm
loopnest.h
21599
0644
edit
dl
rm
mem_dependency_checker.h
13003
0644
edit
dl
rm
reduction.h
6742
0644
edit
dl
rm
registerizer.h
12498
0644
edit
dl
rm
stmt.h
21138
0644
edit
dl
rm
tensor.h
7640
0644
edit
dl
rm
tensorexpr_init.h
268
0644
edit
dl
rm
types.h
3880
0644
edit
dl
rm
unique_name_manager.h
940
0644
edit
dl
rm
var_substitutor.h
1753
0644
edit
dl
rm
Edit:
/usr/local/lib64/python3.6/site-packages/torch/include/torch/csrc/jit/tensorexpr/bounds_overlap.h
(3329B)
#pragma once #include <torch/csrc/jit/tensorexpr/ir_simplifier.h> #include <torch/csrc/jit/tensorexpr/ir_visitor.h> #include <torch/csrc/jit/tensorexpr/stmt.h> #include <deque> #include <vector> namespace torch { namespace jit { namespace tensorexpr { namespace analysis { // A simple class containing the start and end of a range in a single dimension. struct TORCH_API Bound { ExprPtr start{nullptr}; ExprPtr end{nullptr}; // This stores whether or not the start and end of this Bound have previously // been swapped. This occurs when the bound is in a loop with a negative // stride. bool swapped{false}; Bound() = default; Bound(ExprPtr s, ExprPtr e) : start(s), end(e) {} void print() const { std::cout << "(" << *start << ", " << *end << ")"; } bool equals(const Bound& other) const { return exprEquals(start, other.start) && exprEquals(end, other.end); } bool operator==(const Bound& other) const { return exprEquals(start, other.start) && exprEquals(end, other.end); } void swap() { std::swap(start, end); swapped = !swapped; } }; struct BoundHash { size_t operator()(const Bound& b) const { return std::hash<ExprPtr>()(b.start) ^ std::hash<ExprPtr>()(b.end); } }; // The type of overlap found. Each condition is true only if none of the // previous conditions hold. // ContainedOrEqual: All elements in the Bound A are in the Bound B (this // includes the case where the bounds are equal). // Contains: All elements in the Bound B are in the Bound B. // PartialOverlap: Any elements in the Bound B are in the Bound A. // NoOverlap: No elements in the Bound A are in the bound B. enum OverlapKind { ContainedOrEqual, Contains, PartialOverlap, NoOverlap }; // Returns the kind of overlap between Bound A and Bound A in a single // dimension. OverlapKind TORCH_API boundOverlap(Bound A, Bound B); // A multi dimensional bound representing the bound of a set of indices. using IndexBounds = std::vector<Bound>; // Returns true if two IndexBounds are equivalent. bool TORCH_API indexBoundsEquals(const IndexBounds& A, const IndexBounds& B); // Flattens a multi dimensional bound to a single dimension. The IndexBounds "a" // *must* encapsulate the entire range of the buffer. Bound TORCH_API flattenBounds(const IndexBounds& a); // Determines the kind of overlap in X dimensions. OverlapKind TORCH_API overlaps(const IndexBounds& a, const IndexBounds& b); // Returns the Bound slices created by subtracing bound B from bound A. // Multiple Bounds can be returned in the case where B slices A into two // distinct regions with no overlap. // // Note: this doesn't use IndexBounds because the Bounds returned do not // represent multiple different dimensions. std::vector<Bound> TORCH_API subtractBound(Bound a, Bound b); std::vector<Bound> TORCH_API subtractBound(Bound a, Bound b, OverlapKind overlap); // Returns the bound slices created by subtracting the IndexBounds B from A. std::vector<IndexBounds> TORCH_API subtractIndicesBounds( const IndexBounds& A, const IndexBounds& B, OverlapKind overlap); std::vector<IndexBounds> TORCH_API subtractIndicesBounds(const IndexBounds& A, const IndexBounds& B); } // namespace analysis } // namespace tensorexpr } // namespace jit } // namespace torch
Save
cmd:
run