aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* 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.
* Add a *very efficient* evaluation path for both col-major matrix * vectorGravatar Gael Guennebaud2008-07-12
| | | | | | and vector * row-major products. Currently, it is enabled only is the matrix has DirectAccessBit flag and the product is "large enough". Added the respective unit tests in test/product/cpp.
* resurrected tvmet, added mt4, intel's MKL and handcoded vectorized backendsGravatar Gael Guennebaud2008-07-10
| | | | in the benchmark suite
* some performance fixes in Assign.h reported by Gael. Some doc update inGravatar Benoit Jacob2008-07-10
| | | | Cwise.
* 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"
* * added optimized paths for matrix-vector and vector-matrix productsGravatar Gael Guennebaud2008-07-09
| | | | | | (using either a cache friendly strategy or re-using dot-product vectorized implementation) * add LinearAccessBit to Transpose
* 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
* * added a lazyAssign overload skipping .lazy() such that c = (<xpr>).lazy() ↵Gravatar Gael Guennebaud2008-07-09
| | | | | | such that lazyAssign overloads of <xpr> are automatically called (this also reduces assign instansiations)
* I forgot that the previous commit needed minor changes outside the bench folderGravatar Gael Guennebaud2008-07-08
|
* 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 issues in previously added additionnal product testsGravatar Gael Guennebaud2008-07-06
|
* * do the ActualPacketAccesBit change as discussed on listGravatar Benoit Jacob2008-07-04
| | | | | * add comment in Product.h about CanVectorizeInner * fix typo in test/product.cpp
* * 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
* * fix error in divergence test, now it is even fasterGravatar Benoit Jacob2008-07-01
| | | | * add comments in render() in case anyone ever reads that :P
* interleaved rendering balances the load betterGravatar Benoit Jacob2008-07-01
|
* * multi-threaded renderingGravatar Benoit Jacob2008-07-01
| | | | | * increased number of iterations, with more iterations done before testing divergence. results in x2 speedup from vectorization.
* - use double precision to store the position / zoom / other stuffGravatar Benoit Jacob2008-06-30
| | | | | - some temporary fix to get a +50% improvement from vectorization until we have vectorisation for comparisons and redux
* * 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
* fix little bug in computation of max_iterGravatar Benoit Jacob2008-06-29
|
* improve greatly mandelbrot demo:Gravatar Benoit Jacob2008-06-29
| | | | | | | - much better coloring - determine max number of iterations and choice between float and double at runtime based on zoom level - do draft renderings with increasing resolution before final rendering
* * 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 !
* add mandelbrot demoGravatar Benoit Jacob2008-06-28
|
* fix breakage from my last commitGravatar Benoit Jacob2008-06-28
|
* * update CMakeLists, only build instantiations if TEST_LIB is definedGravatar Benoit Jacob2008-06-27
| | | | | * allow default Matrix constructor in dynamic size, defaulting to (1, 1), this is convenient in mandelbrot example.
* fix a couple of issues in the new Map.hGravatar Benoit Jacob2008-06-27
|
* * rework Map, allow vectorizationGravatar Benoit Jacob2008-06-27
| | | | | | | | * rework PacketMath and DummyPacketMath, make these actual template specializations instead of just overriding by non-template inline functions * introduce ei_ploadt and ei_pstoret, make use of them in Map and Matrix * remove Matrix::map() methods, use Map constructors instead.
* 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
* change derived classes methods from "private:_method()"Gravatar Benoit Jacob2008-06-26
| | | | | | | | to "public:method()" i.e. reimplementing the generic method() from MatrixBase. improves compilation speed by 7%, reduces almost by half the call depth of trivial functions, making gcc errors and application backtraces nicer...
* * 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.
* make use of ei_pmadd in dot-product: will further improve performanceGravatar Benoit Jacob2008-06-24
| | | | on architectures having a packed-mul-add assembly instruction.
* * vectorize dot product, copying code from sum.Gravatar Benoit Jacob2008-06-24
| | | | | | | | | | | | | | | * make the conj functor vectorizable: it is just identity in real case, and complex doesn't use the vectorized path anyway. * fix bug in Block: a 3x1 block in a 4x4 matrix (all fixed-size) should not be vectorizable, since in fixed-size we are assuming the size to be a multiple of packet size. (Or would you prefer Vector3d to be flagged "packetaccess" even though no packet access is possible on vectors of that type?) * rename: isOrtho for vectors ---> isOrthogonal isOrtho for matrices ---> isUnitary * add normalize() * reimplement normalized with quotient1 functor
* * add ei_pdiv intrinsic, make quotient functor vectorizableGravatar Benoit Jacob2008-06-23
| | | | * add vdw benchmark from Tim's real-world use case
* optimize linear vectorization both in Assign and Sum (optimal amortized perf)Gravatar Gael Guennebaud2008-06-23
|
* 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 !
* quick temporary fix for a perf issue we just identified withGravatar Benoit Jacob2008-06-23
| | | | | vectorization.... now the sum benchmark runs 3x faster with vectorization than without.
* add benchmark for sumGravatar Benoit Jacob2008-06-23
|
* split sum away from redux and vectorize it.Gravatar Benoit Jacob2008-06-23
| | | | | | (could come back to redux after it has been vectorized, and could serve as a starting point for that) also make the abs2 functor vectorizable (for real types).
* * implement slice vectorization. Because it uses unalignedGravatar Benoit Jacob2008-06-22
| | | | | | | | | packet access, it is not certain that it will bring a performance improvement: benchmarking needed. * improve logic choosing slice vectorization. * fix typo in SSE packet math, causing crash in unaligned case. * fix bug in Product, causing crash in unaligned case. * add TEST_SSE3 CMake option.