インテル® Fortran コンパイラー 14.0 ユーザー・リファレンス・ガイド
自動パラレライザーを有効にするには、[Q]parallel オプションを使用します。 このオプションは、安全に並列実行できる並列ループを検出して、これらのループのマルチスレッド・コードを自動的に生成します。
このオプションを使用して、並列化を有効にするには、KMP_STACKSIZE 環境変数に十分なサイズを設定する必要があります。
自動並列化を使用するコマンド例は、次のとおりです。
// (Linux* および OS X*)
ifort -c -parallel myprog.f
// (Windows*)
ifort -c /Qparallel myprog.f
自動並列化では、2 つの特定の !DIR$ PARALLEL と !DIR$ NOPARALLEL が使用されます。
自動並列化コンパイラー宣言子は次のとおりです。
<prefix> の後には、宣言子がきます。次に例を示します。
自動並列化宣言子は感嘆符 (!) で始まるため、[Q]parallel オプションを省略した場合、宣言子はコメントの形式になります。
!DIR$ PARALLEL 宣言子 は、すぐ後のループで存在していると想定され、正常な自動並列化を妨げる依存を無視するようにコンパイラーに指示します。 しかし、依存性が証明されると無視されません。さらに、PARALLEL [ALWAYS] は、ループの並列化がパフォーマンスを向上させる可能性を推定するコンパイラー・ヒューリスティックを無効にします。 これにより、コンパイラーによって、並列化がパフォーマンスを向上しないと推定された場合でも、ループが並列化されます。!DIR$ PARALLEL [ALWAYS [ASSERT]] など、ASSERT キーワードが追加されると、コンパイラーは、コンパイラーの解析とコストモデルはループが並列化できないことを示している旨のエラーレベルのアサーション・メッセージを生成します。
!DIR$ NOPARALLEL 宣言子 は自動並列化を無効にしています。
例えば、次のコードで NOPARALLEL 宣言子は自動並列化を無効にします。