Changeset View
Changeset View
Standalone View
Standalone View
runtime/src/kmp_runtime.cpp
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 7,665 Lines • ▼ Show 20 Lines | #define FAST_REDUCTION_TREE_METHOD_GENERATED ((reduce_data) && (reduce_func)) | ||||
} else { | } else { | ||||
int atomic_available = FAST_REDUCTION_ATOMIC_METHOD_GENERATED; | int atomic_available = FAST_REDUCTION_ATOMIC_METHOD_GENERATED; | ||||
#if KMP_ARCH_X86_64 || KMP_ARCH_PPC64 || KMP_ARCH_AARCH64 || KMP_ARCH_MIPS64 | #if KMP_ARCH_X86_64 || KMP_ARCH_PPC64 || KMP_ARCH_AARCH64 || KMP_ARCH_MIPS64 | ||||
#if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \ | #if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \ | ||||
KMP_OS_WINDOWS || KMP_OS_DARWIN || KMP_OS_HURD | KMP_OS_OPENBSD || KMP_OS_WINDOWS || KMP_OS_DARWIN || KMP_OS_HURD | ||||
int teamsize_cutoff = 4; | int teamsize_cutoff = 4; | ||||
#if KMP_MIC_SUPPORTED | #if KMP_MIC_SUPPORTED | ||||
if (__kmp_mic_type != non_mic) { | if (__kmp_mic_type != non_mic) { | ||||
teamsize_cutoff = 8; | teamsize_cutoff = 8; | ||||
} | } | ||||
#endif | #endif | ||||
int tree_available = FAST_REDUCTION_TREE_METHOD_GENERATED; | int tree_available = FAST_REDUCTION_TREE_METHOD_GENERATED; | ||||
if (tree_available) { | if (tree_available) { | ||||
if (team_size <= teamsize_cutoff) { | if (team_size <= teamsize_cutoff) { | ||||
if (atomic_available) { | if (atomic_available) { | ||||
retval = atomic_reduce_block; | retval = atomic_reduce_block; | ||||
} | } | ||||
} else { | } else { | ||||
retval = TREE_REDUCE_BLOCK_WITH_REDUCTION_BARRIER; | retval = TREE_REDUCE_BLOCK_WITH_REDUCTION_BARRIER; | ||||
} | } | ||||
} else if (atomic_available) { | } else if (atomic_available) { | ||||
retval = atomic_reduce_block; | retval = atomic_reduce_block; | ||||
} | } | ||||
#else | #else | ||||
#error "Unknown or unsupported OS" | #error "Unknown or unsupported OS" | ||||
#endif // KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD \ | #endif // KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD \ | ||||
// || KMP_OS_WINDOWS || KMP_OS_DARWIN | // || KMP_OS_OPENBSD || KMP_OS_WINDOWS || KMP_OS_DARWIN || KMP_OS_HURD | ||||
#elif KMP_ARCH_X86 || KMP_ARCH_ARM || KMP_ARCH_AARCH || KMP_ARCH_MIPS | #elif KMP_ARCH_X86 || KMP_ARCH_ARM || KMP_ARCH_AARCH || KMP_ARCH_MIPS | ||||
#if KMP_OS_LINUX || KMP_OS_WINDOWS || KMP_OS_HURD | #if KMP_OS_LINUX || KMP_OS_WINDOWS || KMP_OS_HURD | ||||
// basic tuning | // basic tuning | ||||
if (atomic_available) { | if (atomic_available) { | ||||
▲ Show 20 Lines • Show All 81 Lines • Show Last 20 Lines |