Commit Graph

1190 Commits

Author SHA1 Message Date
Benoit Steiner
7e0b6c56b4 Added ability to initialize a tensor using an initializer list 2015-01-14 12:41:30 -08:00
Benoit Steiner
b12dd1ae3c Misc improvements for fixed size tensors 2015-01-14 12:39:34 -08:00
Benoit Steiner
71676eaddd Added support for RowMajor inputs to the contraction code. 2015-01-14 12:36:57 -08:00
Benoit Steiner
0a0ab6dd15 Increased the functionality of the tensor devices 2015-01-14 11:45:17 -08:00
Benoit Steiner
5692723c58 Improved the performance of the contraction code on CUDA 2015-01-14 11:42:52 -08:00
Benoit Steiner
8f4b8d204b Improved the performance of tensor reductions
Added the ability to generate random numbers following a normal distribution
Created a test to validate the ability to generate random numbers.
2015-01-14 10:19:33 -08:00
Benoit Steiner
3bd2b41b2e Created a test for tensor type casting 2015-01-14 10:17:02 -08:00
Benoit Steiner
4928ea1212 Added ability to reverse the order of the coefficients in a tensor 2015-01-14 10:15:58 -08:00
Benoit Steiner
b00fe1590d Added ability to swap the layout of a tensor 2015-01-14 10:14:46 -08:00
Benoit Steiner
c94174b4fe Improved tensor references 2015-01-14 10:13:08 -08:00
Benoit Steiner
91dd53e54d Created some documentation 2015-01-13 16:07:51 -08:00
Benoit Steiner
9f98650d0a Ensured that contractions that can be reduced to a matrix vector product work correctly even when the input coefficients aren't aligned. 2015-01-06 09:29:13 -08:00
Christoph Hertzberg
608733415a Free functions should only be declared as static in separate compilation units
(grafted from d85abc89c5
)
2014-12-12 12:01:03 +01:00
Christoph Hertzberg
e8cdbedefb bug #877, bug #572: Introduce a global Index typedef. Rename Sparse*::Index to StorageIndex, make Dense*::StorageIndex an alias to DenseIndex. Overall this commit gets rid of all Index conversion warnings. 2014-12-04 22:48:53 +01:00
Gael Guennebaud
6ccf97f3e6 Fix GL support wrt evaluators 2014-12-04 22:05:28 +01:00
Gael Guennebaud
5fc4ce6449 bug #876: remove usage of atanh2 in matrix power 2014-12-08 16:44:05 +01:00
Gael Guennebaud
77294047d6 bug #876, matrix_log_compute_2x2: directly use logp1 instead of atanh2 2014-12-08 16:28:06 +01:00
Gael Guennebaud
8efd9142b3 Merged in infinitei/eigen-opengl-fixes (pull request PR-90)
Adding missing OPENGL_LIBRARIES for openglsupport test.
2014-12-05 12:54:57 +01:00
Abhijit Kundu
48db34a7b9 Adding missing OPENGL_LIBRARIES for openglsupport test. Also adding OpenGL include directories as a better pratice even though these are system include directories in most systems. 2014-12-04 01:18:47 -05:00
Benoit Steiner
b33cf92878 Fixed the evaluation of expressions involving tensors of 2 or 3 elements on CUDA devices. 2014-11-18 14:32:41 -08:00
Benoit Steiner
1d3c8306f8 Fixed compilation errors with clang.
H: Enter commit message.  Lines beginning with 'HG:' are removed.
2014-11-13 19:13:17 -08:00
Benoit Steiner
ec785b0180 Added support for extraction of patches from images 2014-11-13 09:28:54 -08:00
Benoit Steiner
eeabf7975e Optimized broadcasting 2014-11-12 22:35:44 -08:00
Benoit Steiner
c2d1074932 Added support for static list of indices 2014-11-12 22:25:38 -08:00
Benoit Steiner
cb37f818ca Fixed a compilation error triggered by some operations on fixed sized tensors 2014-11-05 23:25:11 -08:00
Benoit Steiner
9a06a71627 Fixed a test 2014-11-05 07:49:51 -08:00
Benoit Steiner
9ea09179b5 Fixed the return type of the coefficient-wise tensor operations. 2014-11-04 10:24:42 -08:00
Benoit Steiner
b1789c112b Improved handling of 1d tensors 2014-11-03 08:51:33 -08:00
Benoit Steiner
7f2c6ed2fa Fixed a compilation warning 2014-10-31 11:45:21 -07:00
Benoit Steiner
85c3389b28 Fixed a test 2014-10-31 00:04:13 -07:00
Benoit Steiner
67fcf47ecb Merged from trunk 2014-10-30 21:59:22 -07:00
Benoit Steiner
fcecafde3a Fixed a compilation error with clang 2014-10-30 21:58:14 -07:00
Benoit Steiner
d62bfe73a9 Use the proper index type in the padding code 2014-10-30 18:15:05 -07:00
Benoit Steiner
bc99c5f7db fixed some potential alignment issues. 2014-10-30 18:09:53 -07:00
Benoit Steiner
5e62427e22 Use the proper index type 2014-10-30 17:49:39 -07:00
Gael Guennebaud
21c0a2ce0c Move D&C SVD to official SVD module. 2014-10-29 11:29:33 +01:00
Benoit Steiner
debc97821c Added support for tensor references 2014-10-28 23:10:13 -07:00
Benjamin Chrétien
c426054767 BDCSVD: fix CMake install (missing separator). 2014-10-24 15:10:56 +02:00
Christoph Hertzberg
1fa793cb97 Removed weird self assignment. 2014-10-24 13:19:19 +02:00
Gael Guennebaud
fe57b2f963 bug #701: workaround (min) and (max) blocking ADL by introducing numext::mini and numext::maxi internal functions and a EIGEN_NOT_A_MACRO macro. 2014-10-20 15:55:32 +02:00
Benoit Steiner
f786897e4b Added access to the unerlying raw data of a tnsor slice/chip whenever possible 2014-10-17 15:33:27 -07:00
Benoit Steiner
7acd38d19e Created some benchmarks for the tensor code 2014-10-17 09:49:03 -07:00
Gael Guennebaud
4b7c3abbea Fix D&C SVD wrt zero matrices 2014-10-17 15:32:55 +02:00
Benoit Steiner
65af852b54 Silenced one last warning 2014-10-16 15:02:30 -07:00
Benoit Steiner
ae697b471c Silenced a few compilation warnings
Generalized a TensorMap constructor
2014-10-16 14:52:50 -07:00
Benoit Steiner
94e47798f4 Fixed the return types of unary and binary expressions to properly handle the case where it is different from the input type (e.g. abs(complex<float>)) 2014-10-16 10:41:07 -07:00
Benoit Steiner
d853adffdb Avoid calling get_future() more than once on a given promise. 2014-10-16 10:10:04 -07:00
Benoit Steiner
bfdd9f3ac9 Made the blocking computation aware of the l3 cache
Also optimized the blocking parameters to take into account the number of threads used for a computation
2014-10-15 15:32:59 -07:00
Benoit Steiner
dba55041ab Added support for promises
Started to improve multithreaded contractions
2014-10-15 11:20:36 -07:00
Gael Guennebaud
2cc41dbe83 D&C SVD: fix some numerical issues by truly skipping deflated singular values when computing them 2014-10-15 15:21:12 +02:00
Gael Guennebaud
c26e8a1af3 D&C SVD: fix deflation of repeated singular values, fix sorting of singular values, fix case of complete deflation 2014-10-15 11:59:21 +02:00
Benoit Steiner
99d75235a9 Misc improvements and cleanups 2014-10-13 17:02:09 -07:00
Benoit Steiner
4c70b0a762 Added support for patch extraction 2014-10-13 10:04:04 -07:00
Benoit Steiner
0219f8aed4 Added ability to print a tensor using an iostream. 2014-10-10 16:17:26 -07:00
Benoit Steiner
2ed1838aeb Added support for tensor chips 2014-10-10 16:11:27 -07:00
Benoit Steiner
4b36c3591f Fixed the tensor shuffling test 2014-10-10 15:43:21 -07:00
Benoit Steiner
a991f94c0e Fixed the thread pool test 2014-10-10 15:20:37 -07:00
Benoit Steiner
498b7eed25 Rewrote the TensorBase::random method to support the generation of random number on gpu. 2014-10-09 15:39:13 -07:00
Benoit Steiner
767424af18 Improved the functors defined for standard reductions
Added a functor to encapsulate the generation of random numbers on cpu and gpu.
2014-10-09 15:36:23 -07:00
Gael Guennebaud
ccd70ba123 Various numerical fixes in D&C SVD: I cannot make it fail with double, but still need to tune for single precision, and carefully test with duplicated singular values 2014-10-09 23:29:01 +02:00
Benoit Steiner
44beee9d68 Removed dead code 2014-10-08 14:14:20 -07:00
Benoit Steiner
0a07ac574e Added support for the *= and /* operators to TensorBase 2014-10-08 13:32:41 -07:00
Benoit Steiner
6c047d398d Fixed a comment 2014-10-08 13:29:36 -07:00
Gael Guennebaud
118b1113d9 Workaround MSVC issue. 2014-10-07 09:53:39 +02:00
Gael Guennebaud
503c176d8e Fix missing outer() member in DynamicSparseMatrix 2014-10-07 09:53:27 +02:00
Gael Guennebaud
dbdd8b0883 D&C SVD: add scaling to avoid overflow, fix handling of fixed size matrices 2014-10-06 19:35:57 +02:00
Benoit Steiner
152f3218ac Improved contraction test 2014-10-03 19:33:44 -07:00
Benoit Steiner
af2e5995e2 Improved support for CUDA devices.
Improved contractions on GPU
2014-10-03 19:18:07 -07:00
Benoit Steiner
1269392822 Created the IndexPair type to store pair of tensor indices. CUDA doesn't support std::pair so we can't use them when targeting GPUs.
Improved the performance on tensor contractions
2014-10-03 10:16:59 -07:00
Benoit Steiner
b7271dffb5 Generalized the gebp apis 2014-10-02 16:51:57 -07:00
Benoit Steiner
8b2afe33a1 Fixes for the forced evaluation of tensor expressions
More tests
2014-10-02 10:39:36 -07:00
Benoit Steiner
5cc23199be More tests to validate the const-correctness of the tensor code. 2014-10-02 10:30:44 -07:00
Benoit Steiner
7caaf6453b Added support for tensor reductions and concatenations 2014-10-01 20:38:22 -07:00
Benoit Steiner
1c236f4c9a Added tests for tensors of const values and tensors of stringswwq:: 2014-10-01 20:21:42 -07:00
Christoph Hertzberg
6d26deb894 Missing outerStride in AlignedVector3 resulted in infinite recursion 2014-09-30 16:43:19 +02:00
Gael Guennebaud
842e31cf5c Let KroneckerProduct exploits the recently introduced generic InnerIterator class. 2014-09-29 13:37:49 +02:00
Georg Drenkhahn
8a502233d8 Correcting the ReturnType in traits<KroneckerProduct<>> to include the correct Index type.
Fixed mixup of types Rhs::Index and Lhs:Index in various loop variables.
Added explicit type conversion for arithmetic expressions which may return a wider type.
2014-09-21 23:19:29 +02:00
Georg Drenkhahn
3bd31e21b5 Fixed compiler warning on implicit integer conversion by separating index type for matrix and permutation matrix which may not be equal. 2014-09-20 15:00:36 +02:00
Georg Drenkhahn
75e269c77b Fixed warning on implicit integer conversion in test case code by using type VectorXd::Index instead of int. 2014-09-20 14:57:42 +02:00
Gael Guennebaud
abba11bdcf Many improvements in Divide&Conquer SVD:
- Fix many numerical issues, in particular regarding deflation.
- Add heavy debugging output to help track numerical issues (there are still fews)
- Make use of Eiegn's apply-inplane-rotation feature.
2014-09-22 15:22:52 +02:00
Gael Guennebaud
03dd4dd91a Unify unit test for BDC and Jacobi SVD. This reveals some numerical issues in BDCSVD. 2014-09-19 15:25:48 +02:00
Gael Guennebaud
e70506dd8f Fix inner-stride of AlignedVector3 2014-09-18 22:46:46 +02:00
Gael Guennebaud
2ae20d558b Update KroneckerProduct wrt evaluator changes 2014-09-18 22:08:49 +02:00
Gael Guennebaud
62bce6e5e6 Make MatrixFunction use nested_eval instead of nested 2014-09-18 17:31:17 +02:00
Gael Guennebaud
060e835ee9 Add evaluator for the experimental AlignedVector3 2014-09-18 17:30:21 +02:00
Gael Guennebaud
0ca43f7e9a Remove deprecated code not used by evaluators 2014-09-18 15:15:27 +02:00
Benoit Steiner
10a79ca3a3 Merged latest updates from the Eigen trunk. 2014-09-15 09:18:16 -07:00
Gael Guennebaud
749b56f6af merge with default branch 2014-09-14 17:34:54 +02:00
Benoit Steiner
efdff15749 Fixed a typo in the contraction code 2014-09-06 13:28:24 -07:00
Gael Guennebaud
dacd39ea76 Exploit sparse structure in naiveU and naiveV when updating them. 2014-09-05 17:51:46 +02:00
Benoit Steiner
74db22455a Misc fixes. 2014-09-05 07:47:43 -07:00
Benoit Steiner
1abe4ed14c Created more regression tests 2014-09-04 20:27:28 -07:00
Benoit Steiner
d43f737b4a Added support for evaluation of tensor shuffling operations as lvalues 2014-09-04 20:02:28 -07:00
Benoit Steiner
f50548e86a Added missing tensor copy constructors. As a result it is now possible to declare and initialize a tensor on the same line, as in:
Tensor<bla> T = A + B;  or
  Tensor<bla> T(A.reshape(new_shape));
2014-09-04 19:50:27 -07:00
Gael Guennebaud
15bad3670b Apply Householder U and V in-place. 2014-09-04 09:17:01 +02:00
Benoit Steiner
b24fe22b1a Improved the performance of the tensor convolution code by a factor of about 4. 2014-09-03 11:38:13 -07:00
Gael Guennebaud
c82dc227f1 Cleaning in BDCSVD (formating, handling of transpose case, remove some for loops) 2014-09-03 10:15:24 +02:00
Gael Guennebaud
a96f3d629c Clean bdcsvd 2014-09-02 22:30:23 +02:00
Gael Guennebaud
1f398dfc82 Factorize *SVD::solve to SVDBase 2014-09-01 18:31:54 +02:00
Gael Guennebaud
b3a0365429 merge with default branch 2014-09-01 18:21:01 +02:00
Gael Guennebaud
eb39296028 Reafctoring in D&C SVD unsupported module: clean and merge the SVDBase class to Eigen/SVD, rm copy/pasted JacobiSVD.h file 2014-09-01 18:16:20 +02:00
Gael Guennebaud
72c4f8ca8f Disable a few unit tests in unsupported 2014-09-01 17:35:58 +02:00
Gael Guennebaud
8754341848 Fix remaining garbage during a merge. 2014-09-01 17:25:13 +02:00
Gael Guennebaud
daad9585a3 Fix Kronecker product in legacy mode. 2014-09-01 17:24:07 +02:00
Gael Guennebaud
b051bbd64f Make unsupport sparse solvers use SparseSolverBase 2014-09-01 17:21:47 +02:00
Gael Guennebaud
b3d63b4db2 Add evaluator for DynamicSparseMatrix 2014-09-01 17:21:05 +02:00
Gael Guennebaud
124d12a915 merge default branch 2014-08-29 15:20:31 +02:00
Freddie Witherden
c3e4080474 Allow LevenbergMarquardt to work with non-standard types. 2014-08-27 15:24:51 +01:00
Benoit Steiner
2959045f2f Optimized the tensor padding code. 2014-08-26 09:47:18 -07:00
Benoit Steiner
36fffe48f7 Misc api improvements and cleanups 2014-08-23 14:35:41 -07:00
Benoit Steiner
fb5c1e9097 Optimized and cleaned up the tensor morphing code 2014-08-23 13:18:30 -07:00
Georg Drenkhahn
0ba490cf80 Fixed CMakeLists.txt files to prevent CMake 3.0.0 warnings about deprecated LOCATION target property.
Small whitespace cleanup in CMakelLists.txt.
2014-08-22 12:13:07 +02:00
Benoit Steiner
3d298da269 Added support for broadcasting 2014-08-20 17:00:50 -07:00
Benoit Steiner
9ac3c821ea Improved the speed of convolutions when running on cuda devices 2014-08-19 16:57:10 -07:00
Benoit Steiner
33c702c79f Added support for fast integer divisions by a constant
Sped up tensor slicing by a factor of 3 by using these fast integer divisions.
2014-08-14 22:13:21 -07:00
Benoit Steiner
756292f8aa Fixed compilation errors 2014-08-14 00:32:59 -07:00
Benoit Steiner
8c8db49331 Added a few regression tests 2014-08-14 00:25:22 -07:00
Benoit Steiner
eeb43f9e2b Added support for padding, stridding, and shuffling 2014-08-14 00:22:47 -07:00
Benoit Steiner
16047c8d4a Pulled in the latest changes from the Eigen trunk 2014-08-13 22:25:29 -07:00
Benoit Steiner
916ef48846 Added ability to get the nth element from an abstract array type. 2014-08-13 08:44:47 -07:00
Benoit Steiner
f1d8c13dbc Fixed misc typos. 2014-08-13 08:40:26 -07:00
Benoit Steiner
9faad2932f Added missing apis. 2014-08-13 08:36:33 -07:00
Benoit Steiner
f8fad09301 Updated the convolution and contraction evaluators to follow the new EvalSubExprsIfNeeded apu. 2014-08-13 08:33:18 -07:00
Benoit Steiner
72e7529708 Fixed a typo. 2014-08-13 08:29:40 -07:00
Benoit Steiner
1aa2bf8274 Support for in place evaluation of expressions containing slicing and reshaping operations 2014-08-13 08:27:58 -07:00
Benoit Steiner
b1892ab14d Added suppor for in place evaluation to simple tensor expressions.
Use mempy to speedup tensor copies whenever possible.
2014-08-13 08:26:44 -07:00
Benoit Steiner
439feca139 Reworked the TensorExecutor code to support in place evaluation. 2014-08-13 08:22:05 -07:00
Jitse Niesen
abb33258ce Doc: difference between array and matrix cosine etc (bug #830) 2014-09-06 14:59:44 +01:00
Gael Guennebaud
60314beb38 Update reference value for testNistLanczos1 test 2014-09-02 17:35:11 +02:00
Gael Guennebaud
280661e67d Remove LM::sqrt_() member function in favor of a shortcut for sqrt(epsilon()) 2014-09-02 17:29:06 +02:00
Gael Guennebaud
ff9bfc45f7 relax some LM unit tests 2014-09-02 17:10:17 +02:00
Kolja Brix
953ec08089 Correct GMRES:
* Fix error in calculation of residual at restart.
* Use relative residual as stopping criterion.
* Improve documentation.
2014-08-02 18:39:15 +02:00
Benoit Steiner
647622281e The tensor assignment code now resizes the destination tensor as needed. 2014-07-31 17:39:04 -07:00
Gael Guennebaud
d79516660c Make loadMarket use the sparse-matrix index type, thus enabling loading huge matrices. 2014-07-31 16:43:19 +02:00
Benoit Steiner
2116e261fb Made sure that the data stored in fixed sized tensor is aligned. 2014-07-25 09:47:59 -07:00
Jitse Niesen
5f3d542b8a Fix typo in MatrixExponential noticed by Markos. 2014-07-25 13:34:03 +01:00
Benoit Steiner
1f371e78e6 Added a few tests to validate the behavior of the assignment operator. 2014-07-22 10:32:40 -07:00
Benoit Steiner
f7bb7ee3f3 Fixed the assignment operator of the Tensor and TensorMap classes. 2014-07-22 10:31:21 -07:00
Gael Guennebaud
36e6c9064f bug #770: fix out of bounds access 2014-07-18 14:19:18 +02:00
Gael Guennebaud
5e72151ca5 bug #842: warn user about MPFR++ being under the GPL 2014-07-17 12:06:20 +02:00
Gael Guennebaud
2cd38a6634 merge 2014-07-17 12:01:55 +02:00
Gael Guennebaud
84ad8ce7e3 Fix bug #770: workaround thread safety in mpreal 2014-07-17 12:00:56 +02:00
Gael Guennebaud
40b74411e4 bug #842: update mpreal copy (fix compilation with clang) 2014-07-17 11:59:51 +02:00
Christoph Hertzberg
14c8793a70 Remove unnecessary <bench/BenchTimer.h>include 2014-07-17 11:14:14 +02:00
Gael Guennebaud
424c3ad266 bug #842: fix specialized product for mpreal 2014-07-17 09:41:33 +02:00
Hauke Heibel
5f1eedd655 Merged in complexzeros/eigen (pull request PR-69)
Added Spline interpolation with derivatives.
2014-07-11 12:03:10 +02:00
Benoit Steiner
40bb98e76a Added primitives to compare tensor dimensions 2014-07-10 11:29:51 -07:00
Benoit Steiner
9b7a6f0122 Added tests for tensor slicing 2014-07-10 11:27:27 -07:00
Benoit Steiner
ffd3654f67 Vectorized the evaluation of expressions involving tensor slices. 2014-07-10 11:09:46 -07:00
Jeff
b1169ce40c Fixed index that would cause crash with two point, two derivative interpolation. Added static_cast. 2014-07-10 12:03:42 -06:00
Kolja Brix
e955725ff1 Fix GMRES: Initialize essential Householder vector with correct dimension. Add check if initial guess is already a sufficient approximation. 2014-07-10 08:20:55 +02:00
Benoit Steiner
25b2f6624d Improved the speed of slicing operations. 2014-07-09 12:48:34 -07:00
Benoit Steiner
ea0906dfd8 Improved evaluation of tensor expressions when used as rvalues 2014-07-08 16:43:28 -07:00
Benoit Steiner
cc1bacea5b Improved the efficiency of the tensor evaluation code on thread pools and gpus. 2014-07-08 16:39:28 -07:00
Benoit Steiner
c285fda7f4 Extended the functionality of the TensorDeviceType classes 2014-07-08 16:30:48 -07:00
Gael Guennebaud
904509fbb6 Move using std::abs from Eigen's namespace to function scope. 2014-07-08 10:28:09 +02:00
Benoit Steiner
7d53633e05 Added support for tensor slicing 2014-07-07 14:10:36 -07:00
Benoit Steiner
bc072c5cba Added support for tensor slicing 2014-07-07 14:08:45 -07:00
Benoit Steiner
47981c5925 Added support for tensor slicing 2014-07-07 14:07:57 -07:00
Chen-Pang He
85777fc131 Mark internal namespace as \internal 2014-07-06 13:45:54 +08:00
Christoph Hertzberg
ef4a86d6b8 Fix trivial warnings in MPRealSupport 2014-07-18 16:39:58 +02:00
Gael Guennebaud
ac1bb3e5b3 bug #770: fix out of bounds access 2014-07-18 14:22:33 +02:00
Chen-Pang He
4860da2de1 Percent "Eigen" in dox to prevent linking if not referring to the Eigen namespace 2014-07-05 23:01:27 +08:00
Chen-Pang He
7a915f6846 Move Doxygen-only stuff to *.dox 2014-07-05 22:41:58 +08:00
Chen-Pang He
1a817d3b70 Document internal namespace 2014-07-05 21:50:05 +08:00
Chen-Pang He
8ee38d2db6 Fix dox for namespaces 2014-07-05 21:48:48 +08:00
Christoph Hertzberg
324e7e8fc9 Removed the deprecated EIGEN2_SUPPORT, as previously announced. A compilation error is raised, if this compile-switch is defined. The documentation references to the corresponding pages from Eigen3.2 now. Also, the Eigen2 testsuite has been removed. 2014-07-01 16:58:11 +02:00
Jeff
08c615f1e4 IndexArray is now a typename.
Changed interpolate with derivatives test to use VERIFY_IS_APPROX.
2014-06-25 19:02:57 -06:00
Jeff
f9496d341f Merged. 2014-06-23 20:24:31 -06:00
Jeff
e745a450de Removed tabs and fixed indentation. 2014-06-23 20:18:16 -06:00
Jeff
e86adc87e9 Fixed type mixing issues. 2014-06-23 19:52:42 -06:00
Jeff
b59f045c07 Using LU decomposition with complete pivoting for better accuracy. 2014-06-23 19:04:52 -06:00
Jeff
957c2c291b Changed uint to unsigned int. 2014-06-23 08:34:11 -06:00
Jeff
5dbbe6b400 Added Spline interpolation with derivatives. 2014-06-20 22:12:45 -06:00
Benoit Steiner
774c3c1e0a Created additional unit tests for the tensor code and improved existing ones. 2014-06-13 10:20:28 -07:00
Benoit Steiner
f80c8e17eb Silenced a compilation warning 2014-06-13 10:12:12 -07:00
Benoit Steiner
38ab7e6ed0 Reworked the expression evaluation mechanism in order to make it possible to efficiently compute convolutions and contractions in the future:
* The scheduling of computation is moved out the the assignment code and into a new TensorExecutor class
 * The assignment itself is now a regular node on the expression tree
 * The expression evaluators start by recursively evaluating all their subexpressions if needed
2014-06-13 09:56:51 -07:00
Benoit Steiner
aa664eabb9 Fixed a few compilation errors. 2014-06-10 10:31:29 -07:00
Benoit Steiner
4304c73542 Pulled latest updates from the Eigen main trunk. 2014-06-10 10:23:32 -07:00
Benoit Steiner
925fb6b937 TensorEval are now typed on the device: this will make it possible to use partial template specialization to optimize the strategy of each evaluator for each device type.
Started work on partial evaluations.
2014-06-10 09:14:44 -07:00
Benoit Steiner
a77458a8ff Fixes compilation errors triggered when compiling the tensor contraction code with cxx11 enabled. 2014-06-09 10:06:57 -07:00
Benoit Steiner
a669052f12 Improved support for rvalues in tensor expressions. 2014-06-09 09:45:30 -07:00
Benoit Steiner
36a2b2e9dc Prevent the generation of unlaunchable cuda kernels when compiling in debug mode. 2014-06-09 09:43:51 -07:00
Benoit Steiner
2859a31ac8 Fixed compilation error 2014-06-09 09:42:34 -07:00
Benoit Steiner
fe102248ac Fixed the threadpool test 2014-06-09 09:19:21 -07:00
Benoit Steiner
79085e08e9 Fixed a typo 2014-06-06 20:16:13 -07:00
Benoit Steiner
a961d72e65 Added support for convolution and reshaping of tensors. 2014-06-06 16:25:16 -07:00
Benoit Steiner
8998f4099e Created additional tests for the tensor code. 2014-06-05 10:49:34 -07:00
Christian Seiler
96cb58fa3b unsupported/TensorSymmetry: factor out completely from Tensor module
Remove the symCoeff() method of the the Tensor module and move the
functionality into a new operator() of the symmetry classes. This makes
the Tensor module now completely self-contained without symmetry
support (even though previously it was only a forward declaration and a
otherwise harmless trivial templated method) and also removes the
inconsistency with the rest of eigen w.r.t. the method's naming scheme.
2014-06-04 20:44:22 +02:00
Christian Seiler
ea99433523 unsupported/TensorSymmetry: make symgroup construction autodetect number of indices
When constructing a symmetry group, make the code automatically detect
the number of indices required from the indices of the group's
generators. Also, allow the symmetry group to be applied to lists of
indices that are larger than the number of indices of the symmetry
group.

Before:
SGroup<4, Symmetry<0, 1>, Symmetry<2,3>> group;
group.apply<SomeOp, int>(std::array<int,4>{{0, 1, 2, 3}}, 0);

After:
SGroup<Symmetry<0, 1>, Symmetry<2,3>> group;
group.apply<SomeOp, int>(std::array<int,4>{{0, 1, 2, 3}}, 0);
group.apply<SomeOp, int>(std::array<int,5>{{0, 1, 2, 3, 4}}, 0);

This should make the symmetry group easier to use - especially if one
wants to reuse the same symmetry group for different tensors of maybe
different rank.

static/runtime asserts remain for the case where the length of the
index list to which a symmetry group is to be applied is too small.
2014-06-04 20:27:42 +02:00
Christian Seiler
cee62018fc unsupported/CXX11/Core: allow gen_numeric_list to have a starting point
Add a template parameter to gen_numeric_list that acts as a starting
point for the list, i.e. gen_numeric_list<int, 5, 4> will generate a
numeric_list<int, 4, 5, 6, 7, 8>.
2014-06-04 19:54:22 +02:00
Christian Seiler
58cfac9a12 unsupported/ C++11 workarounds: don't use hack for libc++ if not required
libc++ from 3.4 onwards supports constexpr std::get, but only if
compiled with -std=c++1y. Change the detection so that libc++'s
internals are only used if either -std=c++1y is not specified or the
library is too old, making the whole hack a bit more future-proof.
2014-06-04 18:47:42 +02:00
Christian Seiler
45515779d3 Fix compilation for CXX11/Tensor module if unsupported is not in include path 2014-06-04 18:31:02 +02:00
Benoit Steiner
6fa6cdd2b9 Added support for tensor contractions
Updated expression evaluation mechanism to also compute the size of the tensor result
Misc fixes and improvements.
2014-06-04 09:21:48 -07:00
Benoit Steiner
736267cf6b Added support for additional tensor operations:
* comparison (<, <=, ==, !=, ...)
  * selection
  * nullary ops such as random or constant generation
  * misc unary ops such as log(), exp(), or a user defined unaryExpr()
Cleaned up the code a little.
2014-05-22 16:22:35 -07:00
Benoit Steiner
7402fea0a8 Vectorized the evaluation of tensor expression (using SSE, AVX, NEON, ...)
Added the ability to parallelize the evaluation of a tensor expression over multiple cpu cores.
Added the ability to offload the evaluation of a tensor expression to a GPU.
2014-05-16 15:08:05 -07:00
Benjamin Chrétien
c55c5763fe PolynomialSolver: fix typo. 2014-05-19 19:24:02 +02:00
Benjamin Chrétien
eda79321be PolynomialSolver: fix bugs related to linear polynomials. 2014-05-19 19:08:51 +02:00
Benjamin Chrétien
df92649379 PolynomialSolver: add missing constructors. 2014-05-19 18:40:29 +02:00
Benjamin Chrétien
0f94607947 PolynomialSolver: test template constructor in test suite. 2014-05-19 18:34:10 +02:00