https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80822
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- That just means they don't provide really helpful information on what they expand threads to. Can you try: #include <omp.h> #include <stdlib.h> #include <stdio.h> int main () { int num_places = omp_get_num_places (), i, j; printf ("num_places %d\n", num_places); for (i = 0; i < num_places; i++) { int num_procs = omp_get_place_num_procs (i); int *procs = malloc (num_procs * sizeof (int)); omp_get_place_proc_ids (i, procs); for (j = 0; j < num_procs; j++) printf ("%d ", procs[j]); printf ("\n"); free (procs); } return 0; } with all the 3 compilers+runtimes and get what it prints for OMP_PLACES=threads, OMP_PLACES=cores and OMP_PLACES=sockets on your machine?