マルチコアと同期
並列プログラムで使われるバリア同期の説明として正しいものはどれか。
- A一度に1つのスレッドだけが入れる部分を作る
- Bすべてのスレッドがその地点に到着するまで、先に着いたスレッドを待たせる
- Cメモリ操作の順番の入れ替えを止める命令
答えと解説を見る
正解:B. すべてのスレッドがその地点に到着するまで、先に着いたスレッドを待たせる
シミュレーションなどでは、全スレッドが1ステップ分の計算を終えてから次のステップに進む必要があります。バリア同期では、各スレッドはバリアの地点で止まり、最後のスレッドが到着した時点で全員が進みます。計算量に偏りがあると、速いスレッドが遅いスレッドを待つ時間が増えるので、仕事を均等に分けることが性能のために重要です。
- A. それはロックによる排他です。
- B. 正しい。段階ごとに全員の足並みをそろえます。
- C. それはメモリバリアで、名前は似ていますが別物です。