Delete C10Tensor (#19328)
authorSebastian Messmer <messmer@fb.com>
Wed, 17 Apr 2019 06:59:02 +0000 (23:59 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Wed, 17 Apr 2019 07:02:27 +0000 (00:02 -0700)
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

24 files changed:
aten/src/ATen/core/Tensor.h
aten/src/ATen/templates/Tensor.h
c10/core/Tensor.h [deleted file]
caffe2/core/operator_c10wrapper.h
caffe2/core/tensor.h
caffe2/operators/experimental/c10/cpu/add_cpu.cc
caffe2/operators/experimental/c10/cpu/averaged_loss_cpu.cc
caffe2/operators/experimental/c10/cpu/batch_gather_cpu.cc
caffe2/operators/experimental/c10/cpu/batch_matmul_cpu.cc
caffe2/operators/experimental/c10/cpu/cast_cpu.cc
caffe2/operators/experimental/c10/cpu/concat_cpu.cc
caffe2/operators/experimental/c10/cpu/enforce_finite_cpu.cc
caffe2/operators/experimental/c10/cpu/expand_dims_cpu.cc
caffe2/operators/experimental/c10/cpu/fc_cpu.cc
caffe2/operators/experimental/c10/cpu/filler_cpu.cc
caffe2/operators/experimental/c10/cpu/flatten_cpu.cc
caffe2/operators/experimental/c10/cpu/mul_cpu.cc
caffe2/operators/experimental/c10/cpu/relu_cpu.cc
caffe2/operators/experimental/c10/cpu/sigmoid_cpu.cc
caffe2/operators/experimental/c10/cpu/sigmoid_cross_entropy_with_logits_cpu.cc
caffe2/operators/experimental/c10/cpu/sparse_lengths_sum_cpu.cc
caffe2/operators/experimental/c10/cpu/stop_gradient_cpu.cc
caffe2/operators/inference_lstm_op.h
caffe2/operators/layer_norm_op.cc

index 255c67b..68977a8 100644 (file)
@@ -11,7 +11,6 @@
 #include <c10/core/UndefinedTensorImpl.h>
 #include <c10/util/Exception.h>
 #include <c10/util/Optional.h>
-#include <c10/core/Tensor.h>
 #include <ATen/core/LegacyTypeDispatch.h>
 #include <ATen/core/DeprecatedTypePropertiesRegistry.h>
 
@@ -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();
   }
index b2cac27..8824c26 100644 (file)
@@ -11,7 +11,6 @@
 #include <c10/core/UndefinedTensorImpl.h>
 #include <c10/util/Exception.h>
 #include <c10/util/Optional.h>
-#include <c10/core/Tensor.h>
 #include <ATen/core/LegacyTypeDispatch.h>
 #include <ATen/core/DeprecatedTypePropertiesRegistry.h>
 
@@ -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 (file)
index 461c1a8..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#pragma once
-
-#include <c10/core/TensorImpl.h>
-#include <c10/core/UndefinedTensorImpl.h>
-#include <c10/macros/Macros.h>
-
-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<TensorImpl, UndefinedTensorImpl>;
-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
index ade91ca..11ce6be 100644 (file)
@@ -126,7 +126,7 @@ class C10OperatorWrapper final : public Operator<Context> {
   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();
   }
index a0ceec5..4846d9a 100644 (file)
@@ -8,7 +8,6 @@
 #include <c10/util/intrusive_ptr.h>
 #include "ATen/core/Tensor.h"
 #include <c10/core/TensorOptions.h>
-#include <c10/core/Tensor.h>
 
 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_;
   }
index 8c67e0d..052cf1e 100644 (file)
@@ -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<DataType>();
   const DataType* B_data = B.template data<DataType>();
index cd8f090..069281c 100644 (file)
@@ -14,8 +14,8 @@ template <class T, class Context>
 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<int64_t>());
@@ -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(
index c41ead2..c293aba 100644 (file)
@@ -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");
index 4970f5e..bbd10cc 100644 (file)
@@ -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(
index 3f0b2f3..84db512 100644 (file)
@@ -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<TensorProto_DataType>(to_);
 
   switch (to) {
index c84dd3f..e84e8d0 100644 (file)
@@ -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<int64_t>(1, inputs.size()));
index d833a67..69a4e75 100644 (file)
@@ -10,7 +10,7 @@ namespace caffe2 {
 namespace {
 template <class DataType>
 void enforce_finite_op_impl_cpu(const at::Tensor& input_) {
-  Tensor input{C10Tensor(input_)};
+  Tensor input(input_);
   const DataType* input_data = input.template data<DataType>();
   auto size = input.numel();
 
index 81566e7..780ff29 100644 (file)
@@ -15,8 +15,8 @@ class expand_dims_cpu final : public c10::OperatorKernel {
       const at::Tensor& input_,
       const at::Tensor& output_,
       ArrayRef<int64_t> dims) {
-    Tensor input{C10Tensor(input_)};
-    Tensor output{C10Tensor(output_)};
+    Tensor input(input_);
+    Tensor output(output_);
 
     if (!initialized_) {
       dims_ = dims.vec();
index 51d034a..eac61b5 100644 (file)
@@ -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<int64_t> Y_shape_cache_;
-  at::Tensor bias_multiplier_ = at::Tensor(C10Tensor(Tensor()));
+  at::Tensor bias_multiplier_ = at::Tensor(Tensor());
 };
 
 static auto registry = c10::RegisterOperators().op(
index 55e225d..3e49662 100644 (file)
@@ -1,5 +1,4 @@
 #include <ATen/core/op_registration/op_registration.h>
-#include <c10/core/Tensor.h>
 #include "caffe2/core/operator_c10wrapper.h"
 #include "caffe2/core/tensor.h"
 #include "caffe2/utils/math.h"
@@ -18,7 +17,7 @@ void filler_init(
     ArrayRef<int64_t> shape,
     ArrayRef<int64_t> extra_shape,
     bool input_as_shape) {
-  Tensor output{C10Tensor(output_)};
+  Tensor output(output_);
   if (inputs.size()) {
     auto real_shape = vector<int64_t>{};
     if (input_as_shape) {
@@ -52,8 +51,8 @@ void given_tensor_fill_op_cpu_impl(
     ArrayRef<int64_t> 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);
index 6c153de..70cae21 100644 (file)
@@ -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.");
index ef1e6d9..b64cbac 100644 (file)
@@ -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<DataType>();
   const DataType* B_data = B.template data<DataType>();
index c29a677..0a0225c 100644 (file)
@@ -12,8 +12,8 @@ template <class DataType>
 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);
 
index 17d96a5..cf60fd0 100644 (file)
@@ -12,8 +12,8 @@ template <class DataType>
 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<DataType> xM(
index e23f6f8..460af4c 100644 (file)
@@ -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;
index 6bbc107..98108e0 100644 (file)
@@ -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;
index f103719..bbfc891 100644 (file)
@@ -12,8 +12,8 @@ template <class DataType>
 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);
   }
index d907674..fe83b51 100644 (file)
@@ -1,7 +1,6 @@
 #ifndef LSTM_OP_H_
 #define LSTM_OP_H_
 
-#include <c10/core/Tensor.h>
 #include <algorithm>
 #include <sstream>
 #include <unordered_map>
index 1add4e5..43a2c6c 100644 (file)
@@ -1,7 +1,5 @@
 #include "caffe2/operators/layer_norm_op.h"
 
-#include <c10/core/Tensor.h>
-
 #include "caffe2/core/operator_c10wrapper.h"
 #include "caffe2/utils/eigen_utils.h"