/usr/local/lib64/python3.6/site-packages/torch/include/ATen/core
NameSizeModeActions
boxing/-0755rm
dispatch/-0755rm
op_registration/-0755rm
alias_info.h29860644editdlrm
Array.h7680644editdlrm
ATenGeneral.h450644editdlrm
ATenOpList.h2460644editdlrm
aten_interned_strings.h253890644editdlrm
Backtrace.h590644editdlrm
blob.h54220644editdlrm
builtin_function.h36490644editdlrm
DeprecatedTypeProperties.h37730644editdlrm
DeprecatedTypePropertiesRegistry.h7950644editdlrm
Dict.h131950644editdlrm
Dict_inl.h79960644editdlrm
Dimname.h11880644editdlrm
DimVector.h2470644editdlrm
DistributionsHelper.h125940644editdlrm
Formatting.h9590644editdlrm
function.h21450644editdlrm
functional.h14600644editdlrm
function_schema.h135770644editdlrm
function_schema_inl.h93190644editdlrm
Generator.h49350644editdlrm
grad_mode.h2100644editdlrm
interned_strings.h253320644editdlrm
interned_strings_class.h7700644editdlrm
ivalue.h388230644editdlrm
ivalue_inl.h599630644editdlrm
ivalue_to.h7560644editdlrm
jit_type.h759710644editdlrm
jit_type_base.h65080644editdlrm
LegacyTypeDispatch.h46260644editdlrm
List.h156670644editdlrm
List_inl.h110120644editdlrm
Macros.h440644editdlrm
MT19937RNGEngine.h64100644editdlrm
NamedTensor.h50500644editdlrm
operator_name.h30180644editdlrm
PhiloxRNGEngine.h64960644editdlrm
PythonModeTLS.h4030644editdlrm
qualified_name.h43580644editdlrm
QuantizerBase.h24430644editdlrm
Range.h4180644editdlrm
Reduction.h4610644editdlrm
rref_interface.h11440644editdlrm
Scalar.h290644editdlrm
ScalarType.h330644editdlrm
stack.h60340644editdlrm
Tensor.h17560644editdlrm
TensorAccessor.h102960644editdlrm
TensorBase.h327670644editdlrm
TensorBody.h2475550644editdlrm
TransformationHelper.h69110644editdlrm
typeid.h290644editdlrm
UndefinedTensorImpl.h420644editdlrm
UnsafeFromTH.h7080644editdlrm
VariableHooksInterface.h33120644editdlrm
Variadic.h22570644editdlrm
Vitals.h23050644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/include/ATen/core/alias_info.h (2986B)
#pragma once #include #include #include #include namespace c10 { /** * class AliasInfo * * Data structure to hold aliasing information for an `Argument`. They can be * nested to represent aliasing information on contained types. * * There is a `beforeSet` which describes the aliasing information before the * operator executes, and an `afterSet` that describes aliasing info * after execution. */ class AliasInfo { public: // Symbol for the set that can alias anything static Symbol wildcardSet() { static const Symbol wc = Symbol::fromQualString("alias::*"); return wc; } void setIsWrite(bool isWrite) { isWrite_ = isWrite; } bool isWrite() const { return isWrite_; } void addBeforeSet(Symbol aliasSet) { beforeSets_.insert(aliasSet); } void addAfterSet(Symbol aliasSet) { afterSets_.insert(aliasSet); } const std::unordered_set& beforeSets() const { return beforeSets_; } const std::unordered_set& afterSets() const { return afterSets_; } Symbol beforeSet() const { AT_ASSERT(beforeSets_.size() == 1); return *beforeSets_.begin(); } bool isWildcardBefore() const { return beforeSets_.count(wildcardSet()) != 0; } bool isWildcardAfter() const { return afterSets_.count(wildcardSet()) != 0; } // the alias info for the contained types of the type // e.g. if this is an annotation on List[T], `sets` refers to // the alias sets that the list may be in // while containedTypes()[0] refers to the sets that members of the list // may be in void addContainedType(AliasInfo aliasInfo) { containedTypes_.push_back(std::move(aliasInfo)); } const std::vector& containedTypes() const { return containedTypes_; } private: std::unordered_set beforeSets_; std::unordered_set afterSets_; std::vector containedTypes_; bool isWrite_ = false; }; inline bool operator==(const AliasInfo& lhs, const AliasInfo& rhs) { return lhs.isWrite() == rhs.isWrite() && lhs.beforeSets() == rhs.beforeSets() && lhs.afterSets() == rhs.afterSets() && lhs.containedTypes() == rhs.containedTypes(); } // this does match the way things are represented in the schema inline std::ostream& operator<<(std::ostream& out, const AliasInfo& aliasInfo) { out << "("; bool first = true; for (const auto& set : aliasInfo.beforeSets()) { if (first) { first = false; } else { out << "|"; } out << set.toUnqualString(); } if (aliasInfo.isWrite()) { out << "!"; } if (aliasInfo.beforeSets() != aliasInfo.afterSets()) { out << " -> "; first = true; for (const auto& set : aliasInfo.afterSets()) { if (first) { first = false; } else { out << "|"; } out << set.toUnqualString(); } } out << ")"; return out; } } // namespace c10