インテル® Advisor ユーザーガイド
並列プログラミングに適用される 2 つの最適化規則があります。
最も多くの時間を費やすプログラムのコード領域に注目します。
仮定ではなく実測します。
並列プログラミングに関して、ジーン・アムダール氏は、「プログラムの一部分の並列化から得られるスピードアップは、シリアル実行されるプログラム領域によって制限される」という、アムダールの法則を定義しました。
その結果は驚愕に値するかもしれません。80% の実行時間を費やすプログラム領域を並列化しても、どれほど多くのコアで実行しても 5 倍以上のスピードアップは得られません。
そのため、プログラムの並列化から最大限の利点を得るには、アムダールの法則で示されるように、プログラムのすべての場所を並列化する必要があるでしょう。しかし、多くの時間を費やす場所を特定して、そこから最大限の利点を得られるように注力することが、より現実的です。
これはもう 1 つの最適化規則である、「仮定ではなく実測する」につながります。プログラマーの直感によりプログラムが時間を費やしている場所を見つけることは、信頼性がなく不正確です。インテル® Advisor に含まれるサーベイツール は、プログラムの実行をプロファイルして、時間を消費する場所を特定できます。
並列コード領域の可能性をマークするため、プログラムにインテル® Advisor のアノテーションを追加し、スータビリティー・ツールを実行してプログラムとアノテーション・サイトの最大パフォーマンス・ゲインを予測します。このパフォーマンス・ゲインの予測値は、アムダールの法則の影響を反映した並列実行モデルに基づいています。