GPUプログラミング
GPUで実行すると効率が悪くなりやすい処理はどれか。
- A連結リストを先頭から1つずつたどりながら、各要素の値で次の動作を変える処理
- B2つの大きな配列の要素ごとの足し算
- C大きな画像の全画素の明るさを2倍にする処理
答えと解説を見る
正解:A. 連結リストを先頭から1つずつたどりながら、各要素の値で次の動作を変える処理
連結リストは、次の要素の場所が前の要素を読むまで分からないので、並列にたどれません。さらに値によって動作が変わると、同じ命令で動くスレッドの束の中で分岐が分かれ、効率が下がります。メモリの場所もばらばらで、まとめて読むこともできません。GPUに向くのは、要素ごとに独立で、同じ処理を続けたアドレスのデータに行う仕事です。
- A. 正しい。並列にできず、分岐も多くなります。
- B. 要素ごとに独立なので、GPUに向いています。
- C. 画素ごとに独立なので、GPUに向いています。