今年の1月に発表されたIntelの新CPU「Sandy Bridge」から搭載された新機能に、「AVX」というものがあります。AVXを用いると、256ビットのレジスタを用いて、例えばdouble型の計算を4つ同時に行うなど高速に演算をすることができます。 AVXを使うためには、専用のコードを書かなければいけませんが、C++では単体で(アセンブラを用いずに)AVX対応のコードを書くことができるので、いろいろ遊んでみました。 コードの作法 ・#include "immintrin.h" を記述 AVXを使うための関数がここに記述されているので、includeします。 ・変数のalignment 変数の前に「_declspec(align(32))」というおまじないを書いておけば、自動で境界が32バイト境界になるように調整されます。このおまじないがあると、わりと何も考えなくてもAVX命令を使える