Overview
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: Vector Classes¶
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- AVX
- SSE2 up to SSE4.2
- SSE4a, XOP, and FMA4
- Scalar (fallback which works everywhere)
- LRBni support disabled, waiting for MIC
Getting Vc¶
The git repository of Vc is available at git://code.compeng.uni-frankfurt.de/vc and also mirrored at http://gitorious.org/vc/vc. Tarballs of releases can be found on the Files page. A tarball of the current master branch is available from gitorious
Communication¶
There exist two mailinglists:A channel on the freenode IRC network is reserved for Vc: ##vc on freenode (via SSL)
Documentation¶
Dashboard¶
- Subprojects: Vc Benchmarks
Issue tracking
Git Repository
Members
Manager: Matthias Kretz
Developer: David Rohr, Matthias Bach, Matthias Kretz, Roberto Agostino Vitillo, Sergey Gorbunov
Reporter: Christer Stenbrenden, David Rohr, Dirk Hutter, Dominic Eschweiler, Igor Kulakov, Jan de Cuveland, Jochen Gerhard, Maksym Zyzak, Mathias Radtke, Matthias Bach, Matthias Kretz, Sebastian Kalcher, Sergey Gorbunov, Stefan Kirsch, Thorsten Kollegger, Timm Steinbeck, Timo Breitner, Torbjörn Klatt, Valery Yundin, Volker Lindenstruth
