タグ

ブックマーク / i-saint.hatenablog.com (2)

  • introdunction to SIMD programming - primitive: blog

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

    introdunction to SIMD programming - primitive: blog
  • Intel ISPC & SPH on CPU - primitive: blog

    コミケに参加した方々、お疲れ様でした。 サイトの方では告知し忘れていましたが (…) 今回は落選でした。次回の冬コミは既に申し込み済みで、受かれば参加します。牛歩の歩みですが、来年 5 月までには何らかの形で完成した作品を出すつもりです。 前回の冬コミ版は SPH (流体シム) を CUDA で実装しており、ゆえに Radeon では動かないし、GeForce でも 500 系未満だと予想外に遅く、スペックの差をどう解決するかが頭が痛い問題だったんですが、現在 Intel ISPC による CPU 実装で行こうという方針に定まりつつあります。 この Intel ISPC なるものが面白いので紹介。 http://ispc.github.com/ GPGPU 的な並列プログラミングの思想を CPUSIMD で実現するプログラム言語です。SIMD の各要素 (lane) を実行単位と見立

    Intel ISPC & SPH on CPU - primitive: blog
  • 1