Commit Graph

4430 Commits

Author SHA1 Message Date
Gael Guennebaud
a4c76f8d34 Improve inlining 2016-02-08 11:33:02 +01:00
Rasmus Munk Larsen
16ec450ca1 Nevermind. 2016-02-06 17:54:01 -08:00
Rasmus Munk Larsen
019fff9a00 Add my name to copyright notice in ColPivHouseholder.h, mostly for previous work on stable norm downdate formula. 2016-02-06 17:48:42 -08:00
Rasmus Munk Larsen
86d6201d7b Merge. 2016-02-06 16:36:56 -08:00
Rasmus Munk Larsen
d904c8ac8f Implement complete orthogonal decomposition in Eigen. 2016-02-06 16:32:00 -08:00
Gael Guennebaud
c6a12d1dc6 Fix warning with gcc < 4.8 2016-02-06 18:06:51 +01:00
Gael Guennebaud
5b2d287878 bug #779: allow non aligned buffers for buffers smaller than the requested alignment. 2016-02-05 21:46:39 +01:00
Gael Guennebaud
e8e1d504d6 Add an explicit assersion on the alignment of the pointer returned by std::malloc 2016-02-05 21:38:16 +01:00
Gael Guennebaud
62a1c911cd Remove posix_memalign, _mm_malloc, and _aligned_malloc special paths. 2016-02-05 21:24:35 +01:00
Benoit Steiner
bcdcdace48 Pulled latest updates from trunk 2016-02-04 08:56:49 -08:00
Gael Guennebaud
659fc9c159 Remove dead code 2016-02-04 09:55:09 +01:00
Gael Guennebaud
d5d7798b9d Improve heuritics for switching between coeff-based and general matrix product implementation. 2016-02-04 09:53:47 +01:00
Benoit Steiner
f535378995 Added support for vectorized type casting of int to char. 2016-02-03 18:58:29 -08:00
Benoit Steiner
727ff26960 Disable 2 more nvcc warning messages 2016-02-03 16:01:37 -08:00
Benoit Steiner
bcbde37a11 Made sure the code compiles when EIGEN_HAS_C99_MATH isn't defined 2016-02-03 14:53:08 -08:00
Benoit Steiner
f933f69021 Added a few comments 2016-02-03 14:12:18 -08:00
Benoit Steiner
5d82e47ef6 Properly disable nvcc warning messages in user code. 2016-02-03 14:10:06 -08:00
Benoit Steiner
d7742d22e4 Revert the nvcc messages to their default severity instead of the forcing them to be warnings 2016-02-03 13:47:28 -08:00
Benoit Steiner
ac26e1aaf3 Pulled latest updates from trunk 2016-02-03 12:52:20 -08:00
Benoit Steiner
492fe7ce02 Silenced some unhelpful warnings generated by nvcc. 2016-02-03 12:51:19 -08:00
Gael Guennebaud
b70db60e4d Merged in rmlarsen/eigen (pull request PR-161)
Change Eigen's ColPivHouseholderQR to use  numerically stable norm downdate formula
2016-02-03 21:37:06 +01:00
Rasmus Munk Larsen
5fb04ab2da Fix bad line break. Don't repeat Kahan matrix test since it is deterministic. 2016-02-03 10:12:10 -08:00
Rasmus Munk Larsen
d9a6f86cc0 Make the array of directly compute column norms a member to avoid allocation in computeInPlace. 2016-02-03 09:55:30 -08:00
Gael Guennebaud
70dc14e4e1 bug #1161: fix division by zero for huge scalar types 2016-02-03 18:25:41 +01:00
Damien R
c301f99208 bug #1164: fix list and deque specializations such that our aligned allocator is automatically activatived only when the user did not specified an allocator (or specified the default std::allocator). 2016-02-03 18:07:25 +01:00
Gael Guennebaud
eb6d9aea0e Clarify error message when writing to a read-only sparse-sub-matrix. 2016-02-03 16:58:23 +01:00
Rasmus Munk Larsen
00f9ef6c76 merging. 2016-02-01 11:10:30 -08:00
Gael Guennebaud
ff1157bcbf bug #694: document that SparseQR::matrixR is not sorted. 2016-02-01 16:09:34 +01:00
Gael Guennebaud
ec469700dc bug #557: make InnerIterator of sparse storage types more versatile by adding default-ctor, copy-ctor/assignment 2016-02-01 15:04:33 +01:00
Gael Guennebaud
6e0a86194c Fix integer path for num_steps==1 2016-02-01 15:00:04 +01:00
Gael Guennebaud
e1d219e5c9 bug #698: fix linspaced for integer types. 2016-02-01 14:25:34 +01:00
Gael Guennebaud
2c3224924b Fix warning and replace min/max macros by calls to mini/maxi 2016-02-01 10:23:45 +01:00
Benoit Steiner
3f1ee45833 Fixed compilation errors triggered by duplicate inline declaration 2016-01-31 10:48:49 -08:00
Gael Guennebaud
d142165942 bug #667: declare several critical functions as FORECE_INLINE to make ICC happier.
<g.gael@free.fr> HG: branch 'default' HG: changed Eigen/src/Core/ArrayBase.h HG: changed Eigen/src/Core/AssignEvaluator.h HG: changed
Eigen/src/Core/CoreEvaluators.h HG: changed Eigen/src/Core/CwiseUnaryOp.h HG: changed Eigen/src/Core/DenseBase.h HG: changed Eigen/src/Core/MatrixBase.h
2016-01-31 16:34:10 +01:00
Gael Guennebaud
1bc207c528 backout changeset d4a9e61569
: the extended SparseView is not needed anymore
2016-01-30 14:43:21 +01:00
Gael Guennebaud
8ed1553d20 bug #632: implement general coefficient-wise "dense op sparse" operations through specialized evaluators instead of using SparseView.
This permits to deal with arbitrary storage order, and to by-pass the more complex iterator of the sparse-sparse case.
2016-01-30 14:39:50 +01:00
Gael Guennebaud
699634890a bug #946: generalize Cholmod::solve to handle any rhs expression 2016-01-29 23:02:22 +01:00
Gael Guennebaud
15084cf1ac bug #632: add support for "dense +/- sparse" operations. The current implementation is based on SparseView to make the dense subexpression compatible with the sparse one. 2016-01-29 22:09:45 +01:00
Gael Guennebaud
d4a9e61569 Extend SparseView to allow keeping explicit zeros. This is equivalent to sparseView(1,-1) but faster because the test is removed at compile-time. 2016-01-29 22:07:56 +01:00
Gael Guennebaud
d8d37349c3 bug #696: enable zero-sized block at compile-time by relaxing the respective assertion 2016-01-29 12:44:49 +01:00
Gael Guennebaud
e8ccc06fe5 merge 2016-01-29 09:40:38 +01:00
Benoit Steiner
d3f533b395 Fixed compilation warning 2016-01-28 20:09:45 -08:00
Abhijit Kundu
3fde202215 Making ceil() functor generic w.r.t packet type 2016-01-28 21:27:00 -05:00
Rasmus Munk Larsen
acce4dd050 Change Eigen's ColPivHouseholderQR to use the numerically stable norm downdate formula from http://www.netlib.org/lapack/lawnspdf/lawn176.pdf, which has been used in LAPACK's xGEQPF and xGEQP3 since 2006. With the old formula, the code chooses the wrong pivots and fails to correctly determine rank on graded matrices.
This change also adds additional checks for non-increasing diagonal in R11 to existing unit tests, and adds a new unit test with the Kahan matrix, which consistently fails for the original code.

Benchmark timings on Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz. Code compiled with AVX & FMA. I just ran on square matrices of 3 difference sizes.

Benchmark               Time(ns)     CPU(ns) Iterations
-------------------------------------------------------
Before:
BM_EigencolPivQR/64        53677       53627      12890
BM_EigencolPivQR/512    15265408    15250784         46
BM_EigencolPivQR/4k  15403556228 15388788368          2

After (non-vectorized version):
Benchmark               Time(ns)     CPU(ns) Iterations  Degradation
--------------------------------------------------------------------
BM_EigencolPivQR/64        63736       63669      10844         18.5%
BM_EigencolPivQR/512    16052546    16037381         43          5.1%
BM_EigencolPivQR/4k  15149263620 15132025316          2         -2.0%

Performance-wise there seems to be a ~18.5% degradation for small (64x64) matrices, probably due to the cost of more O(min(m,n)^2) sqrt operations that are not needed for the unstable formula.
2016-01-28 15:07:26 -08:00
Gael Guennebaud
b908e071a8 bug #178: get rid of some const_cast in SparseCore 2016-01-28 22:11:18 +01:00
Gael Guennebaud
c1d900af61 bug #178: remove additional const on nested expression, and remove several const_cast. 2016-01-28 21:43:20 +01:00
Gael Guennebaud
f50bb1e6f3 Fix compilation with gcc 2016-01-28 13:25:26 +01:00
Gael Guennebaud
ddf64babde merge 2016-01-28 13:21:48 +01:00
Gael Guennebaud
df15fbc452 bug #1158: PartialReduxExpr is a vector expression, and it thus must expose the LinearAccessBit flag 2016-01-28 13:16:30 +01:00
Gael Guennebaud
9bcadb7fd1 Disable stupid MSVC warning 2016-01-28 12:14:16 +01:00
Gael Guennebaud
b4d87fff4a Fix MSVC warning. 2016-01-28 12:12:30 +01:00
Gael Guennebaud
2bad3e78d9 bug #96, bug #1006: fix by value argument in result_of. 2016-01-28 12:12:06 +01:00
Benoit Steiner
291069e885 Fixed some compilation problems with nvcc + clang 2016-01-27 15:37:03 -08:00
Gael Guennebaud
4865e1e732 Update link to suitesparse. 2016-01-27 22:48:40 +01:00
Eugene Brevdo
c8d94ae944 digamma special function: merge shared code.
Moved type-specific code into a helper class digamma_impl_maybe_poly<Scalar>.
2016-01-27 09:52:29 -08:00
Gael Guennebaud
9c8f7dfe94 bug #1156: fix several function declarations whose arguments were passed by value instead of being passed by reference 2016-01-27 18:34:42 +01:00
Gael Guennebaud
9aa6fae123 bug #1154: move to dynamic scheduling for spmv products. 2016-01-27 18:03:51 +01:00
Gael Guennebaud
9801c959e6 Fix tri = complex * real product, and add respective unit test. 2016-01-27 17:12:25 +01:00
Gael Guennebaud
21b5345782 Add meta_least_common_multiple helper. 2016-01-27 17:11:39 +01:00
Gael Guennebaud
fecea26d93 Extend doc on shifting strategy 2016-01-27 15:55:15 +01:00
Gael Guennebaud
cfa21f8123 Remove dead code. 2016-01-26 23:33:15 +01:00
Gael Guennebaud
6850eab33b Re-enable blocking on rows in non-l3 blocking mode. 2016-01-26 23:32:48 +01:00
Gael Guennebaud
aa8c6a251e Make sure that micro-panel-size is smaller than blocking sizes (otherwise we might get a buffer overflow) 2016-01-26 23:31:48 +01:00
Gael Guennebaud
5b0a9ee003 Make sure that block sizes are smaller than input matrix sizes. 2016-01-26 23:30:24 +01:00
Christoph Hertzberg
44d4674955 bug #1153: Don't rely on __GXX_EXPERIMENTAL_CXX0X__ to detect C++11 support 2016-01-26 16:45:33 +01:00
Gael Guennebaud
8328caa618 bug #51: add block preallocation mechanism to selfadjoit*matrix product. 2016-01-25 22:06:42 +01:00
Gael Guennebaud
e58827d2ed bug #51: make general_matrix_matrix_triangular_product use L3-blocking helper so that general symmetric rank-updates and general-matrix-to-triangular products do not trigger dynamic memory allocation for fixed size matrices. 2016-01-25 17:16:33 +01:00
Gael Guennebaud
b114e6fd3b Improve documentation. 2016-01-25 11:56:25 +01:00
Gael Guennebaud
869b4443ac Add SparseVector::conservativeResize() method. 2016-01-25 11:55:39 +01:00
Gael Guennebaud
acf6f7af6b Merged in larsmans/eigen (pull request PR-156)
Documentation fixes
2016-01-24 22:28:49 +01:00
Lars Buitinck
cc482e32f1 Method is called visit, not visitor 2016-01-24 15:50:59 +01:00
Gael Guennebaud
1cf85bd875 bug #977: add stableNormalize[d] methods: they are analogues to normalize[d] but with carefull handling of under/over-flow 2016-01-23 22:40:11 +01:00
Gael Guennebaud
369d6d1ae3 Add link to reference paper. 2016-01-23 22:16:03 +01:00
Gael Guennebaud
0caa4b1531 bug #1150: make IncompleteCholesky more robust by iteratively increase the shift until the factorization succeed (with at most 10 attempts). 2016-01-23 22:13:54 +01:00
Gael Guennebaud
5358c38589 bug #1095: add Cholmod*::logDeterminant/determinant (from patch of Joshua Pritikin) 2016-01-22 16:05:29 +01:00
Gael Guennebaud
06971223ef Unify std::numeric_limits and device::numeric_limits within numext namespace 2016-01-22 15:02:21 +01:00
Gael Guennebaud
ee37eb4eed bug #977: avoid division by 0 in normalize() and normalized(). 2016-01-21 20:43:42 +01:00
Gael Guennebaud
7cae8918c0 Fix compilation on old gcc+AVX 2016-01-21 20:30:32 +01:00
Gael Guennebaud
8dca9f97e3 Add numext::sqrt function to enable custom optimized implementation.
This changeset add two specializations for float/double on SSE. Those
are mostly usefull with GCC for which std::sqrt add an extra and costly
check on the result of _mm_sqrt_*. Clang does not add this burden.

In this changeset, only DenseBase::norm() makes use of it.
2016-01-21 20:18:51 +01:00
Gael Guennebaud
34340458cb bug #1151: remove useless critical section 2016-01-21 14:29:45 +01:00
Gael Guennebaud
ed8ade9c65 bug #1149: fix Pastix*::*parm() 2016-01-20 19:01:24 +01:00
Gael Guennebaud
4c5e96aab6 bug #1148: silent Pastix by default 2016-01-20 18:56:17 +01:00
Gael Guennebaud
db237d0c75 bug #1145: fix PastixSupport LLT/LDLT wrappers (missing resize prior to calls to selfAdjointView) 2016-01-20 18:49:01 +01:00
Gael Guennebaud
0b7169d1f7 bug #1147: fix compilation of PastixSupport 2016-01-20 18:15:59 +01:00
Gael Guennebaud
234a1094b7 Add static assertion to y(), z(), w() accessors 2016-01-20 09:18:44 +01:00
Eugene Brevdo
6a75e7e0d5 Digamma cleanup
* Added permission from cephes author to use his code
* Cleanup in ArrayCwiseUnaryOps
2016-01-15 16:32:21 -08:00
Benoit Steiner
bbdabbb379 Made the blas utils usable from within a cuda kernel 2016-01-11 17:26:56 -08:00
Gael Guennebaud
8b9dc9f0df bug #1144: fix regression in x=y+A*x (aliasing), and move evaluator_traits::AssumeAliasing to evaluator_assume_aliasing. 2016-01-09 08:30:38 +01:00
Gael Guennebaud
ee738321aa rm remaining debug code 2016-01-06 14:49:40 +01:00
Christoph Hertzberg
54bf582303 bug #1143: Work-around gcc bug 2016-01-06 11:59:24 +01:00
Gael Guennebaud
715f6f049f Improve inline documentation of SparseCompressedBase and its derived classes 2016-01-03 21:56:30 +01:00
Gael Guennebaud
8b0d1eb0f7 Fix numerous doxygen shortcomings, and workaround some clang -Wdocumentation warnings 2016-01-01 21:45:06 +01:00
Gael Guennebaud
9900782e88 Mark AlignedBit and EvalBeforeNestingBit with deprecated attribute, and remove the remaining usages of EvalBeforeNestingBit. 2015-12-30 16:47:49 +01:00
Gael Guennebaud
70404e07c2 Workaround clang -Wdocumentation warning about "/*<" 2015-12-30 16:46:45 +01:00
Gael Guennebaud
addb7066e8 Workaround "empty paragraph" warning with clang -Wdocumentation 2015-12-30 16:45:44 +01:00
Gael Guennebaud
eadc377b3f Add missing doc of Derived template parameter 2015-12-30 16:43:19 +01:00
Gael Guennebaud
29bb599e03 Fix numerous doxygen issues in auto-link generation 2015-12-30 16:04:24 +01:00
Gael Guennebaud
25f2b8d824 bug #1141: add missing initialization of CholmodBase::m_*IsOk 2015-12-29 15:50:11 +01:00
Eugene Brevdo
f2471f31e0 Modify constants in SpecialFunctions to lowercase (avoid name conflicts). 2015-12-28 17:48:38 -08:00
Eugene Brevdo
afb35385bf Change PI* to M_PI* in SpecialFunctions to avoid possible breakage
with external DEFINEs.
2015-12-28 17:34:06 -08:00