インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

OpenMP* アフィニティーの仕様

コプロセッサー上のコプロセッサー OS カーネルは、/proc/cpuinfo の論理プロセッサー番号、sched_{get,set}affinity()sched_getcpu() の呼び出し、taskset コマンドを使用します。proclist を使用して明示的にアフィニティーを指定した場合、OpenMP* ランタイム・ライブラリーは論理プロセッサー番号を使用します。

インテル® MIC アーキテクチャーのコプロセッサー OS で使用される論理プロセッサー番号は、ホスト側の番号とは異なります。各ハードウェア・スレッド・コンテキストにつき 1 つの論理プロセッサーがあります。論理プロセッサー 0 は、最も高い番号のコアの最初のハードウェア・コンテキストに配置されます。1 から最大 -3 までの論理プロセッサーは、コア 0 コンテキスト 0、コア 0 コンテキスト 1、コア 0 コンテキスト 2、コア 0 コンテキスト 3、コア 1 コンテキスト 0、のように連続して配置され、最後の 3 つの論理プロセッサーは、最も高い番号のコアのハードウェア・スレッド・コンテキスト 1、2、3 に配置されます。

つまり、論理プロセッサーを数える場合、論理プロセッサー 0 ではなく、論理プロセッサー 1 から数えるべきだと考えると簡単です。