CUDAのメモリモデルでは、
- レジスタ
- Shared memory
- Local memory
- Constant memory
- Texture memory
- Global memory
の種類のメモリが提供されています。
この中で一番、資料内で説明が少ない(と思われる)のがレジスタです。
このレジスタについて、自分用のメモを残す。
- GPUにおいて最も高速なメモリ空間
- カーネルで特に型修飾子を指定しなかった自動変数はレジスタに格納される
- 各スレッドに対してプライベート
- SMのアクティブワープ間で分割される希少なリソース
- Keplerではスレッド1つあたりの上限が255個
- カーネルの使用するレジスタの数がハードウェア制限を超える場合、超えた分はローカルメモリに退避(Register spill)。パフォーマンスに悪影響