性能評価・プロファイリング
実行時間=命令数×CPI×サイクル時間、アムダールの法則の計算、ベンチマークの注意点、性能カウンタ、ボトルネックの切り分けを3択問題で学べます。
—あなたの正答率
0 / 50解いた問題
性能評価・プロファイリングの要点
プログラムの速さは、実行する命令の数、1命令あたりの平均サイクル数(CPI)、1サイクルの時間の掛け算で決まります。どれか1つを改善しても、ほかが悪くなれば速くはなりません。また、全体の一部だけを速くしても、残りの部分が全体の速さの上限を決めることを、アムダールの法則が教えてくれます。
性能を正しく比べるには、ベンチマークの選び方や測り方、平均のとり方に注意が必要です。CPUの性能カウンタでキャッシュミスや分岐予測ミスの回数を数え、計算とメモリのどちらが詰まっているかをRooflineモデルで見極めるなど、ボトルネックを切り分ける方法を学びます。
性能評価・プロファイリングの問題一覧(50問)
- プログラムのCPUでの実行時間を表す基本の式として正しいものはどれか。
- 10億個の命令を実行するプログラムを、平均CPIが2、クロック周波数が2 GHzのCPUで実行した。実行時間はいくらか。
- CPUの設計の変更で、クロックの周波数は1.5倍になったが、CPIも1.2倍に増えた(命令数は同じ)。実行の速さは元の何倍になるか。
- コンパイラの新しい最適化で、実行する命令の数は20%減ったが、平均CPIが10%増えた(周波数は同じ)。この最適化の効果として正しいものはどれか。
- あるプログラムの命令の割合が、整数の演算50%(CPI 1)、ロードとストア30%(CPI 2)、分岐20%(CPI 5)だった。平均CPIはいくらか。
- CPUの性能を「1秒あたりに実行できる命令の数(百万命令毎秒)」で比べるときの注意点として正しいものはどれか。
- 性能の改善を表す「速度向上率(スピードアップ)」の求め方として正しいものはどれか。
- 処理全体の50%を占める部分を4倍速くした。全体の速度向上率はいくらか(アムダールの法則)。
- 処理全体の60%を占める部分だけを速くして、全体を2倍速くしたい。その部分を何倍速くする必要があるか。
- アムダールの法則から得られる、性能の改善の進め方についての教訓として最も適切なものはどれか。
- グスタフソンの法則が示す考え方として正しいものはどれか。
- 並列計算の評価でいう「強いスケーリング」と「弱いスケーリング」の違いとして正しいものはどれか。
- コンピュータの性能をベンチマークで評価するときの考え方として最も適切なものはどれか。
- SPEC CPUのような標準のベンチマークの説明として正しいものはどれか。
- 複数のベンチマークの、基準の計算機に対する速さの比をまとめるときに、幾何平均がよく使われる理由として正しいものはどれか。
- 同じ数の命令を持つ2つのプログラムを、1つは1秒あたり1000百万命令、もう1つは500百万命令の速さで続けて実行した。全体の平均の速さはいくらか。
- 上のような小さなループで計算の速さを測ったところ、Nを大きくしても時間がほとんど0だった。最も考えられる原因はどれか。
- プログラムの実行時間を測るとき、同じ測定を何回も繰り返し、最初の数回の結果を除くことが多い理由として正しいものはどれか。
- 非常に短い処理の時間を、1回だけ測ろうとしたときの問題と、その対策の組み合わせとして正しいものはどれか。
- 実行時間の測り方のうち、「壁時計時間」と「CPU時間」の違いとして正しいものはどれか。
- サーバの性能を表すスループットとレイテンシの説明として正しいものはどれか。
- Webのサービスの応答時間を評価するとき、平均の値だけでなく99パーセンタイルの値(遅い方から1%の境目)を見ることが多い理由として正しいものはどれか。
- あるサーバに毎秒100件の要求が届き、1件の処理に平均0.2秒かかる(定常状態とする)。サーバの中で同時に処理中の要求は平均何件か(リトルの法則)。
- サーバの使用率(忙しい時間の割合)が100%に近づくと、要求の待ち時間はどうなるか。
- プログラムの性能を改善するときにプロファイラを使う目的として正しいものはどれか。
- サンプリング方式のプロファイラの特徴として正しいものはどれか。
- 関数の入口と出口に時間を測るコードを入れて記録する計測(インストルメンテーション)方式のプロファイラについて正しいものはどれか。
- プログラムの性能の分析でいうホットスポットの説明として正しいものはどれか。
- プロファイルの結果を表すフレームグラフの読み方として正しいものはどれか。
- CPUに内蔵された性能カウンタ(PMU)で数えられるものの例として正しいものはどれか。
- 性能カウンタで測ったところ、あるプログラムのIPC(1サイクルあたりの命令数)が0.3と非常に低く、最後の段のキャッシュのミスが多かった。最も考えられる状況と対策の組み合わせはどれか。
- 性能カウンタで、分岐の予測ミスが非常に多いことが分かった。改善の方法として当てはまるものはどれか。
- 性能カウンタを使ったトップダウン分析(Top-down Microarchitecture Analysis)で、CPUの命令を処理する枠の使われ方を分ける大きな分類として正しいものはどれか。
- プログラムが遅いのに、CPUの使用率が20%程度と低かった。最も考えられる原因はどれか。
- あるプログラムが計算律速かメモリ律速かを確かめる方法として、CPUの周波数を変えて実行時間を測った。メモリ律速なら一般にどのような結果になるか。
- Rooflineモデルで、ある処理がメモリ帯域で制限される領域にあると分かったとき、性能を上げる方向として正しいものはどれか。
- STREAMベンチマークで主に測るものはどれか。
- 並列プログラムのスケーラビリティを調べるときの方法として最も適切なものはどれか。
- 8コアで並列に実行したところ、1コアのときより6倍速くなった。並列効率はいくらか。
- 性能を測るための仕組みを入れたことで、測りたいプログラムの動きそのものが変わってしまう現象を何と呼ぶか。
- プログラムの性能を改善するときの進め方として最も適切なものはどれか。
- 大量のデータを処理するプログラムで、最も大きな速度向上が得られる可能性が高い改善はどれか。
- ソフトウェアの開発で、変更のたびにベンチマークを自動で実行して結果を記録しておく目的として正しいものはどれか。
- ノートパソコンでベンチマークを測ったところ、同じプログラムでも結果が毎回大きくばらついた。CPUの側の原因として考えられるものと、その対策の組み合わせとして正しいものはどれか。
- マルチコアやNUMAのシステムで性能を測るとき、スレッドを特定のコアに固定する(アフィニティを設定する)ことがある理由として正しいものはどれか。
- GPUを使うプログラムの性能を分析するとき、最初に確かめるべきこととして最も適切なものはどれか。
- データセンターでサーバを選ぶとき、ピークの性能だけでなく考えるべき観点として当てはまらないものはどれか。
- 「新しい方法で100倍速くなった」という主張を評価するときに確かめるべき点として最も適切なものはどれか。
- SSDの性能を、連続の読み出しの帯域(MB/s)だけでなく、4 KBのランダムな読み出しのIOPS(1秒あたりの入出力の回数)でも示すことが多い理由として正しいものはどれか。
- 配列の大きさを少しずつ大きくしながら、配列を繰り返し読む処理の1要素あたりの時間を測ると、ある大きさごとに時間が段階的に増える。その理由として正しいものはどれか。