Type: Answers



並列コンパイルを使用しても期待したほどコンパイル時間が削減されないのはなぜですか?

Description

Quartus® IIバージョン7.1から、並列コンパイルによってコンパイル時間を最大20%削減できるようになりました。平均して、2プロセッサでは10%、4プロセッサでは15%程度のコンパイル時間削減効果があります。しかし、同程度のコンパイル時間削減効果を得られない場合もあります。このソリューションでは、その一般的な理由について説明しています。

並列コンパイル機能が有効な場合、Quartus IIはコンパイルに使用されたプロセッサ数と、複数プロセッサがコンパイルに使用された割合を示すメッセージを表示します。もしそのようなメッセージが表示されない場合、並列コンパイルが有効になっているかどうか、アサインメントを確認してください。Quartus IIで使用可能なプロセッサ数を設定するには、Assignmentsメニュー上でSettingsを選択します。SettingsダイアログボックスのCategoryから、Compilation Process Settingsをクリックします。表示されるダイアログボックスから、Maximum processors allowed for parallel compilationを指定します。デフォルトの値は1ですので、並列コンパイルは無効になっています。

コンパイル時間がプロセッサ数に応じて線形に減少するわけではないことにご注意ください。例えば、コンパイル時間の20%について2プロセッサが使用されていたとしても、コンパイル時間は必ずしも10%減少するわけではありません。

並列コンパイルのパフォーマンスが低下する主な原因を下記のリストに示します:

  • Quartus IIでは、デザインのタイミング、面積、消費電力の最適化に多くの異なるアルゴリズムを使用しています。複数プロセッサを使用することでメリットのあるアルゴリズムもあれば、メリットのないアルゴリズムもあります。平均のコンパイル時間削減効果とは、タイミング制約を満たすのが難しいデザインに対してデフォルトの設定を使用したときのものですが、アルゴリズムの異なる組合せの場合はコンパイル時間の削減効果が変わる可能性があります。下記はいくつかの例です:

    • Fitter effortAuto Fitに設定され、かつデザインがタイミング制約を満たしやすく配線もしやすい場合、Fitterでは並列コンパイル時に行われるアルゴリズムをスキップするか短縮する可能性があります。この場合、並列コンパイルでは期待通りのコンパイル時間を削減しないかもしれませんが、実際にはAuto Fit設定をしたことでそれ以上のコンパイル時間が削減できています。
    • Physical Synthesisを使用すると、通常Fitterの時間が長くなります。Quartus IIバージョン7.1では、Physical Synthesisは並列コンパイルを使用しません。それにより、削減されるコンパイル時間は変わらないものの、相対的に並列コンパイルの効果が小さくなってしまいます。例えば、Physical Synthesisによってコンパイル時間が2倍になっている場合、相対的なコンパイル時間の削減割合は半分になり、平均的な10%から5%程度になってしまいます。
    • Placement Effort Multiplierの値が大きい場合、並列コンパイルによる相対的なコンパイル時間削減効果が大きくなる可能性があります。その設定は配線が原因でフィットできなかった場合に自動的に大きな値に設定されますので、フィットしづらいデザインでは平均よりも高いコンパイル時間削減効果が有る可能性があります。

  • PCによって、並列プロセスの能力が異なります。一般的に、新しいPCのほうが古いPCよりも良い性能を出します。例えば、2プロセッサのシステムよりも2コア構成のシステムのほうが通常性能が高くなります。それは、2コア構成のシステムのほうがより並列プロセス用にデザインされているためです。とても古いマルチプロセッサのPCの場合、プロセッサ間の通信に使用できるバンド幅が小さいため、並列コンパイルのパフォーマンスが落ちる場合があります。
  • 一般的ではない構成では、並列コンパイルのパフォーマンスが低下する場合があります。特に、キャッシュを共有するマルチコアのプロセッサを複数持つシステムでは、コンパイル時間の削減効果を最大限にするためには追加の設定が必要な場合があります。詳細につきましては、下記にある「関連ソリューション」を参照してください。
  • その他にも並列コンパイルの効果が低下する原因があり、それらに当てはまる場合にはQuartus IIはメッセージを出力します。詳細につきましては、メッセージのヘルプを参照してください。

将来バージョンのQuartus IIでは、既存のPCを使用時によりコンパイル時間を削減し、かつより多くのプロセッサをサポートする可能性があります。

並列コンパイル機能およびコンパイル時間の削減については、Quartus II Handbook volume 2のArea and Timing Optimization (PDF)にあるCompilation-Time Optimization Techniquesセクションを参照してください。