18#ifndef DT_SYSTEM_OPENMP_H
19#define DT_SYSTEM_OPENMP_H
28#ifndef dt_omp_nontemporal
32#if (__clang__+0 >= 10 || __GNUC__ >= 9)
33# define dt_omp_nontemporal(...) nontemporal(__VA_ARGS__)
36# define dt_omp_nontemporal(var, ...)
40#define OMP_PRAGMA(x) _Pragma(#x)
41#define __OMP_PARALLEL__(...) OMP_PRAGMA(omp parallel default(firstprivate) __VA_ARGS__)
42#define __OMP_PARALLEL_FOR__(...) OMP_PRAGMA(omp parallel for default(firstprivate) schedule(static) __VA_ARGS__)
43#define __OMP_PARALLEL_FOR_SIMD__(...) OMP_PRAGMA(omp parallel for simd default(firstprivate) schedule(simd:static) __VA_ARGS__)
44#define __OMP_FOR_SIMD__(...) OMP_PRAGMA(omp for simd schedule(simd:static) __VA_ARGS__)
45#define __OMP_FOR__(...) OMP_PRAGMA(omp for schedule(static) __VA_ARGS__)
46#define __OMP_SIMD__(...) OMP_PRAGMA(omp simd __VA_ARGS__)
47#define __OMP_DECLARE_SIMD__(...) OMP_PRAGMA(omp declare simd __VA_ARGS__)
52#define __OMP_PARALLEL_FOR_CPP__(...) OMP_PRAGMA(omp parallel for default(none) schedule(static) __VA_ARGS__)
56# define omp_get_max_threads() 1
57# define omp_get_thread_num() 0
59#define __OMP_PARALLEL__(...)
60#define __OMP_PARALLEL_FOR__(...)
61#define __OMP_PARALLEL_FOR_SIMD__(...)
62#define __OMP_FOR_SIMD__(...)
63#define __OMP_FOR__(...)
64#define __OMP_SIMD__(...)
65#define __OMP_DECLARE_SIMD__(...)
67#define __OMP_PARALLEL_FOR_CPP__(...)
71#if defined(__x86_64__) || defined(__i386__)
99#if defined(__x86_64__) || defined(__i386__)
117#define dt_omploop_sfence()
119#define dt_omploop_sfence() dt_sfence()
int dt_get_num_openmp_threads(void)
static int dt_get_thread_num()
#define omp_get_thread_num()