Hi ! It will be a very short post about Boost SIMD (I am sick).
SIMD is a pretty nice feature when you need to get the max performances from your code but it is tough to implement effectively and the portability is a nightmare.
Boost SIMD is a library that tries to allow high performances thanks to Template Meta-programming while also enabling a good portability. This is really an interesting library I hope it will come soon part of Boost.
There are several Template Meta-programming Matrix Libraries that are having such kind of SIMD code, but it is always tailored for their need, while having such generic library is really helpful for anyone.
I performed a few tests for R&D purpose on my software for a small set of kernels really causing me issues to code while with this library it was easy, performance was good and the clarity of the code is super important. I am using reductions, bitwise operations and few other strange stuff that are only present in the library: it is just to give an idea of the amount of love that has been put inside it. Also, if some features present on a given CPU and instruction set is not supported, they are emulated.
As said early it will be really important to have such library in standard in the future versions of Boost.
- Git Hub: https://github.com/NumScale/boost.simd (It looks like they killed the commit history with the last release)
- Documentation : https://developer.numscale.com/bsimd/documentation/v1.17.6.0/
- Tutorials: https://developer.numscale.com/bsimd/documentation/v1.17.6.0/tutorials.html
- Presentation at CPP Conf (there are a few other videos):