From db611b7caf0369ba628c5ed8bba42cc22aadfb20 Mon Sep 17 00:00:00 2001 From: Sebastian Messmer Date: Tue, 16 Apr 2019 23:59:02 -0700 Subject: [PATCH] Delete C10Tensor (#19328) Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/19328 Plans changed and we don't want this class anymore. Reviewed By: dzhulgakov Differential Revision: D14966746 fbshipit-source-id: 09ea4c95b352bc1a250834d32f35a94e401f2347 --- aten/src/ATen/core/Tensor.h | 13 ------ aten/src/ATen/templates/Tensor.h | 13 ------ c10/core/Tensor.h | 53 ---------------------- caffe2/core/operator_c10wrapper.h | 2 +- caffe2/core/tensor.h | 19 -------- caffe2/operators/experimental/c10/cpu/add_cpu.cc | 6 +-- .../experimental/c10/cpu/averaged_loss_cpu.cc | 6 +-- .../experimental/c10/cpu/batch_gather_cpu.cc | 6 +-- .../experimental/c10/cpu/batch_matmul_cpu.cc | 8 ++-- caffe2/operators/experimental/c10/cpu/cast_cpu.cc | 4 +- .../operators/experimental/c10/cpu/concat_cpu.cc | 4 +- .../experimental/c10/cpu/enforce_finite_cpu.cc | 2 +- .../experimental/c10/cpu/expand_dims_cpu.cc | 4 +- caffe2/operators/experimental/c10/cpu/fc_cpu.cc | 10 ++-- .../operators/experimental/c10/cpu/filler_cpu.cc | 11 ++--- .../operators/experimental/c10/cpu/flatten_cpu.cc | 4 +- caffe2/operators/experimental/c10/cpu/mul_cpu.cc | 6 +-- caffe2/operators/experimental/c10/cpu/relu_cpu.cc | 4 +- .../operators/experimental/c10/cpu/sigmoid_cpu.cc | 4 +- .../cpu/sigmoid_cross_entropy_with_logits_cpu.cc | 6 +-- .../experimental/c10/cpu/sparse_lengths_sum_cpu.cc | 8 ++-- .../experimental/c10/cpu/stop_gradient_cpu.cc | 4 +- caffe2/operators/inference_lstm_op.h | 1 - caffe2/operators/layer_norm_op.cc | 2 - 24 files changed, 49 insertions(+), 151 deletions(-) delete mode 100644 c10/core/Tensor.h diff --git a/aten/src/ATen/core/Tensor.h b/aten/src/ATen/core/Tensor.h index 255c67b..68977a8 100644 --- a/aten/src/ATen/core/Tensor.h +++ b/aten/src/ATen/core/Tensor.h @@ -11,7 +11,6 @@ #include #include #include -#include #include #include @@ -73,18 +72,6 @@ class CAFFE2_API Tensor { return r; } - explicit Tensor(C10Tensor tensor) : impl_(std::move(tensor).impl()) { - enforce_invariants(); - } - - explicit operator C10Tensor() const & { - return C10Tensor(impl_); - } - - explicit operator C10Tensor() && { - return C10Tensor(std::move(impl_)); - } - int64_t dim() const { return impl_->dim(); } diff --git a/aten/src/ATen/templates/Tensor.h b/aten/src/ATen/templates/Tensor.h index b2cac27..8824c26 100644 --- a/aten/src/ATen/templates/Tensor.h +++ b/aten/src/ATen/templates/Tensor.h @@ -11,7 +11,6 @@ #include #include #include -#include #include #include @@ -73,18 +72,6 @@ class CAFFE2_API Tensor { return r; } - explicit Tensor(C10Tensor tensor) : impl_(std::move(tensor).impl()) { - enforce_invariants(); - } - - explicit operator C10Tensor() const & { - return C10Tensor(impl_); - } - - explicit operator C10Tensor() && { - return C10Tensor(std::move(impl_)); - } - int64_t dim() const { return impl_->dim(); } diff --git a/c10/core/Tensor.h b/c10/core/Tensor.h deleted file mode 100644 index 461c1a8..0000000 --- a/c10/core/Tensor.h +++ /dev/null @@ -1,53 +0,0 @@ -#pragma once - -#include -#include -#include - -namespace c10 { - -/** - * This is a minimal Tensor class for use in c10 code. - * The plan on record is to eventually merge at::Tensor and caffe2::Tensor - * and move that merged class to c10, replacing this one. - * - * At time of writing this, we couldn't do that yet, because their APIs are - * not clean enough to make it in c10 and because they have dependencies we want - * to avoid, for example at::Tensor depends on at::Type. - */ -class C10Tensor final { -private: - using TensorImplPtr = intrusive_ptr; -public: - explicit C10Tensor(TensorImplPtr impl) noexcept; - - C10Tensor(const C10Tensor&) = default; - C10Tensor(C10Tensor&&) noexcept = default; - C10Tensor& operator=(const C10Tensor&) = default; - C10Tensor& operator=(C10Tensor&&) noexcept = default; - - const TensorImplPtr &impl() const & noexcept; - TensorImplPtr&& impl() && noexcept; - - TensorTypeId type_id() const; - -private: - TensorImplPtr impl_; -}; - -inline C10Tensor::C10Tensor(TensorImplPtr impl) noexcept -: impl_(std::move(impl)) {} - -inline const C10Tensor::TensorImplPtr &C10Tensor::impl() const & noexcept { - return impl_; -} - -inline C10Tensor::TensorImplPtr&& C10Tensor::impl() && noexcept { - return std::move(impl_); -} - -inline TensorTypeId C10Tensor::type_id() const { - return impl_->type_id(); -} - -} // namespace c10 diff --git a/caffe2/core/operator_c10wrapper.h b/caffe2/core/operator_c10wrapper.h index ade91ca..11ce6be 100644 --- a/caffe2/core/operator_c10wrapper.h +++ b/caffe2/core/operator_c10wrapper.h @@ -126,7 +126,7 @@ class C10OperatorWrapper final : public Operator { void popOutputs_() { AT_ASSERT(stack_.size() == op_.schema().returns().size()); for (size_t i = 0; i < op_.schema().returns().size(); ++i) { - OperatorBase::SetOutputTensor(i, Tensor(C10Tensor(std::move(stack_[i]).toTensor()))); + OperatorBase::SetOutputTensor(i, Tensor(std::move(stack_[i]).toTensor())); } stack_.clear(); } diff --git a/caffe2/core/tensor.h b/caffe2/core/tensor.h index a0ceec5..4846d9a 100644 --- a/caffe2/core/tensor.h +++ b/caffe2/core/tensor.h @@ -8,7 +8,6 @@ #include #include "ATen/core/Tensor.h" #include -#include namespace caffe2 { @@ -129,24 +128,6 @@ class CAFFE2_API Tensor final { return at::Tensor::wrap_tensor_impl(std::move(impl_)); } - /** - * @brief Mutual conversion with C10Tensor - * - * The tensor will share the same instance (data, strides, sizes, etc) but - * a different subset of APIs would be available - */ - explicit Tensor(C10Tensor tensor) : impl_(std::move(tensor).impl()) { - enforce_invariants(); - } - - explicit operator C10Tensor() const & { - return C10Tensor(impl_); - } - - explicit operator C10Tensor() && { - return C10Tensor(std::move(impl_)); - } - bool is_same(const Tensor& other) const noexcept { return impl_ == other.impl_; } diff --git a/caffe2/operators/experimental/c10/cpu/add_cpu.cc b/caffe2/operators/experimental/c10/cpu/add_cpu.cc index 8c67e0d..052cf1e 100644 --- a/caffe2/operators/experimental/c10/cpu/add_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/add_cpu.cc @@ -16,9 +16,9 @@ void add_op_cpu_impl( const at::Tensor& C_, bool legacy_broadcast, int64_t axis) { - Tensor A{C10Tensor(A_)}; - Tensor B{C10Tensor(B_)}; - Tensor C{C10Tensor(C_)}; + Tensor A(A_); + Tensor B(B_); + Tensor C(C_); CPUContext context; const DataType* A_data = A.template data(); const DataType* B_data = B.template data(); diff --git a/caffe2/operators/experimental/c10/cpu/averaged_loss_cpu.cc b/caffe2/operators/experimental/c10/cpu/averaged_loss_cpu.cc index cd8f090..069281c 100644 --- a/caffe2/operators/experimental/c10/cpu/averaged_loss_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/averaged_loss_cpu.cc @@ -14,8 +14,8 @@ template class averaged_loss_cpu final : public c10::OperatorKernel { public: void operator()(const at::Tensor& X_, const at::Tensor& sum_) { - Tensor X{C10Tensor(X_)}; - Tensor sum{C10Tensor(sum_)}; + Tensor X(X_); + Tensor sum(sum_); CPUContext context; sum.Resize(vector()); @@ -40,7 +40,7 @@ class averaged_loss_cpu final : public c10::OperatorKernel { } private: - at::Tensor scratch_ = at::Tensor(C10Tensor(empty({}, CPU))); + at::Tensor scratch_ = at::Tensor(empty({}, CPU)); }; static auto registry = c10::RegisterOperators().op( diff --git a/caffe2/operators/experimental/c10/cpu/batch_gather_cpu.cc b/caffe2/operators/experimental/c10/cpu/batch_gather_cpu.cc index c41ead2..c293aba 100644 --- a/caffe2/operators/experimental/c10/cpu/batch_gather_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/batch_gather_cpu.cc @@ -15,9 +15,9 @@ void batch_gather_op_cpu_impl( const at::Tensor& data_, const at::Tensor& indices_, const at::Tensor& output_) { - Tensor data{C10Tensor(data_)}; - Tensor indices{C10Tensor(indices_)}; - Tensor output{C10Tensor(output_)}; + Tensor data(data_); + Tensor indices(indices_); + Tensor output(output_); CPUContext context; CAFFE_ENFORCE_GE(data.dim(), 2, "DATA should be at least 2-D"); diff --git a/caffe2/operators/experimental/c10/cpu/batch_matmul_cpu.cc b/caffe2/operators/experimental/c10/cpu/batch_matmul_cpu.cc index 4970f5e..bbd10cc 100644 --- a/caffe2/operators/experimental/c10/cpu/batch_matmul_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/batch_matmul_cpu.cc @@ -25,9 +25,9 @@ class batch_matmul_cpu final : public c10::OperatorKernel { int64_t trans_a, int64_t trans_b, int64_t broadcast) { - Tensor A{C10Tensor(A_)}; - Tensor B{C10Tensor(B_)}; - Tensor Y{C10Tensor(Y_)}; + Tensor A(A_); + Tensor B(B_); + Tensor Y(Y_); CPUContext context; using Engine = caffe2::DefaultEngine; @@ -265,7 +265,7 @@ class batch_matmul_cpu final : public c10::OperatorKernel { } private: - at::Tensor scratch = at::Tensor(C10Tensor(empty({}, CPU))); + at::Tensor scratch = at::Tensor(empty({}, CPU)); }; static auto registry = c10::RegisterOperators().op( diff --git a/caffe2/operators/experimental/c10/cpu/cast_cpu.cc b/caffe2/operators/experimental/c10/cpu/cast_cpu.cc index 3f0b2f3..84db512 100644 --- a/caffe2/operators/experimental/c10/cpu/cast_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/cast_cpu.cc @@ -26,8 +26,8 @@ void cast_op_cpu_impl( const at::Tensor& input_, const at::Tensor& output_, int64_t to_) { - Tensor input{C10Tensor(input_)}; - Tensor output{C10Tensor(output_)}; + Tensor input(input_); + Tensor output(output_); TensorProto_DataType to = static_cast(to_); switch (to) { diff --git a/caffe2/operators/experimental/c10/cpu/concat_cpu.cc b/caffe2/operators/experimental/c10/cpu/concat_cpu.cc index c84dd3f..e84e8d0 100644 --- a/caffe2/operators/experimental/c10/cpu/concat_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/concat_cpu.cc @@ -18,8 +18,8 @@ void concat_op_cpu_impl( const at::Tensor& split_, int64_t axis, int64_t add_axis) { - Tensor output{C10Tensor(output_)}; - Tensor split{C10Tensor(split_)}; + Tensor output(output_); + Tensor split(split_); CPUContext context; split.Resize(vector(1, inputs.size())); diff --git a/caffe2/operators/experimental/c10/cpu/enforce_finite_cpu.cc b/caffe2/operators/experimental/c10/cpu/enforce_finite_cpu.cc index d833a67..69a4e75 100644 --- a/caffe2/operators/experimental/c10/cpu/enforce_finite_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/enforce_finite_cpu.cc @@ -10,7 +10,7 @@ namespace caffe2 { namespace { template void enforce_finite_op_impl_cpu(const at::Tensor& input_) { - Tensor input{C10Tensor(input_)}; + Tensor input(input_); const DataType* input_data = input.template data(); auto size = input.numel(); diff --git a/caffe2/operators/experimental/c10/cpu/expand_dims_cpu.cc b/caffe2/operators/experimental/c10/cpu/expand_dims_cpu.cc index 81566e7..780ff29 100644 --- a/caffe2/operators/experimental/c10/cpu/expand_dims_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/expand_dims_cpu.cc @@ -15,8 +15,8 @@ class expand_dims_cpu final : public c10::OperatorKernel { const at::Tensor& input_, const at::Tensor& output_, ArrayRef dims) { - Tensor input{C10Tensor(input_)}; - Tensor output{C10Tensor(output_)}; + Tensor input(input_); + Tensor output(output_); if (!initialized_) { dims_ = dims.vec(); diff --git a/caffe2/operators/experimental/c10/cpu/fc_cpu.cc b/caffe2/operators/experimental/c10/cpu/fc_cpu.cc index 51d034a..eac61b5 100644 --- a/caffe2/operators/experimental/c10/cpu/fc_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/fc_cpu.cc @@ -22,10 +22,10 @@ class fc_op_cpu final : public c10::OperatorKernel { const at::Tensor& Y_, int64_t axis, int64_t axis_w) { - Tensor X{C10Tensor(X_)}; - Tensor W{C10Tensor(W_)}; - Tensor b{C10Tensor(b_)}; - Tensor Y{C10Tensor(Y_)}; + Tensor X(X_); + Tensor W(W_); + Tensor b(b_); + Tensor Y(Y_); CPUContext context; constexpr bool TransposeWeight = true; @@ -125,7 +125,7 @@ class fc_op_cpu final : public c10::OperatorKernel { private: vector Y_shape_cache_; - at::Tensor bias_multiplier_ = at::Tensor(C10Tensor(Tensor())); + at::Tensor bias_multiplier_ = at::Tensor(Tensor()); }; static auto registry = c10::RegisterOperators().op( diff --git a/caffe2/operators/experimental/c10/cpu/filler_cpu.cc b/caffe2/operators/experimental/c10/cpu/filler_cpu.cc index 55e225d..3e49662 100644 --- a/caffe2/operators/experimental/c10/cpu/filler_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/filler_cpu.cc @@ -1,5 +1,4 @@ #include -#include #include "caffe2/core/operator_c10wrapper.h" #include "caffe2/core/tensor.h" #include "caffe2/utils/math.h" @@ -18,7 +17,7 @@ void filler_init( ArrayRef shape, ArrayRef extra_shape, bool input_as_shape) { - Tensor output{C10Tensor(output_)}; + Tensor output(output_); if (inputs.size()) { auto real_shape = vector{}; if (input_as_shape) { @@ -52,8 +51,8 @@ void given_tensor_fill_op_cpu_impl( ArrayRef extra_shape, bool input_as_shape, const at::Tensor& values_) { - Tensor output{C10Tensor(output_)}; - Tensor values{C10Tensor(values_)}; + Tensor output(output_); + Tensor values(values_); CPUContext context; filler_init(inputs, output_, shape, extra_shape, input_as_shape); @@ -78,7 +77,7 @@ void constant_fill_op_cpu_impl( bool input_as_shape, int64_t dtype, c10::Scalar value) { - Tensor output{C10Tensor(output_)}; + Tensor output(output_); CPUContext context; filler_init(inputs, output_, shape, extra_shape, input_as_shape); @@ -118,7 +117,7 @@ void uniform_fill_op_cpu_impl( bool input_as_shape, double min, double max) { - Tensor output{C10Tensor(output_)}; + Tensor output(output_); CPUContext context; filler_init(inputs, output_, shape, extra_shape, input_as_shape); diff --git a/caffe2/operators/experimental/c10/cpu/flatten_cpu.cc b/caffe2/operators/experimental/c10/cpu/flatten_cpu.cc index 6c153de..70cae21 100644 --- a/caffe2/operators/experimental/c10/cpu/flatten_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/flatten_cpu.cc @@ -13,8 +13,8 @@ void flatten_op_cpu_impl( const at::Tensor& input_, const at::Tensor& output_, int64_t axis) { - Tensor input{C10Tensor(input_)}; - Tensor output{C10Tensor(output_)}; + Tensor input(input_); + Tensor output(output_); CPUContext context; CAFFE_ENFORCE_GE( input.sizes().size(), axis, "The rank of the tensor must be >= axis."); diff --git a/caffe2/operators/experimental/c10/cpu/mul_cpu.cc b/caffe2/operators/experimental/c10/cpu/mul_cpu.cc index ef1e6d9..b64cbac 100644 --- a/caffe2/operators/experimental/c10/cpu/mul_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/mul_cpu.cc @@ -17,9 +17,9 @@ void mul_op_cpu_impl( const at::Tensor& C_, bool legacy_broadcast, int64_t axis) { - Tensor A{C10Tensor(A_)}; - Tensor B{C10Tensor(B_)}; - Tensor C{C10Tensor(C_)}; + Tensor A(A_); + Tensor B(B_); + Tensor C(C_); CPUContext context; const DataType* A_data = A.template data(); const DataType* B_data = B.template data(); diff --git a/caffe2/operators/experimental/c10/cpu/relu_cpu.cc b/caffe2/operators/experimental/c10/cpu/relu_cpu.cc index c29a677..0a0225c 100644 --- a/caffe2/operators/experimental/c10/cpu/relu_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/relu_cpu.cc @@ -12,8 +12,8 @@ template void relu_op_cpu_impl( const at::Tensor& input_, const at::Tensor& output_) { - Tensor input{C10Tensor(input_)}; - Tensor output{C10Tensor(output_)}; + Tensor input(input_); + Tensor output(output_); output.ResizeLike(input); diff --git a/caffe2/operators/experimental/c10/cpu/sigmoid_cpu.cc b/caffe2/operators/experimental/c10/cpu/sigmoid_cpu.cc index 17d96a5..cf60fd0 100644 --- a/caffe2/operators/experimental/c10/cpu/sigmoid_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/sigmoid_cpu.cc @@ -12,8 +12,8 @@ template void sigmoid_op_cpu_impl( const at::Tensor& input_, const at::Tensor& output_) { - Tensor input{C10Tensor(input_)}; - Tensor output{C10Tensor(output_)}; + Tensor input(input_); + Tensor output(output_); output.ResizeLike(input); caffe2::ConstEigenVectorArrayMap xM( diff --git a/caffe2/operators/experimental/c10/cpu/sigmoid_cross_entropy_with_logits_cpu.cc b/caffe2/operators/experimental/c10/cpu/sigmoid_cross_entropy_with_logits_cpu.cc index e23f6f8..460af4c 100644 --- a/caffe2/operators/experimental/c10/cpu/sigmoid_cross_entropy_with_logits_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/sigmoid_cross_entropy_with_logits_cpu.cc @@ -31,9 +31,9 @@ void sigmoid_cross_entropy_with_logits_op_cpu_impl( const at::Tensor& out_, bool log_D_trick, bool unjoined_lr_loss) { - Tensor logits{C10Tensor(logits_)}; - Tensor targets{C10Tensor(targets_)}; - Tensor out{C10Tensor(out_)}; + Tensor logits(logits_); + Tensor targets(targets_); + Tensor out(out_); CAFFE_ENFORCE_EQ(logits.sizes(), targets.sizes()); const auto inner_size = logits.dim() > 0 ? logits.sizes().back() : 1; diff --git a/caffe2/operators/experimental/c10/cpu/sparse_lengths_sum_cpu.cc b/caffe2/operators/experimental/c10/cpu/sparse_lengths_sum_cpu.cc index 6bbc107..98108e0 100644 --- a/caffe2/operators/experimental/c10/cpu/sparse_lengths_sum_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/sparse_lengths_sum_cpu.cc @@ -15,10 +15,10 @@ void sparse_lengths_sum_op_cpu_impl_( const at::Tensor& indicesInput_, const at::Tensor& lengthsInput_, const at::Tensor& output_) { - Tensor dataInput{C10Tensor(dataInput_)}; - Tensor indicesInput{C10Tensor(indicesInput_)}; - Tensor lengthsInput{C10Tensor(lengthsInput_)}; - Tensor output{C10Tensor(output_)}; + Tensor dataInput(dataInput_); + Tensor indicesInput(indicesInput_); + Tensor lengthsInput(lengthsInput_); + Tensor output(output_); using T = float; constexpr bool USE_MEAN = false; diff --git a/caffe2/operators/experimental/c10/cpu/stop_gradient_cpu.cc b/caffe2/operators/experimental/c10/cpu/stop_gradient_cpu.cc index f103719..bbfc891 100644 --- a/caffe2/operators/experimental/c10/cpu/stop_gradient_cpu.cc +++ b/caffe2/operators/experimental/c10/cpu/stop_gradient_cpu.cc @@ -12,8 +12,8 @@ template void stop_gradient_op_cpu_impl( const at::Tensor& input_, const at::Tensor& output_) { - Tensor input{C10Tensor(input_)}; - Tensor output{C10Tensor(output_)}; + Tensor input(input_); + Tensor output(output_); if (!output.is_same(input)) { output.CopyFrom(input); } diff --git a/caffe2/operators/inference_lstm_op.h b/caffe2/operators/inference_lstm_op.h index d907674..fe83b51 100644 --- a/caffe2/operators/inference_lstm_op.h +++ b/caffe2/operators/inference_lstm_op.h @@ -1,7 +1,6 @@ #ifndef LSTM_OP_H_ #define LSTM_OP_H_ -#include #include #include #include diff --git a/caffe2/operators/layer_norm_op.cc b/caffe2/operators/layer_norm_op.cc index 1add4e5..43a2c6c 100644 --- a/caffe2/operators/layer_norm_op.cc +++ b/caffe2/operators/layer_norm_op.cc @@ -1,7 +1,5 @@ #include "caffe2/operators/layer_norm_op.h" -#include - #include "caffe2/core/operator_c10wrapper.h" #include "caffe2/utils/eigen_utils.h" -- 2.7.4