C/C++

AVX で整数を SIMD 演算するには Intel AVX2 からのようですね

整数を SIMD 演算する方法 今まで浮動小数点型がメインだったのでたまには整数型の話です.ただし,Intel AVX 命令を使って整数型を SIMD 演算するには Intel AVX2 が必要であり,Intel AVX2 は次世代 CPU である Haswell に搭載のようなのでまだ使用するこ…

AVX と SIMD 演算と最大値の計算 - その2 -

前回 (2012-03-15 - kawa0810の日記) の続きです.前回のソースコードの問題点と対処方法です. 前回のコードの問題点 バグが混入している部分(単精度) ... auto vx = reinterpret_cast<__m256 const*>( x ); auto vmax = vx[0]; auto max = reinterpret_cast<float*>( &vmax ); .</float*></__m256>…

AVX と SIMD 演算と最大値の計算 - その1 -

AVX 命令を用いる SIMD 演算で最大値を求める 今回は AVX 命令を用いる SIMD 演算で最大値を求めてみます.考え方は前回の総和計算(2012-03-11 - kawa0810の日記)に近いと思われます. 最大値を求める AVX 命令は 単精度 (float) : _mm256_max_ps(__m256 ,…

AVX 命令を用いる SIMD 演算で総和を計算してみる

AVX 命令を用いる SIMD 演算で総和を計算する 今回は AVX 命令を用いる SIMD 演算で総和を計算してみます.SIMD 演算や AVX 命令については下記の URL を参照してください. 2012-03-03 - kawa0810の日記 さて,自分で総和計算のコードを書く場合は以下のよ…

Intel AVX を使用して SIMD 演算を試してみる - その5 - (最終回)

2012-03-06 - kawa0810の日記 の続きです. 今回は Fused Multiply Add (FMA) 命令についてです.ただし,現在 (2012/3/7日) 発売されている Sandy Bridge では FMA 命令は未対応のようですので注意してください. Why no FMA in AVX in Sandy Bridge? FMA …

Intel AVX を使用して SIMD 演算を試してみる - その4 -

2012-03-05 - kawa0810の日記 の続きです. 今回はその2 (2012-03-04 - kawa0810の日記) で紹介した AVX 命令を試します. 計算する問題 今回は SIMD 演算を用いてベクトルのスカラ倍 を計算する方法を考えます.ただし, はベクトルの要素数 = 2.0 とします…

Intel AVX を使用して SIMD 演算を試してみる - その3 -

2012-03-04 - kawa0810の日記 の続きです. 今回は SIMD 演算を行う際に問題となる端数の計算方法です. SIMD 演算を行う際に発生する端数の処理方法 AVX 命令を用いる SIMD 演算は 128bit 単位もしくは 256bit 単位で計算を行うため任意の長さのデータを計…

Intel AVX を使用して SIMD 演算を試してみる - その2 -

2012-03-03 - kawa0810の日記 の続きです. 今回は AVX 命令の組み込み関数の説明等です. データ型 AVX 命令で使用できる型は主に整数 (int),単精度 (float),倍精度 (double) です.また,AVX 命令は SSE 命令の拡張であるため 256bit 単位の演算だけでな…

Intel AVX を使用して SIMD 演算を試してみる

SIMD 演算と Intel AVX Single Instruction Multiple Data (SIMD) 演算とは1回の命令で複数のデータを同時に処理する演算です.近年の CPU には SIMD 演算を行うことができる SIMD 演算器が搭載されており,Intel 社の CPU ならば Streaming SIMD Extensions…