NSIMD is vectorization library. More specifically it is a wrapper around SIMD instruction sets such as Intel SSE, AVX, AVX-512, ARM NEON, SVE…
All major compilers use of SIMD instruction sets. It is known as autovectorization. But compilers are bad at autovectorizing code. Really simple pieces of code are easy to write that all compilers are unable to autovectorize. Autovectorization is an optimization step in compilers and really depends on the compiler manufacturer, version, … Therefore it is hard to have a predictible execution time for a given piece of code.
Writing explicit SIMD code is necessary in order to reach peak performances and have a predicible behavior accross compilers and compiler versions. But writing SIMD code by hand is cumbersome. It makes code almost unreadable, non-portable and therefore really difficult to maintain.
NSIMD tackles all these problems by offering several portable APIs in C89, C++98, C++11 and beyond that work on many compilers. It guaranties the developer to have portable, predicitible and easy to write and read code.