aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/products/GeneralMatrixVector.h
Commit message (Collapse)AuthorAge
* GEMV: remove double declaration of constant.Gravatar Gustavo Lima Chaves2019-05-23
| | | | | | | | | | | | | That was hurting users with compilers that would object to proceed with that: """ ./Eigen/src/Core/products/GeneralMatrixVector.h:356:10: error: declaration shadows a static data member of 'general_matrix_vector_product<type-parameter-0-0, type-parameter-0-1, type-parameter-0-2, 1, ConjugateLhs, type-parameter-0-4, type-parameter-0-5, ConjugateRhs, Version>' [-Werror,-Wshadow] LhsPacketSize = Traits::LhsPacketSize, ^ ./Eigen/src/Core/products/GeneralMatrixVector.h:307:22: note: previous declaration is here static const Index LhsPacketSize = Traits::LhsPacketSize; """
* Speed up GEMV on AVX-512 builds, just as done for GEBP previously.Gravatar Gustavo Lima Chaves2019-04-26
| | | | | | We take advantage of smaller SIMD registers as well, in that case. Gains up to 3x for select input sizes.
* Updates corresponding to the latest round of PR feedbackGravatar Deven Desai2018-07-11
| | | | | | | | | | | | | | The major changes are 1. Moving CUDA/PacketMath.h to GPU/PacketMath.h 2. Moving CUDA/MathFunctions.h to GPU/MathFunction.h 3. Moving CUDA/CudaSpecialFunctions.h to GPU/GpuSpecialFunctions.h The above three changes effectively enable the Eigen "Packet" layer for the HIP platform 4. Merging the "hip_basic" and "cuda_basic" unit tests into one ("gpu_basic") 5. Updating the "EIGEN_DEVICE_FUNC" marking in some places The change has been tested on the HIP and CUDA platforms.
* MIsc. source and comment typosGravatar luz.paz2018-03-11
| | | | Found using `codespell` and `grep` from downstream FreeCAD
* typoGravatar Gael Guennebaud2016-12-05
|
* Improve performance of row-major-dense-matrix * vector products for recent CPUs.Gravatar Gael Guennebaud2016-12-05
| | | | | This revised version does not bother about aligned loads/stores, and rather processes 8 rows at ones for better instruction pipelining.
* Complete rewrite of column-major-matrix * vector product to deliver higher ↵Gravatar Gael Guennebaud2016-12-03
| | | | | | | | | | performance of modern CPU. The previous code has been optimized for Intel core2 for which unaligned loads/stores were prohibitively expensive. This new version exhibits much higher instruction independence (better pipelining) and explicitly leverage FMA. According to my benchmark, on Haswell this new kernel is always faster than the previous one, and sometimes even twice as fast. Even higher performance could be achieved with a better blocking size heuristic and, perhaps, with explicit prefetching. We should also check triangular product/solve to optimally exploit this new kernel (working on vertical panel of 4 columns is probably not optimal anymore).
* bug #1278: ease parsingGravatar Gael Guennebaud2016-08-22
|
* Relax mixing-type constraints for binary coefficient-wise operators:Gravatar Gael Guennebaud2016-06-06
| | | | | | | | | | - Replace internal::scalar_product_traits<A,B> by Eigen::ScalarBinaryOpTraits<A,B,OP> - Remove the "functor_is_product_like" helper (was pretty ugly) - Currently, OP is not used, but it is available to the user for fine grained tuning - Currently, only the following operators have been generalized: *,/,+,-,=,*=,/=,+=,-= - TODO: generalize all other binray operators (comparisons,pow,etc.) - TODO: handle "scalar op array" operators (currently only * is handled) - TODO: move the handling of the "void" scalar type to ScalarBinaryOpTraits
* Introduce internal's UIntPtr and IntPtr types for pointer to integer ↵Gravatar Gael Guennebaud2016-05-26
| | | | | | | | conversions. This fixes "conversion from pointer to same-sized integral type" warnings by ICC. Ideally, we would use the std::[u]intptr_t types all the time, but since they are C99/C++11 only, let's be safe.
* Generalize first_aligned to take the requested alignment as a template ↵Gravatar Gael Guennebaud2015-08-06
| | | | parameter, and add a first_default_aligned variante calling first_aligned with the requirement of the largest packet for the given scalar type.
* bug #973: update macro-level control of alignement by introducing ↵Gravatar Gael Guennebaud2015-07-29
| | | | 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).
* Ensured that contractions that can be reduced to a matrix vector product ↵Gravatar Benoit Steiner2015-01-06
| | | | work correctly even when the input coefficients aren't aligned.
* Generalized the matrix vector product code.Gravatar Benoit Steiner2014-10-31
|
* Enable vectorization of gemv for PacketSize>4 through unaligned loads (still ↵Gravatar Gael Guennebaud2014-03-28
| | | | better than no vectorization)
* Merged eigen/eigen into defaultGravatar Benoit Steiner2014-02-24
|\
| * Implement bug #317: use a template function call to suppress unused variable ↵Gravatar Gael Guennebaud2014-02-24
| | | | | | | | warnings. This also fix the issue of the previous changeset in a much nicer way.
| * Workaround clang ABI change with unsed arguments (ugly fix)Gravatar Gael Guennebaud2014-02-24
| |
* | Reverted the definition of the EIGEN_ALIGN to its former meaning (i.e. a ↵Gravatar Benoit Steiner2014-02-18
| | | | | | | | | | | | | | | | boolean) Created a new EIGEN_ALIGN_BYTES define to encode how the data should be aligned Fixed a few remaining alignment issues exposed when the Eigen code is compiled with avx enabled. Created a new EIGEN_ALIGN_DEFAULT define, which is set to the minimum alignment value required for the chosen instruction set. Use this value instead of EIGEN_ALIGN32 to preserve the existing alignment on SSE/Altivec/Neon.
* | Added support for AVX to Eigen.Gravatar Benoit Steiner2014-01-29
|/
* Use aligned loads in Matrix-Vector product where possible. Fixes bug #689Gravatar Christoph Hertzberg2013-10-29
|
* Add explanations of the logic behind the matrix-vector productsGravatar Gael Guennebaud2013-08-21
|
* Fix bug #314: move remaining math functions from internal to numext namespaceGravatar Gael Guennebaud2013-06-10
|
* Fix "routine is both "inline" and "noinline"" warningsGravatar Gael Guennebaud2013-02-28
|
* multiple warnings for unused variableGravatar Desire NUENTSA2012-09-07
|
* Fix out-of-range memory access in GEMV (the memory was not used for the ↵Gravatar Gael Guennebaud2012-08-30
| | | | | | | computation, only to assemble unaligned packets from aligned packet loads) (transplanted from 221f54698c2f6690da8c0f44c1e31e55118dedab )
* Automatic relicensing to MPL2 using Keirs script. Manual fixup follows.Gravatar Benoit Jacob2012-07-13
|
* Get rid of include directives inside namespace blocks (bug #339).Gravatar Jitse Niesen2012-04-15
|
* workaround ICC compilation error with -strict-ansiGravatar Gael Guennebaud2012-01-25
|
* Intel(R) MKL support added.Gravatar karturov2011-12-05
| | | | | | | | | | * * * License disclaimer changed to BSD license for MKL_support.h * * * Pardiso support fixed, test added. blas/lapack tests fixed: Scalar parameter was added in Cholesky, product_matrix_vector_triangular remaned to triangular_matrix_vector_product. * * * PARDISO test was added physically.
* protect calls to min and max with parentheses to make Eigen compatible with ↵Gravatar Gael Guennebaud2011-07-21
| | | | | | | default windows.h (transplanted from 49b6e9143e1d74441924c0c313536e263e12a55c )
* Initial fixes for bug #85.Gravatar Hauke Heibel2010-10-25
| | | | | | | Renamed meta_{true|false} to {true|false}_type, meta_if to conditional, is_same_type to is_same, un{ref|pointer|const} to remove_{reference|pointer|const} and makeconst to add_const. Changed boolean type 'ret' member to 'value'. Changed 'ret' members refering to types to 'type'. Adapted all code occurences.
* bug #86 : use internal:: namespace instead of ei_ prefixGravatar Benoit Jacob2010-10-25
|
* fix warnings. The one in Reverse was potentially serious: coeff() methods ↵Gravatar Benoit Jacob2010-08-03
| | | | should return CoeffReturnType, not "Scalar", if the expression is potentially a Lvalue.
* sync with default branchGravatar Gael Guennebaud2010-07-22
|\
* | oopsGravatar Gael Guennebaud2010-07-22
| |
* | rename indices to a common schemeGravatar Gael Guennebaud2010-07-22
| |
* | mixing types step 3:Gravatar Gael Guennebaud2010-07-11
| | | | | | | | | | - improve support of colmajor by vector and matrix - matrix - now all configurations are well handled, but the perf are not always very good
* | make colmaj * vector uses pointers onlyGravatar Gael Guennebaud2010-07-11
| |
* | mixing types in product step 2:Gravatar Gael Guennebaud2010-07-11
| | | | | | | | | | | | | | | | * pload* and pset1 are now templated on the packet type * gemv routines are now embeded into a structure with a consistent API with respect to gemm * some configurations of vector * matrix and matrix * matrix works fine, some need more work...
| * fix unused warningGravatar Gael Guennebaud2010-07-11
|/
* * generalize rowmajor by vectorGravatar Gael Guennebaud2010-07-10
| | | | * fix weird compilation error when constructing a matrix with a row by matrix product
* optimize gemv for complex<double> and fix gcc alignment issue in 32bitsGravatar Gael Guennebaud2010-07-07
|
* s/IsVectorized/VectorizableGravatar Gael Guennebaud2010-07-07
|
* * add a IsVectorized mechanism (instead of packet-size>1...)Gravatar Gael Guennebaud2010-07-06
| | | | * vectorize complex<double>
* add support for vectorized conjugated productsGravatar Gael Guennebaud2010-07-06
|
* email changeGravatar Gael Guennebaud2010-06-24
|
* the Index types change.Gravatar Benoit Jacob2010-05-30
| | | | As discussed on the list (too long to explain here).
* * Fix bug #79: ei_alignmentOffset was assuming that ptr is multiple ofGravatar Benoit Jacob2010-01-02
| | | | | | | sizeof(Scalar), and that assumption breaks with double on linux x86-32. * Rename ei_alignmentOffset to ei_first_aligned * Rewrite its documentation and part of its body * The variant taking a MatrixBase doesn't need a separate size argument.
* discard vectorization in matrix-vector product when data is not evenGravatar Gael Guennebaud2009-10-05
| | | | aligned on the scalar type size (e.g., for double on 32 bits system without -malign-double)