diff options
author | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2014-08-23 14:35:41 -0700 |
---|---|---|
committer | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2014-08-23 14:35:41 -0700 |
commit | 36fffe48f7231e07915ec231d33cf46faa0fa918 (patch) | |
tree | da9cfd727751e915bcff271db4d7276afc6e1c5a /unsupported/Eigen/CXX11 | |
parent | fb5c1e9097886616d40a0988af5ca706292e54eb (diff) |
Misc api improvements and cleanups
Diffstat (limited to 'unsupported/Eigen/CXX11')
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorDeviceType.h | 9 | ||||
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h | 26 |
2 files changed, 35 insertions, 0 deletions
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceType.h b/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceType.h index b9c8c19fe..ef5e11537 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceType.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceType.h @@ -27,6 +27,10 @@ struct DefaultDevice { EIGEN_STRONG_INLINE void memset(void* buffer, int c, size_t n) const { ::memset(buffer, c, n); } + + EIGEN_STRONG_INLINE size_t numThreads() const { + return 1; + } }; @@ -115,6 +119,11 @@ struct GpuDevice { cudaMemsetAsync(buffer, c, n, *stream_); } + EIGEN_STRONG_INLINE size_t numThreads() const { + // Fixme: + return 32; + } + private: // TODO: multigpu. const cudaStream_t* stream_; diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h b/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h index 3b169a06f..5a113dc19 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h @@ -195,6 +195,32 @@ struct DSizes : array<DenseIndex, NumDims> { } EIGEN_DEVICE_FUNC explicit DSizes(const array<DenseIndex, NumDims>& a) : Base(a) { } + EIGEN_DEVICE_FUNC explicit DSizes(const DenseIndex i0) { + (*this)[0] = i0; + } + EIGEN_DEVICE_FUNC explicit DSizes(const DenseIndex i0, const DenseIndex i1) { + (*this)[0] = i0; + (*this)[1] = i1; + } + EIGEN_DEVICE_FUNC explicit DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2) { + (*this)[0] = i0; + (*this)[1] = i1; + (*this)[2] = i2; + } + EIGEN_DEVICE_FUNC explicit DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2, const DenseIndex i3) { + (*this)[0] = i0; + (*this)[1] = i1; + (*this)[2] = i2; + (*this)[3] = i3; + } + EIGEN_DEVICE_FUNC explicit DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2, const DenseIndex i3, const DenseIndex i4) { + (*this)[0] = i0; + (*this)[1] = i1; + (*this)[2] = i2; + (*this)[3] = i3; + (*this)[4] = i4; + } + DSizes& operator = (const array<DenseIndex, NumDims>& other) { *static_cast<Base*>(this) = other; return *this; |