mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
ec93a6d098200c2b48bee1f0f0be7bb25588a085
The goal of this MR is to implement a generic SIMD backend (packet ops) for Eigen that uses clang vector extensions instead of platform-dependent intrinsics. Ideally, this should make it possible to build Eigen and achieve reasonable speed on any platform that has a recent clang compiler, without having to write any inline assembly or intrinsics. Caveats: * The current implementation is a proof of concept and supports vectorization for float, double, int32_t, and int64_t using fixed-size 512-bit vectors (a somewhat arbitrary choice). I have not done much to tune this for speed yet. * For now, there is no way to enable this other than setting -DEIGEN_VECTORIZE_GENERIC on the command line. * This only compiles with newer versions of clang. I have tested that it compiles and all tests pass with clang 19.1.7. https://clang.llvm.org/docs/LanguageExtensions.html#vectors-and-extended-vectors Closes #2998 and #2997 See merge request libeigen/eigen!2051 Co-authored-by: Rasmus Munk Larsen <rmlarsen@google.com> Co-authored-by: Antonio Sánchez <cantonios@google.com>
Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
For more information go to http://eigen.tuxfamily.org/ or https://libeigen.gitlab.io/docs/.
For pull request, bug reports, and feature requests, go to https://gitlab.com/libeigen/eigen.
Languages
C++
85.6%
Fortran
8.9%
CMake
2%
C
1.6%
Cuda
1.2%
Other
0.6%