/* { dg-set-target-env-var OMP_PROC_BIND "spread,close" } */ /* { dg-set-target-env-var OMP_PLACES "cores" } */ /* { dg-set-target-env-var OMP_NUM_THREADS "4" } */ /* { dg-set-target-env-var OMP_AFFINITY_FORMAT "hello" } */ #include #include #include int main () { #define FMT "L:%0.5L%%%n>%32H 32 ? l : 32) + 3 + (l > 33 ? l : 33) + 7 + 3 + 1 + 1 + 1)) abort (); omp_set_affinity_format ("%.5L%%%32H|||%.33{host}%0.7{ancestor_tnum}" "%3{num_threads}!%{num_threads}!"); l3 = omp_capture_affinity (buf2, sizeof buf2, ""); if (l3 != l2) abort (); if (memcmp (buf2, " 0%", 5 + 1) != 0) abort (); q = buf2 + 6; if (memcmp (q, hostname, l) != 0) abort (); q += l; if (l < 32) for (l3 = 32 - l; l3; l3--) if (*q++ != ' ') abort (); if (memcmp (q, "|||", 3) != 0) abort (); q += 3; if (l < 33) for (l3 = 33 - l; l3; l3--) if (*q++ != ' ') abort (); if (memcmp (q, hostname, l) != 0) abort (); q += l; if (strcmp (q, "-0000011 !1!") != 0) abort (); } #pragma omp parallel num_threads (4) proc_bind(spread) omp_display_affinity ("%0.2a!%n!%.4L!%N;%.2t;%0.2T;%{team_num};%{num_teams};%A"); return 0; }