19#if KMP_HAVE_XMMINTRIN_H && KMP_HAVE__MM_MALLOC
21#define KMP_ALIGNED_ALLOCATE(size, alignment) _mm_malloc(size, alignment)
22#define KMP_ALIGNED_FREE(ptr) _mm_free(ptr)
23#elif KMP_HAVE_ALIGNED_ALLOC
24#define KMP_ALGIN_UP(val, alignment) \
25 (((val) + (alignment)-1) / (alignment) * (alignment))
26#define KMP_ALIGNED_ALLOCATE(size, alignment) \
27 aligned_alloc(alignment, KMP_ALGIN_UP(size, alignment))
28#define KMP_ALIGNED_FREE(ptr) free(ptr)
29#elif KMP_HAVE_POSIX_MEMALIGN
40#define KMP_ALIGNED_FREE(ptr) free(ptr)
41#elif KMP_HAVE__ALIGNED_MALLOC
43#define KMP_ALIGNED_ALLOCATE(size, alignment) _aligned_malloc(size, alignment)
44#define KMP_ALIGNED_FREE(ptr) _aligned_free(ptr)
46#define KMP_ALIGNED_ALLOCATE(size, alignment) KMP_INTERNAL_MALLOC(size)
47#define KMP_ALIGNED_FREE(ptr) KMP_INTERNAL_FREE(ptr)
53#ifndef KMP_FOURLINE_ALIGN_CACHE
54#define KMP_FOURLINE_ALIGN_CACHE KMP_ALIGN(4 * CACHE_LINE)
57#define KMP_OPTIMIZE_FOR_REDUCTIONS 0
61 kmp_uint32 volatile KMP_FOURLINE_ALIGN_CACHE stillNeed;
65 std::atomic<kmp_uint64> KMP_FOURLINE_ALIGN_CACHE go;
69 kmp_uint64 volatile KMP_FOURLINE_ALIGN_CACHE iter;
73 std::atomic<bool> KMP_FOURLINE_ALIGN_CACHE sleep;
76 void init(
size_t nthr);
77 void resize(
size_t nthr);
78 void computeGo(
size_t n);
79 void computeVarsForN(
size_t n);
127 d->fix_threads_per_go =
false;
129 d->computeGo(nThreads);
~distributedBarrier()=delete
size_t KMP_ALIGN_CACHE gos_per_group
size_t KMP_ALIGN_CACHE num_groups
size_t KMP_ALIGN_CACHE threads_per_group
size_t KMP_ALIGN_CACHE num_gos
size_t KMP_ALIGN_CACHE threads_per_go
bool need_resize(size_t new_nthr)
size_t KMP_ALIGN_CACHE num_threads
static void deallocate(distributedBarrier *db)
size_t KMP_ALIGN_CACHE max_threads
flags_s * flags[MAX_ITERS]
distributedBarrier()=delete
static distributedBarrier * allocate(int nThreads)
bool KMP_ALIGN_CACHE fix_threads_per_go
void update_num_threads(size_t nthr)
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t size
#define KMP_ALIGNED_FREE(ptr)
#define KMP_ALIGNED_ALLOCATE(size, alignment)
unsigned long long kmp_uint64