Slide 14
Slide 14 text
14
実装・使用上の注意点
• GPUカーネルのスレッドグループ番号を直接パーティション位置に対応付けないこと
• 若い番号のスレッドグループが先に起動・実行されるとは限らない
• アトミックカウンターを使って早く起動したスレッドグループから順に先頭から割り当てる
• デスクリプターの読み書きはGPU全体で共通のメモリレベルに行う必要がある
• CUDA: volatile, HLSL: globallycoherent, GLSL: coherent
• デスクリプターへの値の書き込みとステータスフラグの更新の間にはメモリフェンスが必要
• プログラム上で「値→ステータス」の順で書いてもフェンスが無いと
ステータスの更新のほうが他パーティションに対して先に可視になるかもしれない
• CUDA: __threadfence(), HLSL: DeviceMemoryBarrier(), GLSL: memoryBarrierBuffer()
• float値の加算などNon-Associativeな二項演算の場合Run-to-Run Determinismも保証されない