aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/CXX11
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2014-08-23 14:35:41 -0700
committerGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2014-08-23 14:35:41 -0700
commit36fffe48f7231e07915ec231d33cf46faa0fa918 (patch)
treeda9cfd727751e915bcff271db4d7276afc6e1c5a /unsupported/Eigen/CXX11
parentfb5c1e9097886616d40a0988af5ca706292e54eb (diff)
Misc api improvements and cleanups
Diffstat (limited to 'unsupported/Eigen/CXX11')
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorDeviceType.h9
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h26
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;