Intel® C++ Compiler 16.0 User and Reference Guide

OpenMP* Affinity Specifications

The coprocessor OS kernel on the coprocessor uses the logical processor number in /proc/cpuinfo, the calls to sched_{get,set}affinity() and sched_getcpu(), and the taskset command. The OpenMP* runtime library uses the logical processor number if you explicitly specify affinity using a proclist.

The logical processor number used by the coprocessor OS on Intel® MIC Architecture is different from that on the host, and probably not what you expect. There is one logical processor for each hardware thread context. Logical processor 0 is placed on the first hardware context of the highest numbered core. Logical processors from 1 up to the highest, minus three, are placed consecutively on core 0 context 0, core 0 context 1, core 0 context 2, core 0 context 3, core 1, context 0 and so on, with the last three logical processors being on the highest numbered core, with hardware thread contexts 1, 2, and 3.

The simple way to think of this is that you should start enumerating the logical processors to use at logical processor 1, not logical processor 0.