Eigen (C++ library): Difference between revisions
No edit summary |
|||
Line 12: | Line 12: | ||
*<code>-DEIGEN_NO_DEBUG</code> Set preprocessor define for eigen optimizations | *<code>-DEIGEN_NO_DEBUG</code> Set preprocessor define for eigen optimizations | ||
*<code>-fopenmp</code> OpenMP parallel execution | *<code>-fopenmp</code> OpenMP parallel execution | ||
===Data to Eigen=== | |||
You can use <code>Eigen::Map</code> to create an eigen view for your existing data.<br> | |||
<syntaxhighlight lang="cpp"> | |||
</syntaxhighlight> | |||
==Math== | ==Math== |
Revision as of 14:16, 25 March 2020
Eigen is a template header-only C++ linear algebra library. It is one of the fastest and most popular.
Usage
Compilation
Reference
For optimal performance, I recommend using the following flags when compiling.
GCC
-mfma
Enable fused multiply add-mavx2
Enable avx2 vector instructions-DEIGEN_NO_DEBUG
Set preprocessor define for eigen optimizations-fopenmp
OpenMP parallel execution
Data to Eigen
You can use Eigen::Map
to create an eigen view for your existing data.
Math
SVD
Eigen comes with a few SVD implementations in its SVD Module.
If you only need low-rank approximations then you may be interested in randomized SVD.
This can be 10-20x faster when calculating low-rank approximations on large matrices.
Github Implementation
Finding structure with randomness paper
Facebook Blog post