GPUプログラミング
GPUで2つの大きな配列の要素ごとの足し算(c[i] = a[i] + b[i])を行うとき、性能を主に決めるものはどれか。
- Aメモリの帯域(1要素あたり12バイトを読み書きするのに対し、計算は足し算1回だけなので)
- B演算器の数
- Cクロックの周波数だけ
答えと解説を見る
正解:A. メモリの帯域(1要素あたり12バイトを読み書きするのに対し、計算は足し算1回だけなので)
floatの足し算1回につき、aとbを4バイトずつ読み、cに4バイト書くので、12バイトの転送で1回の計算です。GPUは1秒間に何十兆回も計算できますが、メモリの帯域は数TB/sほどなので、この処理は帯域で上限が決まります。こうした処理を速くするには、データの読み書きの回数を減らす、複数の処理を融合して途中の結果をメモリに書かない、などが有効です。
- A. 正しい。演算強度が低い、メモリ律速の処理です。
- B. 演算器は待っている時間がほとんどです。
- C. 周波数を上げても、メモリが追いつきません。