タグ

SIMDに関するrydotのブックマーク (13)

  • SIMD化とは何か / Basics of SIMD

    SIMD化の簡単な説明

    SIMD化とは何か / Basics of SIMD
    rydot
    rydot 2020/04/29
  • x86/SIMD Intrinsicとヘッダファイル対応表 - Qiita

    x86(x86_64)アーキテクチャSIMD拡張命令セットと、組み込み関数(intrinsic)ヘッダファイルの対応表。関数検索は Intel Intrinsics Guide がオススメ。 includeヘッダ SIMD命令セット

    x86/SIMD Intrinsicとヘッダファイル対応表 - Qiita
    rydot
    rydot 2019/04/02
  • introdunction to SIMD programming - primitive: blog

    Unite 2015 Tokyo の講演で詳細を話せなかったのが心残りだったので、大量のオブジェクトの更新処理についてこの場で書いてみます。 主に C++ で、簡単なパーティクルエンジンを作り、それを SIMD を用いて高速化する手順を解説します。 話を簡単にするため、以下の前提を設けます。 ・x86 環境のみ考慮 ・パーティクルは位置と速度のみを保持 ・パーティクル同士の相互衝突は総当たりで計算 総当たりなので超遅いですが、実装は容易で SIMD による恩恵を受けやすく、題材として手頃です。 この記事の中で引用されているソースの元は こちら、ビルド結果 (上のスクリーンショットのデモプログラム) は こちら になります。 相互衝突するパーティクルを実装する場合、お互いの距離を計算し、当たっていたらめり込み具合に応じて押し返す、というのがよくある実装だと思います。まずはそれをストレートに

    introdunction to SIMD programming - primitive: blog
  • Intel® Implicit SPMD Program Compiler

    An open-source compiler for high-performance SIMD programming on the CPU and GPU Overview ispc is a compiler for a variant of the C programming language, with extensions for "single program, multiple data" (SPMD) programming. Under the SPMD model, the programmer writes a program that generally appears to be a regular serial program, though the execution model is actually that a number of program i

  • Intel® Intrinsics Guide

    Using Intel.com Search You can easily search the entire Intel.com site in several ways. Brand Name: Core i9 Document Number: 123456 Code Name: Emerald Rapids Special Operators: “Ice Lake”, Ice AND Lake, Ice OR Lake, Ice* Quick Links You can also try the quick links below to see results for most popular searches. Product Information Support Drivers & Software

    Intel® Intrinsics Guide
  • みんな意外とauto vectorizationとか信用してて愕然とする

    http://d.hatena.ne.jp/shi3z/20150422/1429659958 の反論見てると、「いまどきはコンパイラがSIMDにしてくれるし」みたいなのがそれなりにあるのだけど、僕は基的に自動ベクトル化とか信用していないので、私は考えが古い人間なのかと思って結構ショックだった。 (機械語知ってればデバッグ技の幅がかなり広がるので、可能なら機械語まで知っておいたほうがいいというのには大体同意できる。その話はまた気が向いたら…) 以下、自動SIMD化を信用できない理由について書いておく。 遅くなる場合がある まだプロファイルフィードバック技術が完成していない現代では、コンパイラがループ回数わからないから、3回とか7回のループだと遅くなる場合があるんだよな。 #include <x86intrin.h> #include <stdio.h> void __attribute_

    みんな意外とauto vectorizationとか信用してて愕然とする
    rydot
    rydot 2015/05/16
  • Boost.SIMDによる実用的なSIMDアクセラレーション

    1. Boost.SIMDによる実用的な SIMDアクセラレーション Mathias Gaunard Joël Falcou Jean-Thierry Lapresté MetaScale Boostcon 2011 翻訳 : 高橋 晶(faithandbrave@gmail.com) 2. コンテキスト コンテキスト NT2からBoost.SIMDへ • 昨年、我々はハイパフォーマンスな数値計算のための、Matlabライクな ProtoベースのライブラリであるNT2のプレゼンテーションを行った • Boost.SIMDは、SIMDサブコンポーネント抽出のライブラリ • GSoCプロジェクトが、レビュー準備のために今年の夏に行われる予定 • ここでは、どんな提案をするのかについて話す 4. SIMDの抽象化 SIMDの抽象化はなぜ必要なのか? x86ファミリー • MMX 64-bit f

    Boost.SIMDによる実用的なSIMDアクセラレーション
  • Why is SSE scalar sqrt(x) slower than rsqrt(x) * x?

    I've been profiling some of our core math on an Intel Core Duo, and while looking at various approaches to square root I've noticed something odd: using the SSE scalar operations, it is faster to take a reciprocal square root and multiply it to get the sqrt, than it is to use the native sqrt opcode! I'm testing it with a loop something like: inline float TestSqrtFunction( float in ); void TestFunc

    Why is SSE scalar sqrt(x) slower than rsqrt(x) * x?
  • SSE2による浮動小数演算の仕組みと検証

    はじめに x86が持ち合わせる汎用レジスタ(eax、ecxなど…)を覚えているでしょうか。これらを用いれば、32ビットまでの整数型の演算を行うことが可能です。ほとんどのプログラムはこれらの汎用レジスタを活用することでネイティブコード化を行うことが可能ですが、実は一つ二つ、不可能な問題もあるのです。 それは浮動小数演算。ネイティブコードで浮動小数演算を行う場合、汎用レジスタを使うわけにはいきません。そもそもx86の汎用レジスタは32ビットまでしか表現できないため、倍精度浮動小数点(64ビット)を扱うことができません。かろうじて単精度浮動小数点であれば汎用レジスタで値を保有することができますが、肝心な浮動小数点用の命令がx86の汎用レジスタ用には用意されていないのです。 そこで登場するのがSSE2になります。これらは64ビット・128ビットなど、汎用レジスタでは表現不可能な整数演算を高速に行っ

    SSE2による浮動小数演算の仕組みと検証
    rydot
    rydot 2012/12/03
  • advanced optimization FPU

    FPUレジスタは通常の汎用レジスタと違って8個まで値を格納できるスタック形式です. スタックトップをstと書き, 以下st(1),st(2),...st(7)と表記します. スタック形式なので, 通常はメモリから直接st(i) (i>0) に読み込むことは出来ません. メモリの値を一端stにpush (読み込み) してからst(i)に移します. 9個以上pushすると例外が発生するので注意します. 不要になった値はstから順にpopして消去します. レジスタの値をメモリに書き込む時も同様で, 通常はstの値だけしか書き込めません. 尚, 汎用レジスタと違ってFPU命令には即値モードはありません. 全てアドレスを指定して値のやり取りをします.

  • 楓 software: 平方根の逆数の高精度化

    « 逆数の高精度化 | メイン | テクスチャマッピングの高速化 その3 » 2008年02月23日 x86 SIMD Technique:: 平方根の逆数の高精度化 Tweet    @jin1016をフォロー 平方根の逆数を求める命令として、_mm_rsqrt_ss / _mm_rsqrt_ps がある。 でも、これは 11bit 精度しかない ( 11bit 精度だと、10 進数で3桁程度 ) 。 と言うことで、11bit 精度で得られた平方根の逆数の近似値をニュートン-ラフソン法 ( Newton-Raphson ) を用いて高精度化する。 SSE のソースコードは以下。 // 22bit 精度で平方根の逆数を求める。 // 1/√x = 3/2 * x0 - 1/2 * a * x0^3 を用いる inline __m128 m128_rsqrt_22bit_ps( const 

  • IA-32 SIMDの扉

    SIMD命令およびアセンブラの基礎 SIMDとは 用語集 開発環境 アセンブラの基礎知識 x87 FPU命令を使用したプログラミング CPUの識別 メモリアドレスのアライメント ラップアラウンド算術と飽和算術 SIMD命令セットの分類と歴史 SIMD命令セットの記述方法 SIMD命令セットの概要 MMX命令セットの概要 SSE命令セットの概要 SSE2命令セットの概要 SSE3命令セットの概要 SSE4命令セットの概要 命令リファレンス データ転送命令 算術命令 比較命令 論理演算命令 シフト命令 シャッフル命令 パックおよびアンパック命令 変換命令 挿入および抽出命令 ブレンド命令 丸め命令 キャッシュ制御命令 その他の命令 プログラミング例 画像処理 音声信号処理 参考資料 参考資料 トップSIMDの扉

  • 【インフォシーク】Infoseek : 楽天が運営するポータルサイト

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

    rydot
    rydot 2008/09/10
  • 1