インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
parallel プラグマは、コンパイラーによる依存性の解決を支援し、ループの直後の自動並列化を促進します。 noparallel プラグマは、ループ直後の自動並列化を抑止します。
parallel プラグマは、ループの直後にあることが想定され、正常な自動並列化を妨げる潜在的な依存性を無視するようにコンパイラーに指示します。しかし、依存性が証明されると無視されません。
noparallel プラグマは、ループ直後の自動並列化を抑止します。
これらのプラグマは、自動並列化が /Qparallel オプション (Windows*) または -parallel オプション (Linux* または OS X*) で有効にされている場合にのみ効果があります。このオプションを使用すると、互換マイクロプロセッサーおよびインテル製マイクロプロセッサーの両方で並列化が有効になります。実行ファイルは、互換マイクロプロセッサーよりもインテル製マイクロプロセッサーにおいてより優れたパフォーマンスが得られる可能性があります。また、並列化は、/arch や /Qx (Windows*) または -m や -x (Linux* および OS X*) などの特定のオプションによる影響を受けます。
#pragma parallel は注意して使用してください。ループに繰り返し間の依存関係がある場合、このプラグマでアノテーションすると、プログラムが正しく動作しなくなる可能性があります。
#pragma parallel always は、アノテーション付きのループの並列化がパフォーマンスを向上させることが分かっている場合のみ使用してください。