[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

SIMDに関するyou21979のブックマーク (5)

  • インテル® コンパイラーによる AVX 最適化入門: 第1回 AVX とは | iSUS

    マスク付きロード命令およびストア命令の追加 vmaskmov はマスク付きのロードまたはストアを行う命令です。以下のような条件分岐のあるプログラムにおいて、コンパイラーは b[i] へのアクセスを安全に行うことができるかどうか(すなわち、b[i] が常に参照可能なメモリを指しているか)判断不可能なため、従来は自動ベクトル化を断念するか、その部分だけスカラーのコードで(非効率的に)実行していました。 マスクつきロード命令により、b[i] へのメモリーアクセスを a[i]>0 の条件が真の時にだけベクトル実行することが可能になり、自動ベクトル化においても効率よく実行することができるようになりました。 void foo(float *restrict a, float *b, int n) { int i; for(i=0; i<n; i++){ if (a[i]>0) { a[i] += b[

    インテル® コンパイラーによる AVX 最適化入門: 第1回 AVX とは | iSUS
  • #pragma SIMD を使用してループをベクトル化するための条件 | iSUS

    この記事は、インテル® デベロッパー・ゾーンに公開されている「Requirements for Vectorizing Loops with #pragma SIMD」(https://software.intel.com/en-us/articles/requirements-for-vectorizing-loops-with-pragma-simd) の日語参考訳です。 インテル® アーキテクチャー上でパフォーマンスを向上するにはループのベクトル化が重要であり、SIMD ベクトル長が増えるにしたがってその重要性は増しつつあります。インテル® C/C++ コンパイラーおよびインテル® Fortran コンパイラーにより自動ベクトル化されるループの種類は、「ループをベクトル化するための条件」で説明されています。『インテル® コンパイラー・ユーザー・リファレンス・ガイド』および「インテル

    #pragma SIMD を使用してループをベクトル化するための条件 | iSUS
    you21979
    you21979 2015/12/23
    「ベクトル化しなければ死ぬ (vectorize or die)」
  • コンパイラー最適化入門: 第1回 SIMD 命令とプロセッサーの関係 | iSUS

    この OS のシステム要件が求めるプロセッサーが、SIMD 命令を使用する最適化オプションに影響します。例えば Windows Vista Home Basic までをサポートすると想定した場合、800MHz 以上のプロセッサーが求められていますから、対象となるプロセッサーは一部の Pentium III(450MHz – 1.4Gseisei Hz)と Pentium 4(1.3GHz – 3.8GHz)以上となります。まあ、少しぐらい動作クロックが違っても問題はないのですが。 この2つのプロセッサーには、サポートする SIMD 命令セットに違いがあり(Pentium III – SSE、 Pentium 4 – SSE2)、コンパイラーは対象とするプロセッサーが実行できる命令セットを使用したバイナリーを生成しなければいけません。この場合、SSE2 を利用したバイナリーを生成すると、Pe

    コンパイラー最適化入門: 第1回 SIMD 命令とプロセッサーの関係 | iSUS
  • SIMD型について - JS.next

    概要 新しいプリミティブ型であるSIMD型及びAPIがV8で実装されてきている。 SIMDとは、複数の数値を並べて1つの値としたようなデータ型である。 これはCPUによって効率良くサポートされているデータ型であり、 1 + 2 -> 3 をするように [ 1, 2, 3, 4 ] + [ 2, 3, 4, 5 ] -> [ 3, 5, 7, 9 ] を1回の演算ですることができる。 つまり、沢山の数値を扱う場面でSIMD型を利用することで、何倍ものパフォーマンス向上が期待できる。 (※WASMに入ることとなり、ESからは一旦取り除かれました。) 実装される型 float32x4 32bit浮動小数点型を4つ並べた128bitのデータ型 float32はJSの通常のnumberであるところのfloat64より精度が低い int32x4 32bit符号付き整数型を4つ並べた128bitのデータ

    SIMD型について - JS.next
  • HTTPパーサにおけるSSE4.2最適化の威力と注意点 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、サイボウズ・ラボの光成です。 PicoHTTPParserは@kazuhoさんたちが開発している高速なHTTPパーサです。 同じ作者によるHTTPサーバH2Oにも使われています。 11月4日の開発ブログによると、その時点でNode.jsなどに使われているhttp-parserの10倍程度の速度を誇るそうです(現在はhttp-parserも速度向上しその差は縮まりました。それでも4倍以上の差があるようです)。 該当ブログにはその高速化のためのノウハウが書かれていて大変興味深いです。ただIntel系CPUに搭載されているSIMD命令は用いられていませんでした。今回、@kazuhoさんと一緒に文字列処理専用のSSE4.2を用いることで1.7~1.9倍の高速化を達成しました(Improving Parser Performance using SSE Instructions (in

    HTTPパーサにおけるSSE4.2最適化の威力と注意点 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • 1