CUDA まとめ
CUDAのメモリについて
グローバルメモリはGPU上どこからでも見えるがメモリアドレスが低速なメモリ
シェアードメモリは同一ブロックからしかみえないが高速に読み書きができるメモリ
コンスタントメモリは読み込み専用だがグラオーバルメモリと同様のスレッドから見える高速なメモリ。
CUDAの性能劣化をひきおこす特徴
warp divergence
実際のcudaスレッドの処理は連続したIDを持つ32スレッドを1グループ(ワープと呼ぶ)とし、ワープ単位で同一命令を実行するGPUの特徴により発生するオーバーヘッドである。同一ワープ内のスレッドが異なる命令を実行することをワープダイバージェンスと呼ぶ。
coalesed memory access
スレッドIDとアクセスするメモリアドレスが不連続な場合に負荷が発生する。特に連続したIDを持つスレッドが連続したメモリ番地へアクセスすることで、高速なデータ転送が実行できる。