aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench
Commit message (Collapse)AuthorAge
* sparse module: add support for umfpack, the sparse direct LUGravatar Gael Guennebaud2008-10-19
| | | | | | | | | | solver from suitesparse (as cholmod). It seems to be even faster than SuperLU and it was much simpler to interface ! Well, the factorization is faster, but for the solve part, SuperLU is quite faster. On the other hand the solve part represents only a fraction of the whole procedure. Moreover, I bench random matrices that does not represents real cases, and I'm not sure at all I use both libraries with their best settings !
* add/update some benchmark files used to test/compare sparse module featuresGravatar Gael Guennebaud2008-10-19
|
* Big API change in Cholesky module:Gravatar Gael Guennebaud2008-10-13
| | | | | | | | | | | | | | | | * rename Cholesky to LLT * rename CholeskyWithoutSquareRoot to LDLT * rename MatrixBase::cholesky() to llt() * rename MatrixBase::choleskyNoSqrt() to ldlt() * make {LLT,LDLT}::solve() API consistent with other modules Note that we are going to keep a source compatibility untill the next beta release. E.g., the "old" Cholesky* classes, etc are still available for some time. To be clear, Eigen beta2 should be (hopefully) source compatible with beta1, and so beta2 will contain all the deprecated API of beta1. Those features marked as deprecated will be removed in beta3 (or in the final 2.0 if there is no beta 3 !). Also includes various updated in sparse Cholesky.
* typos in bench/Gravatar Gael Guennebaud2008-08-29
|
* BTL:added trisolve action fileGravatar Gael Guennebaud2008-08-26
|
* various updates in BTLGravatar Gael Guennebaud2008-08-25
|
* renamed inverseProduct => solveTriangularGravatar Gael Guennebaud2008-08-09
|
* Add a LU decomposition action in BTL and various cleaning in BTL. For instanceGravatar Gael Guennebaud2008-08-04
| | | | | | all per plot settings have been moved to a single file, go_mean now takes an optional second argument "tiny" to generate plots for tiny matrices, and output of comparison information wrt to previous benchs (if any).
* BTL: - added tridiagonalization and hessenberg decomposition benchGravatar Gael Guennebaud2008-07-28
| | | | - added GOTO library
* * updated benchmark files according to recent renamingsGravatar Gael Guennebaud2008-07-27
| | | | * various improvements in BTL including trisolver and cholesky bench
* * Fix some complex alignment issues in the cache friendly matrix-vector ↵Gravatar Gael Guennebaud2008-07-23
| | | | | | | products. * Minor update of the cores of the Cholesky algorithms to make them more friendly wrt to matrix-vector products => speedup x5 !
* * big rework of Inverse.h:Gravatar Benoit Jacob2008-07-15
| | | | | | | | | | | - remove all invertibility checking, will be redundant with LU - general case: adapt to matrix storage order for better perf - size 4 case: handle corner cases without falling back to gen case. - rationalize with selectors instead of compile time if - add C-style computeInverse() * update inverse test. * in snippets, default cout precision to 3 decimal places * add some cmake module from kdelibs to support btl with cmake 2.4
* enhancements of the plot generator:Gravatar Gael Guennebaud2008-07-13
| | | | | | | | - removed the ugly X11 and PNG gnuplots terminals - use enhanced postscript terminal - use imagemagick to generate the png files (with compression) - disable the fortran impl by default since it is as meaningless as a "C impl" - update line settings
* Optimization: added super efficient rowmajor * vector product (and vector * ↵Gravatar Gael Guennebaud2008-07-13
| | | | | | | | colmajor). It basically performs 4 dot products at once reducing loads of the vector and improving instructions scheduling. With 3 cache friendly algorithms, we now handle all product configurations with outstanding perf for large matrices.
* SVN_SILENT trivial fixGravatar Benoit Jacob2008-07-12
|
* fix a cmake issue in FindTvmet and FindMKLGravatar Gael Guennebaud2008-07-12
|
* another occurence of that little cmake fixGravatar Benoit Jacob2008-07-12
|
* * Optimization: added a specialization of Block for xpr with DirectAccessBitGravatar Gael Guennebaud2008-07-12
| | | | * some simplifications and fixes in cache friendly products
* little cmake fixGravatar Benoit Jacob2008-07-12
|
* disable MKL check and fortran for cmake <2.6Gravatar Gael Guennebaud2008-07-12
|
* various improvements of the plot generator in BTLGravatar Gael Guennebaud2008-07-12
|
* various minor updates in the benchmark suite like non inliningGravatar Gael Guennebaud2008-07-12
| | | | | of some functions as well as the experimental C code used to design efficient eigen's matrix vector products.
* resurrected tvmet, added mt4, intel's MKL and handcoded vectorized backendsGravatar Gael Guennebaud2008-07-10
| | | | in the benchmark suite
* in BTL: a specific bench/action can be selected at runtime, e.g.:Gravatar Gael Guennebaud2008-07-09
| | | | | | BTL_CONFIG="-a ata" ctest -V -R eigen run the all benchmarks having "ata" in their name for all libraries matching the regexp "eigen"
* raah, results were corrupted by overflow. Now slice vectorization isGravatar Benoit Jacob2008-07-09
| | | | | about a +25% speedup which is still nice as i expected zero or even negative benefit.
* add benchmark for slice vectorization... expected it to be little orGravatar Benoit Jacob2008-07-09
| | | | zero benefit... turns out to be 20x speedup. Something is wrong.
* imported a reworked version of BTL (Benchmark for Templated Libraries).Gravatar Gael Guennebaud2008-07-09
| | | | | | | | | | | | the modifications to initial code follow: * changed build system from plain makefiles to cmake * added eigen2 (4 versions: vec/novec and fixed/dynamic), GMM++, MTL4 interfaces * added "transposed matrix * vector" product action * updated blitz interface to use condensed products instead of hand coded loops * removed some deprecated interfaces * changed default storage order to column major for all libraries * new generic bench timer strategy which is supposed to be more accurate * various code clean-up
* add Cholesky and eigensolver benchmarkGravatar Gael Guennebaud2008-07-08
|
* - many updates after Cwise changeGravatar Benoit Jacob2008-07-08
| | | | | - fix compilation in product.cpp with std::complex - fix bug in MatrixBase::operator!=
* the big Array/Cwise rework as discussed on the mailing list. The new APIGravatar Benoit Jacob2008-07-08
| | | | can be seen in Eigen/src/Core/Cwise.h.
* * fix compilation issue in ProductGravatar Gael Guennebaud2008-07-02
| | | | | * added some tests for product and swap * overload .swap() for dynamic-sized matrix of same size
* * resurected Flagged::_expression used to optimize m+=(a*b).lazy()Gravatar Gael Guennebaud2008-07-01
| | | | | (equivalent to the GEMM blas routine) * added a GEMM benchmark
* * added an in-place version of inverseProduct whichGravatar Gael Guennebaud2008-06-29
| | | | | | | might be twice faster fot small fixed size matrix * added a sparse triangular solver (sparse version of inverseProduct) * various other improvements in the Sparse module
* * added innerSize / outerSize functions to MatrixBaseGravatar Gael Guennebaud2008-06-28
| | | | | | | * added complete implementation of sparse matrix product (with a little glue in Eigen/Core) * added an exhaustive bench of sparse products including GMM++ and MTL4 => Eigen outperforms in all transposed/density configurations !
* various work on the Sparse module:Gravatar Gael Guennebaud2008-06-26
| | | | | | | | | | | | | | | | * added some glue to Eigen/Core (SparseBit, ei_eval, Matrix) * add two new sparse matrix types: HashMatrix: based on std::map (for random writes) LinkedVectorMatrix: array of linked vectors (for outer coherent writes, e.g. to transpose a matrix) * add a SparseSetter class to easily set/update any kind of matrices, e.g.: { SparseSetter<MatrixType,RandomAccessPattern> wrapper(mymatrix); for (...) wrapper->coeffRef(rand(),rand()) = rand(); } * automatic shallow copy for RValue * and a lot of mess ! plus: * remove the remaining ArrayBit related stuff * don't use alloca in product for very large memory allocation
* * add bench/benchVecAdd.cpp by Gael, fix crash (ei_pload on non-aligned)Gravatar Benoit Jacob2008-06-26
| | | | | | | | | | | | * introduce packet(int), make use of it in linear vectorized paths --> completely fixes the slowdown noticed in benchVecAdd. * generalize coeff(int) to linear-access xprs * clarify the access flag bits * rework api dox in Coeffs.h and util/Constants.h * improve certain expressions's flags, allowing more vectorization * fix bug in Block: start(int) and end(int) returned dyn*dyn size * fix bug in Block: just because the Eval type has packet access doesn't imply the block xpr should have it too.
* * add ei_pdiv intrinsic, make quotient functor vectorizableGravatar Benoit Jacob2008-06-23
| | | | * add vdw benchmark from Tim's real-world use case
* add experimental code for sparse matrix:Gravatar Gael Guennebaud2008-06-23
| | | | | | | | - uses the common "Compressed Column Storage" scheme - supports every unary and binary operators with xpr template assuming binaryOp(0,0) == 0 and unaryOp(0) = 0 (otherwise a sparse matrix doesnot make sense) - this is the first commit, so of course, there are still several shorcommings !
* add benchmark for sumGravatar Benoit Jacob2008-06-23
|
* * refactoring of Product:Gravatar Gael Guennebaud2008-06-19
| | | | | | | | * use ProductReturnType<>::Type to get the correct Product xpr type * Product is no longer instanciated for xpr types which are evaluated * vectorization of "a.transpose() * b" for the normal product (small and fixed-size matrix) * some cleanning * removed ArrayBase
* * Big rework of Assign.h:Gravatar Benoit Jacob2008-06-16
| | | | | | | | | | | | | | | ** Much better organization ** Fix a few bugs ** Add the ability to unroll only the inner loop ** Add an unrolled path to the Like1D vectorization. Not well tested. ** Add placeholder for sliced vectorization. Unimplemented. * Rework of corrected_flags: ** improve rules determining vectorizability ** for vectors, the storage-order is indifferent, so we tweak it to allow vectorization of row-vectors. * fix compilation in benchmark, and a warning in Transpose.
* some documentation fixes (Cwise* and Cholesky)Gravatar Gael Guennebaud2008-05-22
|
* * Patch by Konstantinos Margaritis: AltiVec vectorization.Gravatar Benoit Jacob2008-05-03
| | | | * Fix several warnings, temporarily disable determinant test.
* Make products always eval into expressions. Improves performanceGravatar Benoit Jacob2008-05-02
| | | | in benchmark. Still not as fasts as explicit eval(), strangely.
* Fixed a couple of issues introduced in previous commits.Gravatar Gael Guennebaud2008-04-26
| | | | Added a test for Triangular.
* give up on OpenMP... for nowGravatar Benoit Jacob2008-04-18
|
* - optimized determinant calculations for small matrices (size <= 4)Gravatar Benoit Jacob2008-04-14
| | | | | | | (only 30 muls for size 4) - rework the matrix inversion: now using cofactor technique for size<=3, so the ugly unrolling is only used for size 4 anymore, and even there I'm looking to get rid of it.
* * Add fixed-size template versions of corner(), start(), end().Gravatar Benoit Jacob2008-04-12
| | | | | | | * Use them to write an unrolled path in echelon.cpp, as an experiment before I do this LU module. * For floating-point types, make ei_random() use an amplitude of 1.
* - cleaner use of OpenMP (no code duplication anymore)Gravatar Benoit Jacob2008-04-11
| | | | | | | | | | | | | | using a macro and _Pragma. - use OpenMP also in cacheOptimalProduct and in the vectorized paths as well - kill the vector assignment unroller. implement in operator= the logic for assigning a row-vector in a col-vector. - CMakeLists support for building tests/examples with -fopenmp and/or -msse2 - updates in bench/, especially replace identity() by ones() which prevents underflows from perturbing bench results.
* Merge Gael's experimental OpenMP parallelization support into Assign.h.Gravatar Benoit Jacob2008-04-11
|