インテル® C++ コンパイラー 14.0 ユーザー・リファレンス・ガイド

自動並列化の使用

自動パラレライザーを有効にするには、[Q]parallel オプションを使用します。 このオプションは、安全に並列実行できる並列ループを検出して、これらのループのマルチスレッド・コードを自動的に生成します。

注

このオプションを使用して、並列化を有効にするには、KMP_STACKSIZE 環境変数に十分なサイズを設定する必要があります。

注

このオプションを使用すると、互換マイクロプロセッサーおよびインテル製マイクロプロセッサーの両方で並列化が有効になります。実行ファイルは、互換マイクロプロセッサーよりもインテル製マイクロプロセッサーにおいてより優れたパフォーマンスが得られる可能性があります。また、並列化は、/arch (Windows*)、-m (Linux* および OS X*)、[Q]x などの特定のオプションによる影響を受けます。

自動並列化を使用するコマンド例は、次のとおりです。

//  (Linux* および OS X*)
				icc -c -parallel prog.cpp 
				
//  (Windows*)
				icl /c /Qparallel prog.cpp 
				

自動並列化では、2 つの特定のプラグマ #pragma parallel と #pragma noparallel が使用されます。 宣言子

自動並列化コンパイラープラグマは次のとおりです。

構文

<prefix> <pragma>

<prefix> は次のとおりです。

<prefix> の後には、プラグマがきます。次に例を示します。

構文

#pragma parallel

#pragma parallel プラグマ は、すぐ後のループで存在していると想定され、正常な自動並列化を妨げる依存を無視するようにコンパイラーに指示します。 しかし、依存性が証明されると無視されません。さらに、parallel [always] は、ループの並列化がパフォーマンスを向上させる可能性を推定するコンパイラー・ヒューリスティックを無効にします。 これにより、コンパイラーによって、並列化がパフォーマンスを向上しないと推定された場合でも、ループが並列化されます。#pragma parallel [always [assert]] など、ASSERT キーワードが追加されると、コンパイラーは、コンパイラーの解析とコストモデルはループが並列化できないことを示している旨のエラーレベルのアサーション・メッセージを生成します。

#pragma noparallel プラグマ は自動並列化を無効にしています。

関連情報


このヘルプトピックについてのフィードバックを送信