The relationship between CPU numbers and CPU topolgy can vary. On Linux, the "lstopo" program provides information about the relationship between sockets, cores, and threads. In my experience, one thing to be aware of is which CPU numbers are HT pairs on Intel CPUs. For some workloads, leaving one out of each HT pair idle can give better performance. A similar story may be true for the paired cores on AMD Bulldozer and later CPUs. As an example of variation---and I'm not sure if it's variation by CPU or by Linux version---I have easy access to an i7-4930K running 3.2.0-4-amd64 and an i5-3320M running 3.16.0-4-amd64. On the first machine, CPU numbers 0 and 6 are HT pairs, 1 and 7, and so on. On the second machine, CPU numbers 0 and 1 are HT pairs, and 2 and 3 are HT pairs. Here's how that looks in lstopo (look at the P#): # i7-4930k Machine (16GB) + Socket L#0 + L3 L#0 (12MB) L2 L#0 (256KB) + L1 L#0 (32KB) + Core L#0 PU L#0 (P#0) PU L#1 (P#6) L2 L#1 (256KB) + L1 L#1 (32KB) + Core L#1 PU L#2 (P#1) PU L#3 (P#7) # (others snipped) # i5-3320m Machine (7704MB) + Socket L#0 + L3 L#0 (3072KB) L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0 PU L#0 (P#0) PU L#1 (P#1) L2 L#1 (256KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1 PU L#2 (P#2) PU L#3 (P#3) I assume, but don't know for sure, that the GOMP environment variable will be using the P#-numbering of lstopo. Jeff