summaryrefslogtreecommitdiffstats
path: root/openmp/runtime/src/kmp_affinity.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'openmp/runtime/src/kmp_affinity.cpp')
-rw-r--r--openmp/runtime/src/kmp_affinity.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/openmp/runtime/src/kmp_affinity.cpp b/openmp/runtime/src/kmp_affinity.cpp
index 775862ebb7e..f14cdf68c08 100644
--- a/openmp/runtime/src/kmp_affinity.cpp
+++ b/openmp/runtime/src/kmp_affinity.cpp
@@ -4505,6 +4505,7 @@ static void __kmp_aux_affinity_initialize(void) {
KMP_WARNING(AffNoValidProcID);
}
__kmp_affinity_type = affinity_none;
+ __kmp_create_affinity_none_places();
return;
}
break;
@@ -4557,11 +4558,9 @@ static void __kmp_aux_affinity_initialize(void) {
KMP_WARNING(AffBalancedNotAvail, "KMP_AFFINITY");
}
__kmp_affinity_type = affinity_none;
+ __kmp_create_affinity_none_places();
return;
- } else if (__kmp_affinity_uniform_topology()) {
- break;
- } else { // Non-uniform topology
-
+ } else if (!__kmp_affinity_uniform_topology()) {
// Save the depth for further usage
__kmp_aff_depth = depth;
@@ -4602,8 +4601,9 @@ static void __kmp_aux_affinity_initialize(void) {
procarr[core * maxprocpercore + inlastcore] = proc;
}
-
- break;
+ }
+ if (__kmp_affinity_compact >= depth) {
+ __kmp_affinity_compact = depth - 1;
}
sortAddresses:
@@ -4781,6 +4781,11 @@ void __kmp_affinity_set_init_mask(int gtid, int isa_root) {
th->th.th_new_place = i;
th->th.th_first_place = 0;
th->th.th_last_place = __kmp_affinity_num_masks - 1;
+ } else if (KMP_AFFINITY_NON_PROC_BIND) {
+ // When using a Non-OMP_PROC_BIND affinity method,
+ // set all threads' place-partition-var to the entire place list
+ th->th.th_first_place = 0;
+ th->th.th_last_place = __kmp_affinity_num_masks - 1;
}
if (i == KMP_PLACE_ALL) {
OpenPOWER on IntegriCloud