Gael Guennebaud
ce57dbd937
Let unpacket_traits<> exposes the required alignment and make use of it everywhere
2015-08-07 10:44:01 +02:00
Gael Guennebaud
2afdef6a54
Generalize first_aligned to take the requested alignment as a template parameter, and add a first_default_aligned variante calling first_aligned with the requirement of the largest packet for the given scalar type.
2015-08-06 17:52:01 +02:00
Gael Guennebaud
1f5024332e
First part of a big refactoring of alignment control to enable the handling of arbitrarily aligned buffers. It includes:
...
- AlignedBit flag is deprecated. Alignment is now specified by the evaluator through the 'Alignment' enum, e.g., evaluator<Xpr>::Alignment. Its value is in Bytes.
- Add several enums to specify alignment: Aligned8, Aligned16, Aligned32, Aligned64, Aligned128. AlignedMax corresponds to EIGEN_MAX_ALIGN_BYTES. Such enums are used to define the above Alignment value, and as the 'Options' template parameter of Map<> and Ref<>.
- The Aligned enum is now deprecated. It is now an alias for Aligned16.
- Currently, traits<Matrix<>>, traits<Array<>>, traits<Ref<>>, traits<Map<>>, and traits<Block<>> also expose the Alignment enum.
2015-08-06 15:31:07 +02:00
Gael Guennebaud
65186ef18d
Fix logic in compute_default_alignment, extend it to Dynamic size, and move it to XprHelper.h file.
2015-08-06 14:07:59 +02:00
Gael Guennebaud
becd89df29
Enable runtime stack alignment in gemm_blocking_space.
2015-08-06 14:00:26 +02:00
Gael Guennebaud
d4f5efc51a
Add a EIGEN_DEFAULT_ALIGN_BYTES macro defining default alignment for alloca and aligned_malloc.
...
It is defined as the max of EIGEN_IDEAL_MAX_ALIGN_BYTES and EIGEN_MAX_ALIGN_BYTES
2015-08-06 13:56:53 +02:00
Gael Guennebaud
f7d5b9323d
typo
2015-07-29 11:08:49 +02:00
Gael Guennebaud
175ed636ea
bug #973 : update macro-level control of alignement by introducing user-controllable EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES macros. This changeset also removes EIGEN_ALIGN (replaced by EIGEN_MAX_ALIGN_BYTES>0), EIGEN_ALIGN_STATICALLY (replaced by EIGEN_MAX_STATIC_ALIGN_BYTES>0), EIGEN_USER_ALIGN*, EIGEN_ALIGN_DEFAULT (replaced by EIGEN_ALIGN_MAX).
2015-07-29 10:22:25 +02:00
Gael Guennebaud
76874b128e
bug #1047 : document the structure layout of class Matrix
2015-07-29 10:21:28 +02:00
Jonas Adler
815fa0dbf6
Fixed some compiler bugs in NVCC, now compiles with CUDA.
...
(chtz: Manually joined sevaral commits to keep the history clean)
2015-07-22 12:29:18 +02:00
Benoit Steiner
d259b719d1
Made sure that the use const expressions are not enabled when compiling with nvcc even when gcc 4.9 is used as the host compiler.
2015-07-21 17:35:58 -07:00
Gael Guennebaud
6544b49e59
Generalize pow(x,e) such that x and e can be a different expression type or a scalar for either x or e. Add x.pow(e) with e an array expression.
2015-07-20 13:57:55 +02:00
Gael Guennebaud
c11971de37
Fix compilation of isnan(complex)
2015-07-20 12:56:01 +02:00
Gael Guennebaud
88e352adac
Add support for replicate in CUDA
2015-07-20 10:53:03 +02:00
Benoit Steiner
513e357b48
Added support for prefetching on cuda devices
2015-07-17 15:35:16 -07:00
Benoit Steiner
979b73cebf
Fixed a typo in Macro.h
2015-07-16 14:17:50 -07:00
Gael Guennebaud
f5aa640862
Clean some previous changes and more cuda fixes
2015-07-15 10:57:55 +02:00
Nicolas Mellado
7cecd39a84
Merged eigen/eigen into default
2015-07-15 10:15:54 +02:00
Nicolas Mellado
592ee2a4b4
Add missing EIGEN_DEVICE_FUNC
2015-07-15 10:14:52 +02:00
Christoph Hertzberg
ea87561564
bug #1039 : Redefining EIGEN_DEFAULT_DENSE_INDEX_TYPE may lead to errors
2015-07-13 16:08:25 +02:00
Nicolas Mellado
dbb3e2cf8a
Cleaning
2015-07-11 18:15:31 +00:00
Nicolas Mellado
0d09845562
Revert files to remove EIGEN_USING_NUMEXT_MATH
2015-07-11 20:11:36 +02:00
Nicolas Mellado
20b96025fd
Replace double constants by Scalar constants
2015-07-11 20:02:30 +02:00
Nicolas Mellado
1dd6a329e8
Cuda compatibility: remove explicit call to std math functions
2015-07-11 19:40:15 +02:00
Benoit Steiner
6de6fa9483
Use NumTraits<T>::RequireInitialization instead of internal::is_arithmetic<T>::value to check whether it's possible to bypass the type constructor in the tensor code.
2015-07-07 15:23:56 -07:00
Benoit Steiner
7b7df7b6b8
Updated internal::is_arithmetic::value to be true for complex numbers
2015-07-07 12:57:35 -07:00
Nicolas Mellado
5359e5cdb2
Protect against compilation errors with nvcc and numext/complex.
...
Disable functions explicitely involving std::complex when compiling with nvcc.
Improve code compatilibity using the new macro EIGEN_USING_NUMEXT_MATH (same spirit than EIGEN_USING_STD_MATH but for numext functions)
2015-07-06 20:55:01 +02:00
Emilie Guy
ea7113dd0c
typo correction in mathFunction
2015-07-06 14:31:08 +02:00
Benoit Steiner
44eedd8915
Marked the cast functions as EIGEN_DEVICE_FUNC to ensure that we can run casting on GPUs
2015-06-30 15:48:55 -07:00
Gael Guennebaud
98ff17eb9e
Add special path for matrix<complex>/real.
...
This also fixes underflow issues when scaling complex matrices through complex/complex operator.
2015-06-26 16:08:15 +02:00
Gael Guennebaud
33e699c9fe
Remove redundant accessors in Reverse
2015-06-25 14:14:59 +02:00
Gael Guennebaud
b4ab72678c
bug #1000 : MSVC 2013 does need the operator= workaround
2015-06-25 09:45:22 +02:00
Gael Guennebaud
36643eec0c
Add a call_assignment_no_alias_no_transpose shortcut
2015-06-24 17:50:43 +02:00
Gael Guennebaud
71523a2e25
Fix a warning with icc
2015-06-23 14:20:20 +02:00
Gael Guennebaud
d9778f3391
Enable VML's pow wrapper on windows (the previous wrapper used the Fortran interface)
2015-06-23 14:04:50 +02:00
Gael Guennebaud
5f9630d7f9
bug #923 : update support for Intel's VML wrt new evaluation mechanisms
2015-06-23 14:03:25 +02:00
Gael Guennebaud
793e4c6d77
bug #923 : fix EIGEN_USE_BLAS mode
2015-06-23 11:13:24 +02:00
Gael Guennebaud
307c4fc292
Workaround missalignment produced by first_aligned for PacketSize==1 and size==1
2015-06-23 10:10:17 +02:00
Gael Guennebaud
bb3a9b4941
Use Ref<> to bypass forceAlignmentIf
2015-06-22 17:48:28 +02:00
Gael Guennebaud
0848ba0a6e
Fix return nullary return types: it must be based on the PlainObject type instead of the expression type.
2015-06-22 10:52:08 +02:00
Gael Guennebaud
6b33b29f00
Get rid of must_nest_by_value
2015-06-19 18:12:40 +02:00
Gael Guennebaud
846b227bb7
Get rid of class internal::nested<> (still have to updated Tensor module)
2015-06-19 17:56:39 +02:00
Gael Guennebaud
a5a7b68b76
Fix ambiguous instanciation using clean class-level SFINAE in product_evaluator
2015-06-19 17:25:13 +02:00
Gael Guennebaud
6fc5438205
Remove a few deprecated internal expressions
2015-06-19 17:06:12 +02:00
Gael Guennebaud
5c84dd5665
Fix permutation/transposiitons products wrt nested_eval
2015-06-19 16:37:04 +02:00
Gael Guennebaud
0c8b0e007b
Introduce a AliasFreeProduct option for Permutations and Transpositions
2015-06-19 15:38:19 +02:00
Gael Guennebaud
3f6aa4cd5d
Remove useless specializations of evaluator_traits
2015-06-19 14:18:29 +02:00
Gael Guennebaud
4a8888dfbc
Improbe compatibility of Transpositions and evaluators
2015-06-19 14:10:44 +02:00
Gael Guennebaud
3af4c6c1c9
Make Transpositions use evaluators
2015-06-19 11:50:24 +02:00
Gael Guennebaud
fad36cc814
Clean implementation of permutation * matrix products.
2015-06-19 10:51:57 +02:00