Hacker News new | ask | show | jobs
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.

1 comments

> Eigen is a super complicated, template-heavy library

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).