Index: openmp/runtime/src/kmp.h =================================================================== --- openmp/runtime/src/kmp.h +++ openmp/runtime/src/kmp.h @@ -3046,6 +3046,8 @@ #if KMP_ARCH_X86 || KMP_ARCH_X86_64 extern kmp_cpuinfo_t __kmp_cpuinfo; static inline bool __kmp_is_hybrid_cpu() { return __kmp_cpuinfo.flags.hybrid; } +#elif KMP_OS_DARWIN && KMP_ARCH_AARCH64 +static inline bool __kmp_is_hybrid_cpu() { return true; } #else static inline bool __kmp_is_hybrid_cpu() { return false; } #endif Index: openmp/runtime/src/kmp_global.cpp =================================================================== --- openmp/runtime/src/kmp_global.cpp +++ openmp/runtime/src/kmp_global.cpp @@ -425,7 +425,13 @@ // 0 = never yield; // 1 = always yield (default); // 2 = yield only if oversubscribed +#if KMP_OS_DARWIN && KMP_ARCH_AARCH64 +// Set to 0 for environments where yielding is faster +kmp_int32 __kmp_use_yield = 0; +#else kmp_int32 __kmp_use_yield = 1; +#endif + // This will be 1 if KMP_USE_YIELD environment variable was set explicitly kmp_int32 __kmp_use_yield_exp_set = 0; Index: openmp/runtime/src/kmp_runtime.cpp =================================================================== --- openmp/runtime/src/kmp_runtime.cpp +++ openmp/runtime/src/kmp_runtime.cpp @@ -8286,7 +8286,7 @@ break; case library_throughput: if (__kmp_dflt_blocktime == KMP_MAX_BLOCKTIME) - __kmp_dflt_blocktime = 200; + __kmp_dflt_blocktime = KMP_DEFAULT_BLOCKTIME; break; default: KMP_FATAL(UnknownLibraryType, arg);