タグ

SIMDに関するnakaha-tのブックマーク (3)

  • From IA-32 to avx-512

    3. • Intel初の32bit CPU • 8個の32bit汎用レジスタ eax, ebx, ecx, edx, esi, edi, ebp, esp • もともと8個の16-bit汎用レジスタを拡張したもの • eaxの下位16bitがax • axの下位8bitがal • レジスタ間はmovで移動 • これが全ての"始まり"かもしれない i386(Intel 386) eax ax alah ; eax = 0x99887766のとき mov al, 12h ; eax = 0x99887712, ax = 0x7712 mov ah, 34h ; eax = 0x99883412, ax = 0x3412 3/30 4. • 命令のフォーマットの一つ • 8個のレジスタなので3bit • src(ソース)とdst(デスティネーション)それぞれ必要 • レジスタ間のときはmod =

    From IA-32 to avx-512
  • Intel AVX を使用して SIMD 演算を試してみる - kawa0810 のブログ

    SIMD 演算と Intel AVX Single Instruction Multiple Data (SIMD) 演算とは1回の命令で複数のデータを同時に処理する演算です.近年の CPU には SIMD 演算を行うことができる SIMD 演算器が搭載されており,Intel 社の CPU ならば Streaming SIMD Extensions (SSE) を用いることで SIMD 演算を行うことが可能です.SSE は CPU に搭載されている 128bit レジスタを用いて演算を行うため単精度データならば4つ,倍精度データならば2つずつ演算を行うことができます.また,近年 SSE 後継の SIMD 拡張命令として Intel Advanced Vector eXtentions (AVX) が登場しました.AVX は第2世代 Intel Core i シリーズのプロセッサ (Sand

    Intel AVX を使用して SIMD 演算を試してみる - kawa0810 のブログ
  • fast strlen and memchr by SSE2 (mitsunari@cybozu labs)

    strlen()とmemchr()のSIMD版を作ってみました. 今回は最速よりもお手軽さを重視したのでアセンブリ言語ではなくintrinsic関数を使っています.そのためVisual Studio 2008, gcc 4.xの両方でコンパイルでき32-bit, 64-bit OS上で動作します. WindowsLinuxでのみ確認していますが恐らくIntel Mac OS X上でも動作するでしょう(sample source). ベンチマークはランダムな長さの文字列の平均長(average length)を変化させつつ取りました.数値は1byteあたりにかかった処理時間比で小さいほど速いことを表します. strlenが3種類(ANSI, BLOG, SSE2)とmemchrが2種類(ANSI, SSE2)あります.BLOGというのは今回試してみようというきっかけになったCounting

  • 1