|
|
|
|
|
by corysama
2148 days ago
|
|
If you need to work on large matrices, Eigen is highly recommended. If you need to do a stream of custom processing in small steps, Eigen is not a good fit. Eigen is a super complicated, template-heavy library that can compile very heavyweight tasks into very efficient code (eventually). For custom work, https://github.com/VcDevel/std-simd is working it's way into the C++ standard. |
|
I agree, but that feature allows to apply optimizations by specializing these templates.
Works for both micro-optimizations (in their pbroadcast4<__m256d> they do 4 loads, on many CPUs AVX2 can do better with a single load + shuffles) and replacing large parts of Eigen (I was able to improve performance of conjugate gradient solver by moving the sparse matrix into a SIMD-optimized structure).