Index: openmp/trunk/runtime/src/kmp.h =================================================================== --- openmp/trunk/runtime/src/kmp.h +++ openmp/trunk/runtime/src/kmp.h @@ -3268,6 +3268,9 @@ 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(); Index: openmp/trunk/runtime/src/z_Linux_util.cpp =================================================================== --- openmp/trunk/runtime/src/z_Linux_util.cpp +++ openmp/trunk/runtime/src/z_Linux_util.cpp @@ -1280,6 +1280,12 @@ ++__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;