自動並列化のしきい値制御と診断

しきい値制御

-par_threshold{n} オプションは、並列ループ実行の有効性に基づいて、ループの自動並列化のしきい値を設定します。n の値は 0 から 100 までを設定できます。デフォルト値は 100 です。-par_threshold{n} オプションは、コンパイル時に計算量が確定できないループに使用します。

n に使用する値には、次の意味があります。

コンパイラは、作成された複数のスレッドのオーバーヘッドとスレッド間を共有できるワーク量のバランスをとろうとするヒューリスティックを適用します。

診断

-par_report{0|1|2|3}オプションは、自動パラレライザの診断レベル 0、1、2、3 を次のように制御します。

-par_report0 = 診断情報を表示しません。

-par_report1 = 正常に自動並列化されたループを表示します。 (デフォルト) 並列ループに対して "LOOP AUTO-PARALLELIZED" メッセージを出力します。

-par_report2 = 正常に自動並列化されたループおよび自動並列化が失敗したループを表示します。

-par_report3 = 2 と同じです。また、自動並列化を妨げる、実証された依存および推測された依存についての追加情報を示します (並列化されない理由)。

次の例は、コマンドからの結果として -par_report3 により生成された出力を示しています。

ifort -c -parallel -par_report3 myprog.f90

ここで、myprog.f90 は、次のとおりです:

 program myprog

      integer a(10000), q

C Assumed side effects

      do i=1,10000

         a(i) = foo(i)

      enddo

C Actual dependence

      do i=1,10000

         a(i) = a(i-1) + i

      enddo

      end

-par_report 出力の例

program myprog
procedure: myprog
serial loop: line 5: not a parallel candidate
due to statement at line 6
serial loop: line 9
  flow data dependence from line 10 to line
10, due to "a"
12 Lines Compiled

トラブルシューティングのヒント