マルチコアと同期
並列プログラムで、コアの数を増やしても性能が思うように伸びない原因として当てはまらないものはどれか。
- Aロックの待ちなど、スレッドどうしの同期が多いこと
- Bスレッドごとの仕事の量に大きな偏りがあること
- C各スレッドが自分専用のデータだけを読み書きしていること
答えと解説を見る
正解:C. 各スレッドが自分専用のデータだけを読み書きしていること
並列化の効果を妨げる主な原因には、並列にできない部分(アムダールの法則)、ロックやバリアによる待ち、共有データや偽共有によるキャッシュラインの行き来、仕事の偏り、メモリ帯域の不足などがあります。各スレッドが自分専用のデータだけを扱うなら、ほかのスレッドとの通信や待ちが生じないので、理想的な並列化に近づきます。
- A. 同期の待ちは伸びを妨げる代表的な原因です。
- B. 仕事の偏りは、遅いスレッドを待つ時間を生みます。
- C. 正しい。専用のデータだけなら、伸びを妨げません。