問題タブ [gpu-warp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - ワープ発散を避ける
T[N]
次のように、シフトの値を制御するブール 1D 配列があります。
**a
: グローバル メモリ内の行列へのポインターの配列。取得するためn*n
に、各行列a
が shift*Identity をサブストラクチャする必要があります。
私は持っている:
shift の値は T[i]==true の場合は T によって制御されます => shift=shift1 else shift=shift2;
これにより、ワープ発散が発生し、コードが遅くなります。上記のループのワープ発散を回避するトリックはありますか?
cuda - スレッドを CUDA の特定のワープに明示的にマップする方法はありますか?
たとえば、特定のスレッドが同じワープにある方がよいように、CUDA プログラムで動的分析が行われたとします。
たとえば、1024 個の cuda スレッドと 32 のワープ サイズがあるとします。動的分析の結果、スレッド 989、243、819、...、42 (リストされている合計 32 個のスレッド) が同じワープ上にあることがわかります。コードの実行にほとんどまたはまったく相違がないため、これらは同じワープにある必要があると判断しました (CUDA プログラムの動的解析を実行するときに、必ずしも同じワープにあるとは限りません)。
CUDA でスレッドを制御してスケジューリングをワープする方法はありますか? そうでない場合、この明示的なワープ スケジューリングを提供する別の GPU プログラミング言語はありますか。そうでない場合、何ができるでしょうか (おそらく、この問題を解決するための非常に低レベルのアプローチでさえ)? ハードウェア レベルでワープ スケジューリングが行われない限り、CUDA がおそらくどのように実装されたのか、この最後の質問に対する答えが少なくともあることを願っています。ありがとう!