GPUプログラミング
GPUのSMに命令を出す仕組みが1つあり、1サイクルに1つのワープから命令を出せるとする。各ワープは「20サイクル分の命令を出したあと、メモリの読み込みの結果が届くまで400サイクル待つ」ことを繰り返す。ワープの切り替えに時間がかからないとき、メモリの待ちによる空き時間をなくす(レイテンシ隠蔽)のに必要なワープの数は最低いくつか。
- A21個
- B2個
- C420個
答えと解説を見る
正解:A. 21個
1つのワープは、420サイクル(20+400)ごとに20サイクルしか命令を出せません。命令を出す仕組みを休ませないには、420÷20 = 21個のワープが交代で命令を出せばよく、あるワープが400サイクル待つ間に、ほかの20個のワープが20サイクルずつ命令を出して埋めます。ワープが足りないと、待ち時間が性能に表れて演算器が遊びます。実際のGPUでは、待ちの長さや命令の並び方で必要な数が変わり、1つのワープの中で互いに依存しない命令を増やす(命令レベルの並列性)ことでも待ちを埋められます。
- A. 正しい。(20+400)÷20 = 21個です。
- B. 1つのワープの400サイクルの待ちを、別の1つのワープの20サイクルでは埋められません。
- C. 420は1つのワープの繰り返しの周期(サイクル数)で、ワープの数ではありません。