diff options
Diffstat (limited to 'openmp')
| -rw-r--r-- | openmp/runtime/src/kmp.h | 3 | ||||
| -rw-r--r-- | openmp/runtime/src/z_Linux_util.cpp | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/openmp/runtime/src/kmp.h b/openmp/runtime/src/kmp.h index cab0d04e6fb..f2f0cdc17ec 100644 --- a/openmp/runtime/src/kmp.h +++ b/openmp/runtime/src/kmp.h @@ -3268,6 +3268,9 @@ extern int __kmp_aux_set_affinity_mask_proc(int proc, void **mask); extern int __kmp_aux_unset_affinity_mask_proc(int proc, void **mask); extern int __kmp_aux_get_affinity_mask_proc(int proc, void **mask); extern void __kmp_balanced_affinity(int tid, int team_size); +#if KMP_OS_LINUX +extern int kmp_set_thread_affinity_mask_initial(void); +#endif #endif /* KMP_AFFINITY_SUPPORTED */ extern void __kmp_cleanup_hierarchy(); diff --git a/openmp/runtime/src/z_Linux_util.cpp b/openmp/runtime/src/z_Linux_util.cpp index 2f83c02c639..a0d1639c53e 100644 --- a/openmp/runtime/src/z_Linux_util.cpp +++ b/openmp/runtime/src/z_Linux_util.cpp @@ -1280,6 +1280,12 @@ static void __kmp_atfork_child(void) { ++__kmp_fork_count; +#if KMP_AFFINITY_SUPPORTED && KMP_OS_LINUX + // reset the affinity in the child to the initial thread + // affinity in the parent + kmp_set_thread_affinity_mask_initial(); +#endif + __kmp_init_runtime = FALSE; #if KMP_USE_MONITOR __kmp_init_monitor = 0; |

