タグ

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

  • SIMD - primitive: blog

    職業 C++ プログラマの間では割と常識っぽいけど web 上に日語の情報があんまりない気がする話を初心者向けに解説してみる試み。想定読者はゲーム業界入る前の自分。 今回は SIMD について。 SIMD / SSE SIMD とは "Single Instruction Multiple Data" の略で、文字通り 1 命令で複数のデータを処理することです。これを使うと、例えば 4 要素のベクトル同士の各種演算を 1 命令で行うことができ、高速化を図れます。PC では PentiumIII 以降の CPUSIMD の一種 (SSE) を実装しており、近年の CPU では SSE も色々改良されています。 SSE は各種コンパイラの拡張命令 (intrinsics) を使うことで、C++ から利用することができます。今記事では VisualC++/gcc での SSE の使い方と

    SIMD - primitive: blog
  • マルチスレッドとメモリ同期 - primitive: blog

    今回はマルチスレッドプログラミングでの厄介な問題、メモリ同期について。 要するにきちんと排他制御しろという当たり前の話なんだけど、何故きちんと排他制御しないといけないのかまで深く説明してるのはあまり見ない気がします。 例 例えばこんなコードで bool g_complete = false; int g_message[100]; void foo(int i) { g_message[i/10] = 42; g_complete = true; } void bar() { while(!g_complete) { // foo() が終わるまで busy loop して待つつもり } printf("%d\n", g_message[0]); } マルチスレッドでワーカースレッドが foo() を呼び、メインスレッドが bar() で仕事が終わるのを待って結果を表示する、ということをや

    マルチスレッドとメモリ同期 - primitive: blog
  • 1