aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2016-01-05 12:06:04 -0800
committerGravatar Benoit Steiner <bsteiner@bsteiner2.mtv.corp.google.com>2016-01-05 12:06:04 -0800
commit295625035eefc7801cfe831bd1ba851faacb7579 (patch)
tree9bfcd3910d98519c3925179fc57b60f4a21d2239 /third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h
parentb68e9afcc8a0d79045fb01f83a6b92c82fb12c3d (diff)
Deleted the local copy of the tensor code since we're now pulling this
code directly from the eigen repository
Diffstat (limited to 'third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h')
-rw-r--r--third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h247
1 files changed, 0 insertions, 247 deletions
diff --git a/third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h b/third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h
deleted file mode 100644
index cfde4fdc72..0000000000
--- a/third_party/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h
+++ /dev/null
@@ -1,247 +0,0 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra.
-//
-// Copyright (C) 2013 Christian Seiler <christian@iwakd.de>
-//
-// This Source Code Form is subject to the terms of the Mozilla
-// Public License v. 2.0. If a copy of the MPL was not distributed
-// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-#ifndef EIGEN_CXX11_TENSOR_TENSORSTORAGE_H
-#define EIGEN_CXX11_TENSOR_TENSORSTORAGE_H
-
-#ifdef EIGEN_TENSOR_STORAGE_CTOR_PLUGIN
- #define EIGEN_INTERNAL_TENSOR_STORAGE_CTOR_PLUGIN EIGEN_TENSOR_STORAGE_CTOR_PLUGIN;
-#else
- #define EIGEN_INTERNAL_TENSOR_STORAGE_CTOR_PLUGIN
-#endif
-
-namespace Eigen {
-
-/** \internal
- *
- * \class TensorStorage
- * \ingroup CXX11_Tensor_Module
- *
- * \brief Stores the data of a tensor
- *
- * This class stores the data of fixed-size, dynamic-size or mixed tensors
- * in a way as compact as possible.
- *
- * \sa Tensor
- */
-template<typename T, typename Dimensions, int Options_> class TensorStorage;
-
-
-// Pure fixed-size storage
-template<typename T, int Options_, typename FixedDimensions>
-class TensorStorage<T, FixedDimensions, Options_>
-{
- private:
- static const std::size_t Size = FixedDimensions::total_size;
-
- EIGEN_ALIGN_DEFAULT T m_data[Size];
- FixedDimensions m_dimensions;
-
- public:
- EIGEN_DEVICE_FUNC
- EIGEN_STRONG_INLINE TensorStorage() {
- EIGEN_STATIC_ASSERT(Size == FixedDimensions::total_size, YOU_MADE_A_PROGRAMMING_MISTAKE)
- }
-
- EIGEN_DEVICE_FUNC
- EIGEN_STRONG_INLINE T *data() { return m_data; }
- EIGEN_DEVICE_FUNC
- EIGEN_STRONG_INLINE const T *data() const { return m_data; }
-
- EIGEN_DEVICE_FUNC
- EIGEN_STRONG_INLINE const FixedDimensions& dimensions() const { return m_dimensions; }
-
- EIGEN_DEVICE_FUNC
- EIGEN_STRONG_INLINE DenseIndex size() const { return m_dimensions.TotalSize(); }
-};
-
-
-// pure dynamic
-template<typename T, int Options_, typename IndexType, std::size_t NumIndices_>
-class TensorStorage<T, DSizes<IndexType, NumIndices_>, Options_>
-{
- public:
- typedef IndexType Index;
- typedef DSizes<IndexType, NumIndices_> Dimensions;
- typedef TensorStorage<T, DSizes<IndexType, NumIndices_>, Options_> Self;
-
- EIGEN_DEVICE_FUNC TensorStorage()
- : m_data(NumIndices_ ? 0 : internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(1))
- , m_dimensions() {}
-
- EIGEN_DEVICE_FUNC TensorStorage(internal::constructor_without_unaligned_array_assert)
- : m_data(NumIndices_ ? 0 : internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(1))
- , m_dimensions(internal::template repeat<NumIndices_, Index>(0)) {}
-
- EIGEN_DEVICE_FUNC TensorStorage(Index size, const array<Index, NumIndices_>& dimensions)
- : m_data(internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(size)), m_dimensions(dimensions)
- { EIGEN_INTERNAL_TENSOR_STORAGE_CTOR_PLUGIN }
-
- EIGEN_DEVICE_FUNC TensorStorage(const Self& other)
- : m_data(internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(internal::array_prod(other.m_dimensions)))
- , m_dimensions(other.m_dimensions)
- {
- internal::smart_copy(other.m_data, other.m_data+internal::array_prod(other.m_dimensions), m_data);
- }
- EIGEN_DEVICE_FUNC Self& operator=(const Self& other)
- {
- if (this != &other) {
- Self tmp(other);
- this->swap(tmp);
- }
- return *this;
- }
-
- EIGEN_DEVICE_FUNC ~TensorStorage() { internal::conditional_aligned_delete_auto<T,(Options_&DontAlign)==0>(m_data, internal::array_prod(m_dimensions)); }
- EIGEN_DEVICE_FUNC void swap(Self& other)
- { numext::swap(m_data,other.m_data); numext::swap(m_dimensions,other.m_dimensions); }
-
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const {return m_dimensions;}
-
- EIGEN_DEVICE_FUNC void resize(Index size, const array<Index, NumIndices_>& nbDimensions)
- {
- const Index currentSz = internal::array_prod(m_dimensions);
- if(size != currentSz)
- {
- internal::conditional_aligned_delete_auto<T,(Options_&DontAlign)==0>(m_data, currentSz);
- if (size)
- m_data = internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(size);
- else
- m_data = 0;
- EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN
- }
- m_dimensions = nbDimensions;
- }
-
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T *data() { return m_data; }
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T *data() const { return m_data; }
-
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index size() const { return m_dimensions.TotalSize(); }
-
- private:
- T *m_data;
- Dimensions m_dimensions;
-};
-
-
-// pure dynamic
-template<typename T, int Options_>
-class TensorStorage<T, VSizes<DenseIndex>, Options_>
-{
- T* m_data;
- VSizes<DenseIndex> m_dimensions;
- typedef TensorStorage<T, VSizes<DenseIndex>, Options_> Self_;
-
- public:
- EIGEN_DEVICE_FUNC TensorStorage() : m_data(0), m_dimensions() {}
-
- template <DenseIndex NumDims>
- EIGEN_DEVICE_FUNC TensorStorage(const array<DenseIndex, NumDims>& dimensions)
- {
- m_dimensions.resize(NumDims);
- for (int i = 0; i < NumDims; ++i) {
- m_dimensions[i] = dimensions[i];
- }
- const DenseIndex size = array_prod(dimensions);
- m_data = internal::conditional_managed_new_auto<T,(Options_&DontAlign)==0,(Options_&AllocateUVM)>(size);
- EIGEN_INTERNAL_TENSOR_STORAGE_CTOR_PLUGIN
- }
-
- EIGEN_DEVICE_FUNC TensorStorage(const std::vector<DenseIndex>& dimensions)
- : m_dimensions(dimensions)
- {
- const DenseIndex size = internal::array_prod(dimensions);
- m_data = internal::conditional_managed_new_auto<T,(Options_&DontAlign)==0,(Options_&AllocateUVM)>(size);
- EIGEN_INTERNAL_TENSOR_STORAGE_CTOR_PLUGIN
- }
-
-#ifdef EIGEN_HAS_VARIADIC_TEMPLATES
- template<typename... IndexTypes> EIGEN_DEVICE_FUNC
- TensorStorage(IndexTypes... dimensions) {
- const int NumDims = sizeof...(dimensions);
- m_dimensions.resize(NumDims);
- const array<DenseIndex, NumDims> dim{{dimensions...}};
- DenseIndex size = 1;
- for (int i = 0; i < NumDims; ++i) {
- size *= dim[i];
- m_dimensions[i] = dim[i];
- }
- m_data = internal::conditional_managed_new_auto<T,(Options_&DontAlign)==0,(Options_&AllocateUVM)>(size);
- EIGEN_INTERNAL_TENSOR_STORAGE_CTOR_PLUGIN
- }
-#endif
-
- EIGEN_DEVICE_FUNC TensorStorage(const Self_& other)
- : m_data(internal::conditional_managed_new_auto<T,(Options_&DontAlign)==0,(Options_&AllocateUVM)>(internal::array_prod(other.m_dimensions)))
- , m_dimensions(other.m_dimensions)
- {
- internal::smart_copy(other.m_data, other.m_data+internal::array_prod(other.m_dimensions), m_data);
- }
-
- EIGEN_DEVICE_FUNC Self_& operator=(const Self_& other)
- {
- if (this != &other) {
- Self_ tmp(other);
- this->swap(tmp);
- }
- return *this;
- }
-
- EIGEN_DEVICE_FUNC ~TensorStorage()
- {
- internal::conditional_managed_delete_auto<T,(Options_&DontAlign)==0,(Options_&AllocateUVM)>(m_data, internal::array_prod(m_dimensions));
- }
-
- EIGEN_DEVICE_FUNC void swap(Self_& other)
- { std::swap(m_data,other.m_data); std::swap(m_dimensions,other.m_dimensions); }
-
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const VSizes<DenseIndex>& dimensions() const { return m_dimensions; }
-
- template <typename NewDimensions> EIGEN_DEVICE_FUNC
- void resize(DenseIndex size, const NewDimensions& nbDimensions)
- {
- const DenseIndex currentSz = internal::array_prod(m_dimensions);
- if(size != currentSz)
- {
- internal::conditional_managed_delete_auto<T,(Options_&DontAlign)==0,(Options_&AllocateUVM)>(m_data, currentSz);
- if (size)
- m_data = internal::conditional_managed_new_auto<T,(Options_&DontAlign)==0,(Options_&AllocateUVM)>(size);
- else
- m_data = 0;
- EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN
- }
- m_dimensions.resize(internal::array_size<NewDimensions>::value);
- for (int i = 0; i < internal::array_size<NewDimensions>::value; ++i) {
- m_dimensions[i] = nbDimensions[i];
- }
- }
- EIGEN_DEVICE_FUNC void resize(DenseIndex size, const std::vector<DenseIndex>& nbDimensions)
- {
- const DenseIndex currentSz = internal::array_prod(m_dimensions);
- if(size != currentSz)
- {
- internal::conditional_managed_delete_auto<T,(Options_&DontAlign)==0,(Options_&AllocateUVM)>(m_data, currentSz);
- if (size)
- m_data = internal::conditional_managed_new_auto<T,(Options_&DontAlign)==0,(Options_&AllocateUVM)>(size);
- else
- m_data = 0;
- EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN
- }
- m_dimensions = nbDimensions;
- }
-
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T *data() { return m_data; }
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T *data() const { return m_data; }
-
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex size() const { return m_dimensions.TotalSize(); }
-};
-
-} // end namespace Eigen
-
-#endif // EIGEN_CXX11_TENSOR_TENSORSTORAGE_H