/
usr
/
local
/
lib64
/
python3.6
/
site-packages
/
torch
/
include
/
ATen
/
native
/
/usr/local/lib64/python3.6/site-packages/torch/include/ATen/native
mkdir
upload
Name
Size
Mode
Actions
cpu/
-
0755
rm
cuda/
-
0755
rm
quantized/
-
0755
rm
Activation.h
3069
0644
edit
dl
rm
AdaptivePooling.h
1165
0644
edit
dl
rm
BatchLinearAlgebra.h
8246
0644
edit
dl
rm
batch_norm.h
1285
0644
edit
dl
rm
BinaryOps.h
4916
0644
edit
dl
rm
BucketizationUtils.h
4248
0644
edit
dl
rm
ComplexHelper.h
3797
0644
edit
dl
rm
CompositeRandomAccessor.h
888
0644
edit
dl
rm
CompositeRandomAccessorCommon.h
6713
0644
edit
dl
rm
ConvUtils.h
5350
0644
edit
dl
rm
Copy.h
356
0644
edit
dl
rm
CPUBlas.h
4199
0644
edit
dl
rm
CPUFallback.h
2404
0644
edit
dl
rm
Cross.h
262
0644
edit
dl
rm
DilatedConvolutionUtils.h
6416
0644
edit
dl
rm
DispatchStub.h
7672
0644
edit
dl
rm
Distance.h
732
0644
edit
dl
rm
Distributions.h
21654
0644
edit
dl
rm
DistributionTemplates.h
18623
0644
edit
dl
rm
EmbeddingBag.h
1320
0644
edit
dl
rm
Fill.h
384
0644
edit
dl
rm
ForeachUtils.h
5962
0644
edit
dl
rm
FunctionOfAMatrixUtils.h
436
0644
edit
dl
rm
GridSampler.h
10525
0644
edit
dl
rm
group_norm.h
896
0644
edit
dl
rm
Histogram.h
492
0644
edit
dl
rm
im2col.h
2838
0644
edit
dl
rm
im2col_shape_check.h
6181
0644
edit
dl
rm
IndexingUtils.h
5373
0644
edit
dl
rm
layer_norm.h
2892
0644
edit
dl
rm
Lerp.h
553
0644
edit
dl
rm
LinearAlgebra.h
603
0644
edit
dl
rm
LinearAlgebraUtils.h
25236
0644
edit
dl
rm
LossMulti.h
2197
0644
edit
dl
rm
Math.h
91356
0644
edit
dl
rm
MathBitFallThroughLists.h
4086
0644
edit
dl
rm
MathBitsFallback.h
7326
0644
edit
dl
rm
MaxPooling.h
1234
0644
edit
dl
rm
Normalization.h
302
0644
edit
dl
rm
PointwiseOps.h
749
0644
edit
dl
rm
Pool.h
10922
0644
edit
dl
rm
Pow.h
1694
0644
edit
dl
rm
ReduceAllOps.h
378
0644
edit
dl
rm
ReduceOps.h
1745
0644
edit
dl
rm
ReduceOpsUtils.h
12245
0644
edit
dl
rm
Repeat.h
1286
0644
edit
dl
rm
Resize.h
6501
0644
edit
dl
rm
ResizeCommon.h
1321
0644
edit
dl
rm
RNN.h
2467
0644
edit
dl
rm
ScatterGatherChecks.h
3641
0644
edit
dl
rm
SegmentReduce.h
685
0644
edit
dl
rm
SharedReduceOps.h
15785
0644
edit
dl
rm
SobolEngineOpsUtils.h
1723
0644
edit
dl
rm
Sorting.h
536
0644
edit
dl
rm
SortingUtils.h
5722
0644
edit
dl
rm
SpectralOpsUtils.h
3146
0644
edit
dl
rm
StridedRandomAccessor.h
6847
0644
edit
dl
rm
TensorAdvancedIndexing.h
3072
0644
edit
dl
rm
TensorCompare.h
1333
0644
edit
dl
rm
TensorDimApply.h
1832
0644
edit
dl
rm
TensorFactories.h
3382
0644
edit
dl
rm
TensorIterator.h
46
0644
edit
dl
rm
TensorIteratorDynamicCasting.h
2025
0644
edit
dl
rm
TensorShape.h
1049
0644
edit
dl
rm
TensorTransformations.h
938
0644
edit
dl
rm
TriangularOpsUtils.h
2000
0644
edit
dl
rm
TypeProperties.h
496
0644
edit
dl
rm
UnaryOps.h
4464
0644
edit
dl
rm
Unfold2d.h
551
0644
edit
dl
rm
Unfold3d.h
852
0644
edit
dl
rm
UnfoldBackward.h
5398
0644
edit
dl
rm
UpSample.h
13599
0644
edit
dl
rm
vol2col.h
3642
0644
edit
dl
rm
Edit:
/usr/local/lib64/python3.6/site-packages/torch/include/ATen/native/CompositeRandomAccessorCommon.h
(6713B)
#pragma once namespace at { namespace native { namespace { // operator_brackets_proxy is used in // CompositeRandomAccessor in place of operator[]. // For some iterators, references returned by operator[] // could become invalid, operator_brackets_proxy tries to // resolve that by making accessor[n] to be equivalent to // *(accessor + n). template <typename Accessor> class operator_brackets_proxy { using reference = typename std::iterator_traits<Accessor>::reference; using value_type = typename std::iterator_traits<Accessor>::value_type; public: C10_HOST_DEVICE operator_brackets_proxy(Accessor const& accessor) : accessor(accessor) {} C10_HOST_DEVICE operator reference() { return *accessor; } C10_HOST_DEVICE reference operator*() { return *accessor; } C10_HOST_DEVICE operator_brackets_proxy& operator=(value_type const& val) { *accessor = val; return *this; } private: Accessor accessor; }; } // references_holder is used as a surrogate for the // references type from std::iterator_traits in CompositeRandomAccessor. // It is assumed in CompositeRandomAccessor that // References = tuple<Types&...>, // Values = tuple<Types...> by default, // but they could be anything as long as References could be // cast to Values. // If you plan to use it with STL, for example, you will need to // define 'swap` and `get`(aka std::get) methods. template <typename Values, typename References> class references_holder { public: using values = Values; using references = References; C10_HOST_DEVICE references_holder(references refs) : refs{refs} {} C10_HOST_DEVICE operator references() { return refs; } C10_HOST_DEVICE operator values() { return refs; } C10_HOST_DEVICE references_holder& operator=(values vals) { refs = vals; return *this; } C10_HOST_DEVICE references& data() { return refs; } protected: references refs; }; // CompositeRandomAccessor is essentially a simplified version of // a random access iterator over two random access iterators. // TupleInfo should contain a variadic type `tuple`, and a method `tie`, // which constructs a tuple of references from a variadic list of arguments. template <typename KeyAccessor, typename ValueAccessor, typename TupleInfo> class CompositeRandomAccessor { using self_type = CompositeRandomAccessor<KeyAccessor, ValueAccessor, TupleInfo>; using key_accessor_value_type = typename std::iterator_traits<KeyAccessor>::value_type; using value_accessor_value_type = typename std::iterator_traits<ValueAccessor>::value_type; using key_accessor_reference_type = typename std::iterator_traits<KeyAccessor>::reference; using value_accessor_reference_type = typename std::iterator_traits<ValueAccessor>::reference; using composite_value_type = typename TupleInfo::template tuple< key_accessor_value_type, value_accessor_value_type>; using composite_reference = typename TupleInfo::template tuple< key_accessor_reference_type, value_accessor_reference_type>; public: using value_type = composite_value_type; using reference = references_holder<composite_value_type, composite_reference>; // Note that CompositeRandomAccessor does not hold key and values // in a specific datastrcture, which means that a pointer to a (key, value) // is not defined. Hence we just use a pointer type of the KeyAccessor. using pointer = typename std::iterator_traits<KeyAccessor>::pointer; using difference_type = typename std::iterator_traits<KeyAccessor>::difference_type; using iterator_category = std::random_access_iterator_tag; C10_HOST_DEVICE CompositeRandomAccessor() = default; C10_HOST_DEVICE CompositeRandomAccessor(KeyAccessor keys, ValueAccessor values) : keys(keys), values(values) {} // Pointer-like operations { C10_HOST_DEVICE reference operator*() const { return TupleInfo::tie(*keys, *values); } // operator->() is supposed to return a pointer type. // Since CompositeRandomAccessor does not hold pointers to pairs, // we just return a pointer to a key. C10_HOST_DEVICE auto* operator->() const { return keys.operator->(); } C10_HOST_DEVICE reference operator[](difference_type idx) { return operator_brackets_proxy<self_type>( CompositeRandomAccessor(keys + idx, values + idx) ); } // } // Prefix/postfix increment/decrement { C10_HOST_DEVICE CompositeRandomAccessor& operator++() { ++keys; ++values; return *this; } C10_HOST_DEVICE CompositeRandomAccessor operator++(int) { CompositeRandomAccessor copy(*this); ++*this; return copy; } C10_HOST_DEVICE CompositeRandomAccessor& operator--() { --keys; --values; return *this; } C10_HOST_DEVICE CompositeRandomAccessor operator--(int) { CompositeRandomAccessor copy(*this); --*this; return copy; } // } // Arithmetic operations { C10_HOST_DEVICE CompositeRandomAccessor& operator+=(difference_type offset) { keys += offset; values += offset; return *this; } C10_HOST_DEVICE CompositeRandomAccessor operator+(difference_type offset) const { return CompositeRandomAccessor(keys + offset, values + offset); } C10_HOST_DEVICE friend CompositeRandomAccessor operator+( difference_type offset, const CompositeRandomAccessor& accessor ) { return accessor + offset; } C10_HOST_DEVICE CompositeRandomAccessor& operator-=(difference_type offset) { keys -= offset; values -= offset; return *this; } C10_HOST_DEVICE CompositeRandomAccessor operator-(difference_type offset) const { return CompositeRandomAccessor(keys - offset, values - offset); } C10_HOST_DEVICE difference_type operator-(const CompositeRandomAccessor& other) const { return keys - other.keys; } // } // Comparison operators { C10_HOST_DEVICE bool operator==(const CompositeRandomAccessor& other) const { return keys == other.keys; } C10_HOST_DEVICE bool operator!=(const CompositeRandomAccessor& other) const { return keys != other.keys; } C10_HOST_DEVICE bool operator<(const CompositeRandomAccessor& other) const { return keys < other.keys; } C10_HOST_DEVICE bool operator<=(const CompositeRandomAccessor& other) const { return keys <= other.keys; } C10_HOST_DEVICE bool operator>(const CompositeRandomAccessor& other) const { return keys > other.keys; } C10_HOST_DEVICE bool operator>=(const CompositeRandomAccessor& other) const { return keys >= other.keys; } // } protected: KeyAccessor keys; ValueAccessor values; }; }} // namespace at::native
Save
cmd:
run