インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーをターゲットとする場合にのみ適用されます。
OpenMP* ランタイムのインテル® MIC アーキテクチャーにおけるデフォルトの動作は次のとおりです。
OpenMP* ランタイムは、コプロセッサー OS で、デフォルトでコアあたり 4 つのスレッドを生成します。
スレッド数を指定しない場合、OpenMP* ランタイムは最初の並列スレッドのアフィニティー・マスクで利用可能な論理プロセッサーの数を使用します。オフロード環境では、通常、論理プロセッサー 0、N-3、N-2、N-1 を実行するマシンの最後の物理コアを無視するように設定されます。このため、オフロードコードを 32 コアのコプロセッサーで実行する場合、ランタイムはデフォルトで 124 (31 x 4) の OpenMP* スレッドを生成します。
この動作をオーバーライドして、128 のスレッドすべてを明示的に使用してオフロードコードを実行するには、ランタイムが指定されたアフィニティー・マスクを無視するように、explicit アフィニティーを使用して norespect 修飾子を指定します。
コプロセッサーのコードをネイティブに実行する場合、最初のアフィニティー・マスクは設定されず、OpenMP* ランタイムはデフォルトですべての利用可能なハードウェア・スレッドを使用します。例えば、32 コアのマシンで 128 のスレッドを使用します。