/
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/types.h
(3880B)
#pragma once #include <cstdint> #include <iostream> #include <c10/core/ScalarType.h> #include <c10/util/Logging.h> #include <torch/csrc/WindowsTorchApiMacro.h> #include <torch/csrc/jit/tensorexpr/exceptions.h> namespace torch { namespace jit { namespace tensorexpr { using int32 = std::int32_t; class Dtype; TORCH_API std::ostream& operator<<(std::ostream& stream, const Dtype& dtype); using ScalarType = c10::ScalarType; // Data types for scalar and vector elements. class TORCH_API Dtype { public: explicit Dtype(int8_t type) : scalar_type_(static_cast<ScalarType>(type)), lanes_(1) {} explicit Dtype(ScalarType type) : scalar_type_(type), lanes_(1) {} Dtype(int8_t type, int lanes) : scalar_type_(static_cast<ScalarType>(type)), lanes_(lanes) {} Dtype(ScalarType type, int lanes) : scalar_type_(type), lanes_(lanes) {} Dtype(Dtype type, int lanes) : scalar_type_(type.scalar_type_), lanes_(lanes) { if (type.lanes() != 1) { throw malformed_input("dtype lanes dont match"); } } int lanes() const { return lanes_; } ScalarType scalar_type() const { return scalar_type_; } Dtype scalar_dtype() const; bool operator==(const Dtype& other) const { return scalar_type_ == other.scalar_type_ && lanes_ == other.lanes_; } bool operator!=(const Dtype& other) const { return !(*this == other); } int byte_size() const; std::string ToCppString() const; bool is_integral() const { return c10::isIntegralType(scalar_type_, true); } bool is_floating_point() const { return c10::isFloatingType(scalar_type_); } bool is_signed() const { return c10::isSignedType(scalar_type_); } Dtype cloneWithScalarType(ScalarType nt) const { return Dtype(nt, lanes_); } private: friend std::ostream& operator<<(std::ostream& stream, const Dtype& dtype); ScalarType scalar_type_; int lanes_; // the width of the element for a vector time }; extern TORCH_API Dtype kHandle; #define NNC_DTYPE_DECLARATION(ctype, name) extern TORCH_API Dtype k##name; AT_FORALL_SCALAR_TYPES_AND3(Bool, Half, BFloat16, NNC_DTYPE_DECLARATION) #undef NNC_DTYPE_DECLARATION template <typename T> TORCH_API Dtype ToDtype(); #define NNC_TODTYPE_DECLARATION(ctype, name) \ template <> \ inline Dtype ToDtype<ctype>() { \ return k##name; \ } AT_FORALL_SCALAR_TYPES_AND3(Bool, Half, BFloat16, NNC_TODTYPE_DECLARATION) #undef NNC_TODTYPE_DECLARATION TORCH_API Dtype ToDtype(ScalarType type); inline Dtype promoteTypes(Dtype a, Dtype b) { if (a.lanes() != b.lanes()) { throw malformed_input("promoting types with different lanes"); } return Dtype( static_cast<ScalarType>(c10::promoteTypes( static_cast<c10::ScalarType>(a.scalar_type()), static_cast<c10::ScalarType>(b.scalar_type()))), a.lanes()); } inline Dtype BinaryOpDtype( Dtype op1_dtype, Dtype op2_dtype, ScalarType ret_type = ScalarType::Undefined) { if (op1_dtype == op2_dtype) { if (ret_type == ScalarType::Undefined) { return op1_dtype; } return ToDtype(ret_type); } if (op1_dtype.lanes() != op2_dtype.lanes()) { throw malformed_input("lanes dont match"); } int lanes = op1_dtype.lanes(); Dtype resultType = promoteTypes(op1_dtype, op2_dtype); if (resultType.scalar_type() == ScalarType::Undefined) { throw malformed_input("scalar type doesn't match"); } if (lanes == 1) { // Use the fixed scalar Dtypes. return ToDtype(resultType.scalar_type()); } return resultType; } } // namespace tensorexpr } // namespace jit } // namespace torch namespace std { using torch::jit::tensorexpr::Dtype; std::string to_string(const Dtype& dtype); using torch::jit::tensorexpr::ScalarType; std::string to_string(const ScalarType& dtype); } // namespace std
Save
cmd:
run