Vc: portable, zero-overhead SIMD library for C++
The use of SIMD is becoming increasingly important with modern CPUs. The SIMD instruction sets are being improved: new instructions are added as well as performance improvements relative to the scalar instructions. The next generations of CPUs will double the vector width. Neglecting SIMD in high-performance code thus becomes more expensive, compared to the theoretical performance of CPUs.
The use of SIMD instructions is not easy. C/C++ compilers support some extensions to ease development for SSE and AVX. Commonly intrinsics are the available extension of choice. Intrinsics basically map every SIMD instruction to a C function. The use of these intrinsics leads to code which is hard to read and maintain in addition to making portability to other vector units complicated.
Vc is a free software library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets. Thus an application written with Vc can be compiled for
Development happens at code.compeng.uni-frankfurt.de. You can find an issue tracker, wiki and forums there.
Vc is released under the LGPL 3. Since Vc is a template library this gives you a lot of freedom. For the details you can take a look at the Licensing FAQ of Eigen which is a C++ template library released under the LGPL 3 or GPL 2.