Benoit Steiner
74e558cfa8
Pulled latest updates from trunk
2015-04-01 23:24:11 -07:00
Benoit Steiner
03a0df2010
Fixed some compilation warnings triggered by pre-cxx11 comoilers
2015-04-01 22:51:33 -07:00
Benoit Steiner
b8b7807269
Fixed some compilation warning triggered by the cxx11 emulation code
2015-04-01 21:48:18 -07:00
Benoit Steiner
383b6dfafe
Fixed 2 typos
2015-04-01 16:44:36 -07:00
Benoit Steiner
68d4afe985
Added support for convolution of tensors laid out in RowMajor mode
2015-03-31 09:07:09 -07:00
Benoit Steiner
f873686602
Added documentation for the convolution operation
2015-03-31 08:27:23 -07:00
Benoit Steiner
35722fa022
Made the index type a template parameter of the tensor class instead of encoding it in the options.
2015-03-30 14:55:54 -07:00
Benoit Steiner
71950f02e5
Deleted unnecessary semicolons
2015-03-30 14:49:10 -07:00
Benoit Steiner
4df8b5a75e
Avoid making an unecessary copy of the tensor expression when evaluating it on a GPU device
2015-03-25 14:36:07 -07:00
Benoit Steiner
b3343bfdae
Fixed the vectorized implementation of the Tensor select() method
2015-03-25 13:25:53 -07:00
Benoit Steiner
ccf290a65c
Cleaned up the TensorDevice code a little bit.
2015-03-25 12:37:38 -07:00
Benoit Steiner
d3f7915aeb
Pulled latest update from the eigen main codebase
2015-03-24 13:12:14 -07:00
Benoit Steiner
a6a628ca6b
Added the -= operator to the device classes
2015-03-19 23:22:19 -07:00
Benoit Steiner
e134226a03
Fixed a bug in the handling of packets by the MeanReducer
2015-03-19 23:11:42 -07:00
Benoit Steiner
cc0f89eb3b
Changed the way lvalue operations are declared in TensorBase: this fixes constness isses that prevented some expressions mixing lvalues and rvalues from compiling.
2015-03-17 09:57:20 -07:00
Benoit Steiner
f218c0181d
Fixes the Lvalue computation by actually setting the LvalueBit properly when instantiating tensors of const T. Added a test to check the fix.
2015-03-16 13:05:00 -07:00
Benoit Steiner
b0f2b6f297
Updated the tensor type casting code as follow: in the case where TgtRatio < SrcRatio, disable the vectorization of the source expression unless is has direct-access.
2015-03-02 10:11:40 -08:00
Benoit Steiner
d9cb604a5d
Disabled the use of aligned memory loads when converting a tensor from float to doubles since alignment can't always be guaranteed.
2015-03-02 09:41:36 -08:00
Benoit Steiner
ae73859a0a
Fixed incorrect assertion
2015-02-28 08:02:02 -08:00
Benoit Steiner
bb483313f6
Fixed another batch of compilation warnings
2015-02-28 02:32:46 -08:00
Benoit Steiner
1a7b84dc75
Silenced a few compilation warnings
2015-02-28 01:45:15 -08:00
Benoit Steiner
cf1eea11de
Fixed compilation warnings
2015-02-27 23:52:02 -08:00
Benoit Steiner
4250a0cab0
Fixed compilation warnings
2015-02-27 21:59:10 -08:00
Benoit Steiner
306fceccbe
Pulled latest updates from trunk
2015-02-27 13:05:26 -08:00
Benoit Steiner
2386fc8528
Added support for 32bit index on a per tensor/tensor expression. This enables us to use 32bit indices to evaluate expressions on GPU faster while keeping the ability to use 64 bit indices to manipulate large tensors on CPU in the same binary.
2015-02-27 12:57:13 -08:00
Benoit Steiner
90f4e90f1d
Fixed off-by-one error that prevented the evaluation of small tensor expressions from being vectorized
2015-02-27 09:22:37 -08:00
Benoit Steiner
573b377110
Added support for vectorized type casting of tensors
2015-02-27 08:46:04 -08:00
Benoit Steiner
f074bb4b5f
Fixed another compilation problem with TensorIntDiv.h
2015-02-26 11:14:23 -08:00
Benoit Steiner
57154fdb32
Can now use the tensor 'reverse' operation as a lvalue
2015-02-26 11:13:42 -08:00
Benoit Steiner
f41b1f1666
Added support for fast reciprocal square root computation.
2015-02-26 09:42:41 -08:00
Benoit Steiner
2fffe69b1b
Added missing copy constructor
2015-02-26 09:27:53 -08:00
Benoit Steiner
bffb6bdf45
Made TensorIntDiv.h compile with MSVC
2015-02-25 23:54:43 -08:00
Benoit Steiner
27f3fb2bcc
Fixed another clang warning
2015-02-25 22:54:20 -08:00
Benoit Steiner
f8fbb3f9a6
Fixed several compilation warnings reported by clang
2015-02-25 22:22:37 -08:00
Benoit Steiner
8e817b65d0
Silenced a few more compilation warnings generated by nvcc
2015-02-25 17:46:20 -08:00
Benoit Steiner
1cfd51908c
Added support for RowMajor layout to the tensor patch extraction cofde.
2015-02-25 13:29:12 -08:00
Benoit Steiner
8afce86e64
Added support for RowMajor layout to the image patch extraction code
...
Speeded up the unsupported_cxx11_tensor_image_patch test and reduced its memory footprint
2015-02-25 09:48:54 -08:00
Benoit Steiner
110fb90250
Improved the documentations
2015-02-19 11:59:04 -08:00
Abhijit Kundu
ef09ce4552
Fix for TensorIO for Fixed sized Tensors.
...
The following code snippet was failing to compile:
TensorFixedSize<double, Sizes<4, 3> > t_4x3;
cout << 4x3;
2015-02-28 21:30:31 -05:00
Abhijit Kundu
3a4b6827b4
Merged eigen/eigen into default
2015-02-28 20:15:28 -05:00
Abhijit Kundu
4084dce038
Added CMake support for Tensor module. CMake now installs CXX11 Tensor module like the rest of the unsupported modules
2015-02-26 16:50:09 -05:00
Benoit Steiner
f77054f43c
Silenced compilation warning
2015-02-17 10:02:04 -08:00
Benoit Steiner
1d3b64d32b
Added support for tensor concatenation as lvalue
2015-02-17 09:57:41 -08:00
Benoit Steiner
00f048d44f
Added support for tensor concatenation as lvalue
2015-02-17 09:54:40 -08:00
Benoit Steiner
6620aaa4b3
Silenced a few compilation warnings generated by nvcc
2015-02-10 14:34:42 -08:00
Benoit Steiner
f669f5656a
Marked a few functions as EIGEN_DEVICE_FUNC to enable the use of tensors in cuda kernels.
2015-02-10 14:29:47 -08:00
Benoit Steiner
fefec723aa
Fixed compilation error triggered when trying to vectorize a non vectorizable cuda kernel.
2015-02-10 13:16:22 -08:00
Benoit Steiner
780b2422e2
Silenced the last batch of compilation warnings triggered by gcc 4.8
2015-02-10 12:43:55 -08:00
Benoit Steiner
c21e45fbc5
Fixed a few more compilation warnings
2015-02-10 12:36:26 -08:00
Benoit Steiner
057cfd2f02
Silenced more compilation warnings
2015-02-10 12:25:02 -08:00
Benoit Steiner
114e863f08
Silcenced a few compilation warnings
2015-02-10 12:20:24 -08:00
Benoit Steiner
410895a7e4
Silenced several compilation warnings
2015-02-10 12:13:19 -08:00
Benoit Steiner
91fe3a3004
Removed a debug printf statement.
2015-02-10 10:29:28 -08:00
Benoit Steiner
3ba6647398
Fixed the cxx11_meta test
2015-02-06 06:00:59 -08:00
Benoit Steiner
c739102ef9
Pulled the latest changes from the trunk
2015-02-06 05:25:03 -08:00
Benoit Steiner
dcb2a8b184
Added the EIGEN_HAS_CONSTEXPR define
...
Gate the tensor index list code based on the value of EIGEN_HAS_CONSTEXPR
2015-02-06 02:51:59 -08:00
Benoit Steiner
f64045a060
Silenced a few more compilation warnings
2015-01-30 19:52:01 -08:00
Benoit Steiner
590f4b0aa3
Silenced some compilation warnings
2015-01-30 19:46:30 -08:00
Benoit Steiner
e896c0ade7
Marked the contraction operation as read only, since its result can't be assigned.
2015-01-29 10:29:47 -08:00
Benoit Steiner
5a6ea4edf6
Added more tests to cover tensor reductions
2015-01-28 10:02:47 -08:00
Benoit Steiner
9dfdbd7e56
mproved the performance of tensor reductions that preserve the inner most dimension(s).
2015-01-27 14:15:31 -08:00
Benoit Steiner
14f537c296
gcc doesn't consider that
...
template<typename OtherDerived> TensorStridingOp& operator = (const OtherDerived& other)
provides a valid assignment operator for the striding operation, and therefore refuses to compile code like:
result.stride(foo) = source.stride(bar);
Added the explicit
TensorStridingOp& operator = (const TensorStridingOp& other)
as a workaround to get the code to compile, and did the same in all the operations that can be used as lvalues.
2015-01-16 09:09:23 -08:00
Benoit Steiner
641e824c56
Added cube() operation
2015-01-15 11:11:48 -08:00
Benoit Steiner
54e3633b43
Updated the list of include files
2015-01-14 15:43:38 -08:00
Benoit Steiner
f697df7237
Improved support for RowMajor tensors
...
Misc fixes and API cleanups.
2015-01-14 15:38:48 -08:00
Benoit Steiner
6559d09c60
Ensured that each thread has it's own copy of the TensorEvaluator: this avoid race conditions when the evaluator calls a non thread safe functor, eg when generating random numbers.
2015-01-14 15:34:50 -08:00
Benoit Steiner
8a382aa119
Improved the resizing of tensors
2015-01-14 15:33:11 -08:00
Benoit Steiner
703c526355
Misc improvements
2015-01-14 15:31:52 -08:00
Benoit Steiner
4cdf3fe427
Misc fixes
2015-01-14 15:30:47 -08:00
Benoit Steiner
0feff6e987
Expanded the functionality of index lists
2015-01-14 15:29:48 -08:00
Benoit Steiner
1ac8600126
Fixed the return type of coefficient wise operations. For example, the abs function returns a floating point value when called on a complex input.
2015-01-14 12:47:46 -08:00
Benoit Steiner
378bdfb7f0
Added missing apis to the TensorMap class
2015-01-14 12:45:20 -08:00
Benoit Steiner
0526dc1bb4
Added missing apis to the tensor class
2015-01-14 12:44:08 -08:00
Benoit Steiner
1a36590e84
Fixed the printing of RowMajor tensors
2015-01-14 12:43:20 -08:00
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
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
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
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
Benoit Steiner
debc97821c
Added support for tensor references
2014-10-28 23:10:13 -07: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
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
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
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
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
8b2afe33a1
Fixes for the forced evaluation of tensor expressions
...
More tests
2014-10-02 10:39:36 -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
Benoit Steiner
efdff15749
Fixed a typo in the contraction code
2014-09-06 13:28:24 -07:00
Benoit Steiner
74db22455a
Misc fixes.
2014-09-05 07:47:43 -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
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
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
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
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
Benoit Steiner
647622281e
The tensor assignment code now resizes the destination tensor as needed.
2014-07-31 17:39:04 -07:00
Benoit Steiner
2116e261fb
Made sure that the data stored in fixed sized tensor is aligned.
2014-07-25 09:47:59 -07:00
Benoit Steiner
f7bb7ee3f3
Fixed the assignment operator of the Tensor and TensorMap classes.
2014-07-22 10:31:21 -07:00
Benoit Steiner
40bb98e76a
Added primitives to compare tensor dimensions
2014-07-10 11:29:51 -07:00
Benoit Steiner
ffd3654f67
Vectorized the evaluation of expressions involving tensor slices.
2014-07-10 11:09:46 -07: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
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
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
a961d72e65
Added support for convolution and reshaping of tensors.
2014-06-06 16:25:16 -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
Benoit Steiner
0320f7e3a7
Added support for fixed sized tensors.
...
Improved support for tensor expressions.
2014-05-06 11:18:37 -07:00
Benoit Steiner
c0f2cb016e
Extended support for Tensors:
...
* Added ability to map a region of the memory to a tensor
* Added basic support for unary and binary coefficient wise expressions, such as addition or square root
* Provided an emulation layer to make it possible to compile the code with compilers (such as nvcc) that don't support cxx11.
2014-04-28 10:32:27 -07:00
Benoit Steiner
1afd50e0f3
Fixed a typo in CXX11Meta.h
2014-04-14 14:26:30 -07:00
Christian Seiler
f6bac196d5
C++11/Tensor: Fix copyright headers
2013-11-16 00:03:23 +01:00
Christian Seiler
03a956925a
CXX11/TensorSymmetry: add symmetry support for Tensor class
...
Add a symCoeff() method to the Tensor class template that allows the
user of the class to set multiple elements of a tensor at once if they
are connected by a symmetry operation with respect to the tensor's
indices (symmetry/antisymmetry/hermiticity/antihermiticity under
echange of two indices and combination thereof for different pairs of
indices).
A compile-time resolution of the required symmetry groups via meta
templates is also implemented. For small enough groups this is used to
unroll the loop that goes through all the elements of the Tensor that
are connected by this group. For larger groups or groups where the
symmetries are defined at run time, a standard run-time implementation
of the same algorithm is provided.
For example, the following code completely initializes all elements of
the totally antisymmetric tensor in three dimensions ('epsilon
tensor'):
SGroup<3, AntiSymmetry<0,1>, AntiSymmetry<1,2>> sym;
Eigen::Tensor<double, 3> epsilon(3,3,3);
epsilon.setZero();
epsilon.symCoeff(sym, 0, 1, 2) = 1;
2013-11-14 23:35:11 +01:00
Christian Seiler
f97b3cd024
CXX11/Tensor: add simple initial tensor implementation
...
This commit adds an initial implementation of a class template Tensor
that allows for the storage of objects with more than two indices.
Currently, only storing data and setting the object to zero for POD
data types are implemented.
2013-11-14 22:52:37 +01:00
Christian Seiler
5e28c41549
C++11: add template metaprogramming helpers
...
Create a new directory CXX11 under unsupported/Eigen that contains code
that requires C++11. In that directory, add a few generic templates
useful for any module relying on C++11. These templates may be included
with #include <[unsupported/]Eigen/CXX11/Core>. At the moment, this
will only provide templates in the Eigen::internal namespace.
2013-11-14 22:27:06 +01:00