性能評価・プロファイリング

並列プログラムのスケーラビリティを調べるときの方法として最も適切なものはどれか。

  1. A最大のコア数で1回だけ測る
  2. Bスレッドやコアの数を1、2、4、8…と増やしながら実行時間を測り、速度向上率がどう伸びるかをグラフにする
  3. C1つのコアだけで何回も測る
答えと解説を見る

正解:B. スレッドやコアの数を1、2、4、8…と増やしながら実行時間を測り、速度向上率がどう伸びるかをグラフにする

コアの数を変えながら速度向上率を測ると、理想的にはコアの数に比例して伸びますが、実際には並列にできない部分、同期や通信、メモリ帯域の不足などで、ある数から伸びが鈍くなります。どこで伸びが止まるかを見れば、何が制約になっているかの手がかりが得られます。比べる基準は、並列化していない最も速い逐次のプログラムにするのが公平です。

  • A. 1回だけでは、伸び方が分かりません。
  • B. 正しい。どこで伸びが止まるかが分かります。
  • C. 並列の効果は分かりません。
この分野を解く 分野ページへ

性能評価・プロファイリングのほかの問題

  1. 8コアで並列に実行したところ、1コアのときより6倍速くなった。並列効率はいくらか。
  2. 性能を測るための仕組みを入れたことで、測りたいプログラムの動きそのものが変わってしまう現象を何と呼ぶか。
  3. プログラムの性能を改善するときの進め方として最も適切なものはどれか。
  4. 大量のデータを処理するプログラムで、最も大きな速度向上が得られる可能性が高い改善はどれか。
  5. ソフトウェアの開発で、変更のたびにベンチマークを自動で実行して結果を記録しておく目的として正しいものはどれか。