14#error The support file kmp_ftn_entry.h should not be compiled by itself.
28#include "ompt-specific.h"
44#if (KMP_FTN_ENTRIES == KMP_FTN_PLAIN) || (KMP_FTN_ENTRIES == KMP_FTN_UPPER)
45#define PASS_ARGS_BY_VALUE 1
49#if (KMP_FTN_ENTRIES == KMP_FTN_PLAIN) || (KMP_FTN_ENTRIES == KMP_FTN_APPEND)
50#define PASS_ARGS_BY_VALUE 1
55#ifdef PASS_ARGS_BY_VALUE
65#if KMP_FTN_ENTRIES == KMP_FTN_APPEND
66#define KMP_EXPAND_NAME_IF_APPEND(name) KMP_EXPAND_NAME(name)
68#define KMP_EXPAND_NAME_IF_APPEND(name) name
71void FTN_STDCALL FTN_SET_STACKSIZE(
int KMP_DEREF arg) {
73 __kmps_set_stacksize(KMP_DEREF arg);
76 __kmp_aux_set_stacksize((
size_t)KMP_DEREF arg);
80void FTN_STDCALL FTN_SET_STACKSIZE_S(
size_t KMP_DEREF arg) {
82 __kmps_set_stacksize(KMP_DEREF arg);
85 __kmp_aux_set_stacksize(KMP_DEREF arg);
89int FTN_STDCALL FTN_GET_STACKSIZE(
void) {
91 return (
int)__kmps_get_stacksize();
93 if (!__kmp_init_serial) {
94 __kmp_serial_initialize();
96 return (
int)__kmp_stksize;
100size_t FTN_STDCALL FTN_GET_STACKSIZE_S(
void) {
102 return __kmps_get_stacksize();
104 if (!__kmp_init_serial) {
105 __kmp_serial_initialize();
107 return __kmp_stksize;
111void FTN_STDCALL FTN_SET_BLOCKTIME(
int KMP_DEREF arg) {
113 __kmps_set_blocktime(KMP_DEREF arg);
115 int gtid, tid, bt = (KMP_DEREF arg);
118 gtid = __kmp_entry_gtid();
119 tid = __kmp_tid_from_gtid(gtid);
120 thread = __kmp_thread_from_gtid(gtid);
122 __kmp_aux_convert_blocktime(&bt);
123 __kmp_aux_set_blocktime(bt, thread, tid);
128int FTN_STDCALL FTN_GET_BLOCKTIME(
void) {
130 return __kmps_get_blocktime();
135 gtid = __kmp_entry_gtid();
136 tid = __kmp_tid_from_gtid(gtid);
137 team = __kmp_threads[gtid]->th.th_team;
140 if (__kmp_dflt_blocktime == KMP_MAX_BLOCKTIME) {
141 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d%cs\n", gtid,
142 team->t.t_id, tid, KMP_MAX_BLOCKTIME, __kmp_blocktime_units));
143 return KMP_MAX_BLOCKTIME;
145#ifdef KMP_ADJUST_BLOCKTIME
146 else if (__kmp_zero_bt && !get__bt_set(team, tid)) {
147 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d%cs\n", gtid,
148 team->t.t_id, tid, 0, __kmp_blocktime_units));
153 int bt = get__blocktime(team, tid);
154 if (__kmp_blocktime_units ==
'm')
156 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d%cs\n", gtid,
157 team->t.t_id, tid, bt, __kmp_blocktime_units));
163void FTN_STDCALL FTN_SET_LIBRARY_SERIAL(
void) {
165 __kmps_set_library(library_serial);
168 __kmp_user_set_library(library_serial);
172void FTN_STDCALL FTN_SET_LIBRARY_TURNAROUND(
void) {
174 __kmps_set_library(library_turnaround);
177 __kmp_user_set_library(library_turnaround);
181void FTN_STDCALL FTN_SET_LIBRARY_THROUGHPUT(
void) {
183 __kmps_set_library(library_throughput);
186 __kmp_user_set_library(library_throughput);
190void FTN_STDCALL FTN_SET_LIBRARY(
int KMP_DEREF arg) {
192 __kmps_set_library(KMP_DEREF arg);
194 enum library_type lib;
195 lib = (
enum library_type)KMP_DEREF arg;
197 __kmp_user_set_library(lib);
201int FTN_STDCALL FTN_GET_LIBRARY(
void) {
203 return __kmps_get_library();
205 if (!__kmp_init_serial) {
206 __kmp_serial_initialize();
208 return ((
int)__kmp_library);
212void FTN_STDCALL FTN_SET_DISP_NUM_BUFFERS(
int KMP_DEREF arg) {
218 int num_buffers = KMP_DEREF arg;
219 if (__kmp_init_serial == FALSE && num_buffers >= KMP_MIN_DISP_NUM_BUFF &&
220 num_buffers <= KMP_MAX_DISP_NUM_BUFF) {
221 __kmp_dispatch_num_buffers = num_buffers;
226int FTN_STDCALL FTN_SET_AFFINITY(
void **mask) {
227#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
230 if (!TCR_4(__kmp_init_middle)) {
231 __kmp_middle_initialize();
233 __kmp_assign_root_init_mask();
234 return __kmp_aux_set_affinity(mask);
238int FTN_STDCALL FTN_GET_AFFINITY(
void **mask) {
239#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
242 if (!TCR_4(__kmp_init_middle)) {
243 __kmp_middle_initialize();
245 __kmp_assign_root_init_mask();
246 int gtid = __kmp_get_gtid();
247 if (__kmp_threads[gtid]->th.th_team->t.t_level == 0 &&
248 __kmp_affinity.flags.reset) {
249 __kmp_reset_root_init_mask(gtid);
251 return __kmp_aux_get_affinity(mask);
255int FTN_STDCALL FTN_GET_AFFINITY_MAX_PROC(
void) {
256#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
260 if (!TCR_4(__kmp_init_middle)) {
261 __kmp_middle_initialize();
263 __kmp_assign_root_init_mask();
264 return __kmp_aux_get_affinity_max_proc();
268void FTN_STDCALL FTN_CREATE_AFFINITY_MASK(
void **mask) {
269#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
273 kmp_affin_mask_t *mask_internals;
274 if (!TCR_4(__kmp_init_middle)) {
275 __kmp_middle_initialize();
277 __kmp_assign_root_init_mask();
278 mask_internals = __kmp_affinity_dispatch->allocate_mask();
279 KMP_CPU_ZERO(mask_internals);
280 *mask = mask_internals;
284void FTN_STDCALL FTN_DESTROY_AFFINITY_MASK(
void **mask) {
285#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
289 kmp_affin_mask_t *mask_internals;
290 if (!TCR_4(__kmp_init_middle)) {
291 __kmp_middle_initialize();
293 __kmp_assign_root_init_mask();
294 if (__kmp_env_consistency_check) {
296 KMP_FATAL(AffinityInvalidMask,
"kmp_destroy_affinity_mask");
299 mask_internals = (kmp_affin_mask_t *)(*mask);
300 __kmp_affinity_dispatch->deallocate_mask(mask_internals);
305int FTN_STDCALL FTN_SET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask) {
306#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
309 if (!TCR_4(__kmp_init_middle)) {
310 __kmp_middle_initialize();
312 __kmp_assign_root_init_mask();
313 return __kmp_aux_set_affinity_mask_proc(KMP_DEREF proc, mask);
317int FTN_STDCALL FTN_UNSET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask) {
318#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
321 if (!TCR_4(__kmp_init_middle)) {
322 __kmp_middle_initialize();
324 __kmp_assign_root_init_mask();
325 return __kmp_aux_unset_affinity_mask_proc(KMP_DEREF proc, mask);
329int FTN_STDCALL FTN_GET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask) {
330#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
333 if (!TCR_4(__kmp_init_middle)) {
334 __kmp_middle_initialize();
336 __kmp_assign_root_init_mask();
337 return __kmp_aux_get_affinity_mask_proc(KMP_DEREF proc, mask);
344void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_NUM_THREADS)(
int KMP_DEREF arg) {
348 __kmp_set_num_threads(KMP_DEREF arg, __kmp_entry_gtid());
353int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NUM_THREADS)(void) {
362int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_MAX_THREADS)(void) {
368 if (!TCR_4(__kmp_init_middle)) {
369 __kmp_middle_initialize();
371 gtid = __kmp_entry_gtid();
372 thread = __kmp_threads[gtid];
373#if KMP_AFFINITY_SUPPORTED
374 if (thread->th.th_team->t.t_level == 0 && !__kmp_affinity.flags.reset) {
375 __kmp_assign_root_init_mask();
380 return thread->th.th_current_task->td_icvs.nproc;
384int FTN_STDCALL FTN_CONTROL_TOOL(
int command,
int modifier,
void *arg) {
385#if defined(KMP_STUB) || !OMPT_SUPPORT
388 OMPT_STORE_RETURN_ADDRESS(__kmp_entry_gtid());
389 if (!TCR_4(__kmp_init_middle)) {
392 kmp_info_t *this_thr = __kmp_threads[__kmp_entry_gtid()];
393 ompt_task_info_t *parent_task_info = OMPT_CUR_TASK_INFO(this_thr);
394 parent_task_info->frame.enter_frame.ptr = OMPT_GET_FRAME_ADDRESS(0);
395 int ret = __kmp_control_tool(command, modifier, arg);
396 parent_task_info->frame.enter_frame.ptr = 0;
402omp_allocator_handle_t FTN_STDCALL
403FTN_INIT_ALLOCATOR(omp_memspace_handle_t KMP_DEREF m,
int KMP_DEREF ntraits,
404 omp_alloctrait_t tr[]) {
408 return __kmpc_init_allocator(__kmp_entry_gtid(), KMP_DEREF m,
409 KMP_DEREF ntraits, tr);
413void FTN_STDCALL FTN_DESTROY_ALLOCATOR(omp_allocator_handle_t al) {
415 __kmpc_destroy_allocator(__kmp_entry_gtid(), al);
418void FTN_STDCALL FTN_SET_DEFAULT_ALLOCATOR(omp_allocator_handle_t al) {
420 __kmpc_set_default_allocator(__kmp_entry_gtid(), al);
423omp_allocator_handle_t FTN_STDCALL FTN_GET_DEFAULT_ALLOCATOR(
void) {
427 return __kmpc_get_default_allocator(__kmp_entry_gtid());
432omp_memspace_handle_t FTN_STDCALL
433FTN_GET_DEVICES_MEMSPACE(
int KMP_DEREF ndevs,
const int *devs,
434 omp_memspace_handle_t KMP_DEREF memspace) {
438 return __kmp_get_devices_memspace(KMP_DEREF ndevs, devs, KMP_DEREF memspace,
443omp_memspace_handle_t FTN_STDCALL FTN_GET_DEVICE_MEMSPACE(
444 int KMP_DEREF dev, omp_memspace_handle_t KMP_DEREF memspace) {
448 int dev_num = KMP_DEREF dev;
449 return __kmp_get_devices_memspace(1, &dev_num, KMP_DEREF memspace, 0);
453omp_memspace_handle_t FTN_STDCALL
454FTN_GET_DEVICES_AND_HOST_MEMSPACE(
int KMP_DEREF ndevs,
const int *devs,
455 omp_memspace_handle_t KMP_DEREF memspace) {
459 return __kmp_get_devices_memspace(KMP_DEREF ndevs, devs, KMP_DEREF memspace,
464omp_memspace_handle_t FTN_STDCALL FTN_GET_DEVICE_AND_HOST_MEMSPACE(
465 int KMP_DEREF dev, omp_memspace_handle_t KMP_DEREF memspace) {
469 int dev_num = KMP_DEREF dev;
470 return __kmp_get_devices_memspace(1, &dev_num, KMP_DEREF memspace, 1);
474omp_memspace_handle_t FTN_STDCALL
475FTN_GET_DEVICES_ALL_MEMSPACE(omp_memspace_handle_t KMP_DEREF memspace) {
479 return __kmp_get_devices_memspace(0, NULL, KMP_DEREF memspace, 1);
483omp_allocator_handle_t FTN_STDCALL
484FTN_GET_DEVICES_ALLOCATOR(
int KMP_DEREF ndevs,
const int *devs,
485 omp_allocator_handle_t KMP_DEREF memspace) {
489 return __kmp_get_devices_allocator(KMP_DEREF ndevs, devs, KMP_DEREF memspace,
494omp_allocator_handle_t FTN_STDCALL FTN_GET_DEVICE_ALLOCATOR(
495 int KMP_DEREF dev, omp_allocator_handle_t KMP_DEREF memspace) {
499 int dev_num = KMP_DEREF dev;
500 return __kmp_get_devices_allocator(1, &dev_num, KMP_DEREF memspace, 0);
504omp_allocator_handle_t FTN_STDCALL
505FTN_GET_DEVICES_AND_HOST_ALLOCATOR(
int KMP_DEREF ndevs,
const int *devs,
506 omp_allocator_handle_t KMP_DEREF memspace) {
510 return __kmp_get_devices_allocator(KMP_DEREF ndevs, devs, KMP_DEREF memspace,
515omp_allocator_handle_t FTN_STDCALL FTN_GET_DEVICE_AND_HOST_ALLOCATOR(
516 int KMP_DEREF dev, omp_allocator_handle_t KMP_DEREF memspace) {
520 int dev_num = KMP_DEREF dev;
521 return __kmp_get_devices_allocator(1, &dev_num, KMP_DEREF memspace, 1);
525omp_allocator_handle_t FTN_STDCALL
526FTN_GET_DEVICES_ALL_ALLOCATOR(omp_allocator_handle_t KMP_DEREF memspace) {
530 return __kmp_get_devices_allocator(0, NULL, KMP_DEREF memspace, 1);
535FTN_GET_MEMSPACE_NUM_RESOURCES(omp_memspace_handle_t KMP_DEREF memspace) {
539 return __kmp_get_memspace_num_resources(KMP_DEREF memspace);
543omp_memspace_handle_t FTN_STDCALL
544FTN_GET_SUBMEMSPACE(omp_memspace_handle_t KMP_DEREF memspace,
545 int KMP_DEREF num_resources,
int *resources) {
549 return __kmp_get_submemspace(KMP_DEREF memspace, KMP_DEREF num_resources,
556static void __kmp_fortran_strncpy_truncate(
char *buffer,
size_t buf_size,
557 char const *csrc,
size_t csrc_size) {
558 size_t capped_src_size = csrc_size;
559 if (csrc_size >= buf_size) {
560 capped_src_size = buf_size - 1;
562 KMP_STRNCPY_S(buffer, buf_size, csrc, capped_src_size);
563 if (csrc_size >= buf_size) {
564 KMP_DEBUG_ASSERT(buffer[buf_size - 1] ==
'\0');
565 buffer[buf_size - 1] = csrc[buf_size - 1];
567 for (
size_t i = csrc_size; i < buf_size; ++i)
573class ConvertedString {
578 ConvertedString(
char const *fortran_str,
size_t size) {
579 th = __kmp_get_thread();
580 buf = (
char *)__kmp_thread_malloc(th, size + 1);
581 KMP_STRNCPY_S(buf, size + 1, fortran_str, size);
584 ~ConvertedString() { __kmp_thread_free(th, buf); }
585 const char *get()
const {
return buf; }
593void FTN_STDCALL KMP_EXPAND_NAME_IF_APPEND(FTN_SET_AFFINITY_FORMAT)(
594 char const *format,
size_t size) {
598 if (!__kmp_init_serial) {
599 __kmp_serial_initialize();
601 ConvertedString cformat(format, size);
604 __kmp_strncpy_truncate(__kmp_affinity_format, KMP_AFFINITY_FORMAT_SIZE,
605 cformat.get(), KMP_STRLEN(cformat.get()));
615size_t FTN_STDCALL KMP_EXPAND_NAME_IF_APPEND(FTN_GET_AFFINITY_FORMAT)(
616 char *buffer,
size_t size) {
621 if (!__kmp_init_serial) {
622 __kmp_serial_initialize();
624 format_size = KMP_STRLEN(__kmp_affinity_format);
625 if (buffer && size) {
626 __kmp_fortran_strncpy_truncate(buffer, size, __kmp_affinity_format,
638void FTN_STDCALL KMP_EXPAND_NAME_IF_APPEND(FTN_DISPLAY_AFFINITY)(
639 char const *format,
size_t size) {
644 if (!TCR_4(__kmp_init_middle)) {
645 __kmp_middle_initialize();
647 __kmp_assign_root_init_mask();
648 gtid = __kmp_get_gtid();
649#if KMP_AFFINITY_SUPPORTED
650 if (__kmp_threads[gtid]->th.th_team->t.t_level == 0 &&
651 __kmp_affinity.flags.reset) {
652 __kmp_reset_root_init_mask(gtid);
655 ConvertedString cformat(format, size);
656 __kmp_aux_display_affinity(gtid, cformat.get());
670size_t FTN_STDCALL KMP_EXPAND_NAME_IF_APPEND(FTN_CAPTURE_AFFINITY)(
671 char *buffer,
char const *format,
size_t buf_size,
size_t for_size) {
677 kmp_str_buf_t capture_buf;
678 if (!TCR_4(__kmp_init_middle)) {
679 __kmp_middle_initialize();
681 __kmp_assign_root_init_mask();
682 gtid = __kmp_get_gtid();
683#if KMP_AFFINITY_SUPPORTED
684 if (__kmp_threads[gtid]->th.th_team->t.t_level == 0 &&
685 __kmp_affinity.flags.reset) {
686 __kmp_reset_root_init_mask(gtid);
689 __kmp_str_buf_init(&capture_buf);
690 ConvertedString cformat(format, for_size);
691 num_required = __kmp_aux_capture_affinity(gtid, cformat.get(), &capture_buf);
692 if (buffer && buf_size) {
693 __kmp_fortran_strncpy_truncate(buffer, buf_size, capture_buf.str,
696 __kmp_str_buf_free(&capture_buf);
701int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_THREAD_NUM)(void) {
707#if KMP_OS_DARWIN || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \
708 KMP_OS_OPENBSD || KMP_OS_HAIKU || KMP_OS_HURD || KMP_OS_SOLARIS || \
710 gtid = __kmp_entry_gtid();
712 if (!__kmp_init_parallel ||
713 (gtid = (
int)((kmp_intptr_t)TlsGetValue(__kmp_gtid_threadprivate_key))) ==
720#elif KMP_OS_LINUX || KMP_OS_WASI
722 if (__kmp_gtid_mode >= 3) {
723 if ((gtid = __kmp_gtid) == KMP_GTID_DNE) {
728 if (!__kmp_init_parallel ||
729 (gtid = (
int)((kmp_intptr_t)(
730 pthread_getspecific(__kmp_gtid_threadprivate_key)))) == 0) {
738#error Unknown or unsupported OS
741 return __kmp_tid_from_gtid(gtid);
745int FTN_STDCALL FTN_GET_NUM_KNOWN_THREADS(
void) {
749 if (!__kmp_init_serial) {
750 __kmp_serial_initialize();
754 return TCR_4(__kmp_nth);
758int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NUM_PROCS)(void) {
762 if (!TCR_4(__kmp_init_middle)) {
763 __kmp_middle_initialize();
765#if KMP_AFFINITY_SUPPORTED
766 if (!__kmp_affinity.flags.reset) {
768 int gtid = __kmp_entry_gtid();
769 kmp_info_t *thread = __kmp_threads[gtid];
770 if (thread->th.th_team->t.t_level == 0) {
771 __kmp_assign_root_init_mask();
775 return __kmp_avail_proc;
779void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_NESTED)(
int KMP_DEREF flag) {
781 __kmps_set_nested(KMP_DEREF flag);
785 thread = __kmp_entry_thread();
786 KMP_INFORM(APIDeprecated,
"omp_set_nested",
"omp_set_max_active_levels");
787 __kmp_save_internal_controls(thread);
789 int max_active_levels = get__max_active_levels(thread);
790 if (max_active_levels == 1)
791 max_active_levels = KMP_MAX_ACTIVE_LEVELS_LIMIT;
792 set__max_active_levels(thread, (KMP_DEREF flag) ? max_active_levels : 1);
796int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NESTED)(void) {
798 return __kmps_get_nested();
801 thread = __kmp_entry_thread();
802 KMP_INFORM(APIDeprecated,
"omp_get_nested",
"omp_get_max_active_levels");
803 return get__max_active_levels(thread) > 1;
807void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_DYNAMIC)(
int KMP_DEREF flag) {
809 __kmps_set_dynamic(KMP_DEREF flag ? TRUE : FALSE);
813 thread = __kmp_entry_thread();
815 __kmp_save_internal_controls(thread);
816 set__dynamic(thread, KMP_DEREF flag ?
true :
false);
820int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_DYNAMIC)(void) {
822 return __kmps_get_dynamic();
825 thread = __kmp_entry_thread();
826 return get__dynamic(thread);
830int FTN_STDCALL KMP_EXPAND_NAME(FTN_IN_PARALLEL)(void) {
834 kmp_info_t *th = __kmp_entry_thread();
835 if (th->th.th_teams_microtask) {
840 return (th->th.th_team->t.t_active_level ? 1 : 0);
842 return (th->th.th_root->r.r_in_parallel ? FTN_TRUE : FTN_FALSE);
846void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_SCHEDULE)(kmp_sched_t KMP_DEREF kind,
847 int KMP_DEREF modifier) {
849 __kmps_set_schedule(KMP_DEREF kind, KMP_DEREF modifier);
852 __kmp_set_schedule(__kmp_entry_gtid(), KMP_DEREF kind, KMP_DEREF modifier);
856void FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_SCHEDULE)(kmp_sched_t *kind,
859 __kmps_get_schedule(kind, modifier);
862 __kmp_get_schedule(__kmp_entry_gtid(), kind, modifier);
866void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_MAX_ACTIVE_LEVELS)(
int KMP_DEREF arg) {
871 __kmp_set_max_active_levels(__kmp_entry_gtid(), KMP_DEREF arg);
875int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_MAX_ACTIVE_LEVELS)(void) {
880 if (!TCR_4(__kmp_init_middle)) {
881 __kmp_middle_initialize();
883 return __kmp_get_max_active_levels(__kmp_entry_gtid());
887int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_ACTIVE_LEVEL)(void) {
892 return __kmp_entry_thread()->th.th_team->t.t_active_level;
896int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_LEVEL)(void) {
901 return __kmp_entry_thread()->th.th_team->t.t_level;
906KMP_EXPAND_NAME(FTN_GET_ANCESTOR_THREAD_NUM)(
int KMP_DEREF level) {
908 return (KMP_DEREF level) ? (-1) : (0);
910 return __kmp_get_ancestor_thread_num(__kmp_entry_gtid(), KMP_DEREF level);
914int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_TEAM_SIZE)(
int KMP_DEREF level) {
916 return (KMP_DEREF level) ? (-1) : (1);
918 return __kmp_get_team_size(__kmp_entry_gtid(), KMP_DEREF level);
922int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_THREAD_LIMIT)(void) {
928 if (!__kmp_init_serial) {
929 __kmp_serial_initialize();
932 gtid = __kmp_entry_gtid();
933 thread = __kmp_threads[gtid];
936 if (
int thread_limit = thread->th.th_current_task->td_icvs.task_thread_limit)
938 return thread->th.th_current_task->td_icvs.thread_limit;
942int FTN_STDCALL KMP_EXPAND_NAME(FTN_IN_FINAL)(void) {
946 if (!TCR_4(__kmp_init_parallel)) {
949 return __kmp_entry_thread()->th.th_current_task->td_flags.final;
953kmp_proc_bind_t FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_PROC_BIND)(void) {
955 return __kmps_get_proc_bind();
957 return get__proc_bind(__kmp_entry_thread());
961int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NUM_PLACES)(void) {
962#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
965 if (!TCR_4(__kmp_init_middle)) {
966 __kmp_middle_initialize();
968 if (!KMP_AFFINITY_CAPABLE())
970 if (!__kmp_affinity.flags.reset) {
972 int gtid = __kmp_entry_gtid();
973 kmp_info_t *thread = __kmp_threads[gtid];
974 if (thread->th.th_team->t.t_level == 0) {
975 __kmp_assign_root_init_mask();
978 return __kmp_affinity.num_masks;
982int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_PLACE_NUM_PROCS)(
int place_num) {
983#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
988 if (!TCR_4(__kmp_init_middle)) {
989 __kmp_middle_initialize();
991 if (!KMP_AFFINITY_CAPABLE())
993 if (!__kmp_affinity.flags.reset) {
995 int gtid = __kmp_entry_gtid();
996 kmp_info_t *thread = __kmp_threads[gtid];
997 if (thread->th.th_team->t.t_level == 0) {
998 __kmp_assign_root_init_mask();
1001 if (place_num < 0 || place_num >= (
int)__kmp_affinity.num_masks)
1003 kmp_affin_mask_t *mask = KMP_CPU_INDEX(__kmp_affinity.masks, place_num);
1004 KMP_CPU_SET_ITERATE(i, mask) {
1005 if ((!KMP_CPU_ISSET(i, __kmp_affin_fullMask)) ||
1006 (!KMP_CPU_ISSET(i, mask))) {
1015void FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_PLACE_PROC_IDS)(
int place_num,
1017#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
1021 if (!TCR_4(__kmp_init_middle)) {
1022 __kmp_middle_initialize();
1024 if (!KMP_AFFINITY_CAPABLE())
1026 if (!__kmp_affinity.flags.reset) {
1028 int gtid = __kmp_entry_gtid();
1029 kmp_info_t *thread = __kmp_threads[gtid];
1030 if (thread->th.th_team->t.t_level == 0) {
1031 __kmp_assign_root_init_mask();
1034 if (place_num < 0 || place_num >= (
int)__kmp_affinity.num_masks)
1036 kmp_affin_mask_t *mask = KMP_CPU_INDEX(__kmp_affinity.masks, place_num);
1038 KMP_CPU_SET_ITERATE(i, mask) {
1039 if ((!KMP_CPU_ISSET(i, __kmp_affin_fullMask)) ||
1040 (!KMP_CPU_ISSET(i, mask))) {
1048int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_PLACE_NUM)(void) {
1049#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
1054 if (!TCR_4(__kmp_init_middle)) {
1055 __kmp_middle_initialize();
1057 if (!KMP_AFFINITY_CAPABLE())
1059 gtid = __kmp_entry_gtid();
1060 thread = __kmp_thread_from_gtid(gtid);
1061 if (thread->th.th_team->t.t_level == 0 && !__kmp_affinity.flags.reset) {
1062 __kmp_assign_root_init_mask();
1064 if (thread->th.th_current_place < 0)
1066 return thread->th.th_current_place;
1070int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_PARTITION_NUM_PLACES)(void) {
1071#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
1074 int gtid, num_places, first_place, last_place;
1076 if (!TCR_4(__kmp_init_middle)) {
1077 __kmp_middle_initialize();
1079 if (!KMP_AFFINITY_CAPABLE())
1081 gtid = __kmp_entry_gtid();
1082 thread = __kmp_thread_from_gtid(gtid);
1083 if (thread->th.th_team->t.t_level == 0 && !__kmp_affinity.flags.reset) {
1084 __kmp_assign_root_init_mask();
1086 first_place = thread->th.th_first_place;
1087 last_place = thread->th.th_last_place;
1088 if (first_place < 0 || last_place < 0)
1090 if (first_place <= last_place)
1091 num_places = last_place - first_place + 1;
1093 num_places = __kmp_affinity.num_masks - first_place + last_place + 1;
1099KMP_EXPAND_NAME(FTN_GET_PARTITION_PLACE_NUMS)(
int *place_nums) {
1100#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED
1103 int i, gtid, place_num, first_place, last_place, start, end;
1105 if (!TCR_4(__kmp_init_middle)) {
1106 __kmp_middle_initialize();
1108 if (!KMP_AFFINITY_CAPABLE())
1110 gtid = __kmp_entry_gtid();
1111 thread = __kmp_thread_from_gtid(gtid);
1112 if (thread->th.th_team->t.t_level == 0 && !__kmp_affinity.flags.reset) {
1113 __kmp_assign_root_init_mask();
1115 first_place = thread->th.th_first_place;
1116 last_place = thread->th.th_last_place;
1117 if (first_place < 0 || last_place < 0)
1119 if (first_place <= last_place) {
1120 start = first_place;
1126 for (i = 0, place_num = start; place_num <= end; ++place_num, ++i) {
1127 place_nums[i] = place_num;
1132int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NUM_TEAMS)(void) {
1136 return __kmp_aux_get_num_teams();
1140int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_TEAM_NUM)(void) {
1144 return __kmp_aux_get_team_num();
1148int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_DEFAULT_DEVICE)(void) {
1149#if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB)
1152 return __kmp_entry_thread()->th.th_current_task->td_icvs.default_device;
1156void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_DEFAULT_DEVICE)(
int KMP_DEREF arg) {
1157#if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB)
1160 __kmp_entry_thread()->th.th_current_task->td_icvs.default_device =
1167int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NUM_DEVICES)(void)
1168 KMP_WEAK_ATTRIBUTE_EXTERNAL;
1169int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NUM_DEVICES)(void) {
1170#if KMP_MIC || KMP_OS_DARWIN || KMP_OS_WASI || defined(KMP_STUB)
1174 if ((*(
void **)(&fptr) = KMP_DLSYM(
"__tgt_get_num_devices"))) {
1176 }
else if ((*(
void **)(&fptr) = KMP_DLSYM_NEXT(
"omp_get_num_devices"))) {
1178 }
else if ((*(
void **)(&fptr) = KMP_DLSYM(
"_Offload_number_of_devices"))) {
1188int FTN_STDCALL KMP_EXPAND_NAME(FTN_IS_INITIAL_DEVICE)(void)
1189 KMP_WEAK_ATTRIBUTE_EXTERNAL;
1190int FTN_STDCALL KMP_EXPAND_NAME(FTN_IS_INITIAL_DEVICE)(void) {
1195int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_INITIAL_DEVICE)(void)
1196 KMP_WEAK_ATTRIBUTE_EXTERNAL;
1197int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_INITIAL_DEVICE)(void) {
1199 return KMP_EXPAND_NAME(FTN_GET_NUM_DEVICES)();
1202#if defined(KMP_STUB)
1205void *FTN_STDCALL FTN_TARGET_ALLOC(
size_t size,
int device_num) {
return 0; }
1207void FTN_STDCALL FTN_TARGET_FREE(
void *device_ptr,
int device_num) {}
1209int FTN_STDCALL FTN_TARGET_IS_PRESENT(
void *ptr,
int device_num) {
return 0; }
1211int FTN_STDCALL FTN_TARGET_MEMCPY(
void *dst,
void *src,
size_t length,
1212 size_t dst_offset,
size_t src_offset,
1213 int dst_device,
int src_device) {
1217int FTN_STDCALL FTN_TARGET_MEMCPY_RECT(
1218 void *dst,
void *src,
size_t element_size,
int num_dims,
1219 const size_t *volume,
const size_t *dst_offsets,
const size_t *src_offsets,
1220 const size_t *dst_dimensions,
const size_t *src_dimensions,
int dst_device,
1225int FTN_STDCALL FTN_TARGET_ASSOCIATE_PTR(
void *host_ptr,
void *device_ptr,
1226 size_t size,
size_t device_offset,
1231int FTN_STDCALL FTN_TARGET_DISASSOCIATE_PTR(
void *host_ptr,
int device_num) {
1237typedef enum { UNINIT = -1, UNLOCKED, LOCKED } kmp_stub_lock_t;
1240#if KMP_USE_DYNAMIC_LOCK
1241void FTN_STDCALL FTN_INIT_LOCK_WITH_HINT(
void **user_lock,
1242 uintptr_t KMP_DEREF hint) {
1244 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1246 int gtid = __kmp_entry_gtid();
1247#if OMPT_SUPPORT && OMPT_OPTIONAL
1248 OMPT_STORE_RETURN_ADDRESS(gtid);
1250 __kmpc_init_lock_with_hint(NULL, gtid, user_lock, KMP_DEREF hint);
1254void FTN_STDCALL FTN_INIT_NEST_LOCK_WITH_HINT(
void **user_lock,
1255 uintptr_t KMP_DEREF hint) {
1257 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1259 int gtid = __kmp_entry_gtid();
1260#if OMPT_SUPPORT && OMPT_OPTIONAL
1261 OMPT_STORE_RETURN_ADDRESS(gtid);
1263 __kmpc_init_nest_lock_with_hint(NULL, gtid, user_lock, KMP_DEREF hint);
1269void FTN_STDCALL KMP_EXPAND_NAME(FTN_INIT_LOCK)(
void **user_lock) {
1271 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1273 int gtid = __kmp_entry_gtid();
1274#if OMPT_SUPPORT && OMPT_OPTIONAL
1275 OMPT_STORE_RETURN_ADDRESS(gtid);
1277 __kmpc_init_lock(NULL, gtid, user_lock);
1282void FTN_STDCALL KMP_EXPAND_NAME(FTN_INIT_NEST_LOCK)(
void **user_lock) {
1284 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1286 int gtid = __kmp_entry_gtid();
1287#if OMPT_SUPPORT && OMPT_OPTIONAL
1288 OMPT_STORE_RETURN_ADDRESS(gtid);
1290 __kmpc_init_nest_lock(NULL, gtid, user_lock);
1294void FTN_STDCALL KMP_EXPAND_NAME(FTN_DESTROY_LOCK)(
void **user_lock) {
1296 *((kmp_stub_lock_t *)user_lock) = UNINIT;
1298 int gtid = __kmp_entry_gtid();
1299#if OMPT_SUPPORT && OMPT_OPTIONAL
1300 OMPT_STORE_RETURN_ADDRESS(gtid);
1302 __kmpc_destroy_lock(NULL, gtid, user_lock);
1306void FTN_STDCALL KMP_EXPAND_NAME(FTN_DESTROY_NEST_LOCK)(
void **user_lock) {
1308 *((kmp_stub_lock_t *)user_lock) = UNINIT;
1310 int gtid = __kmp_entry_gtid();
1311#if OMPT_SUPPORT && OMPT_OPTIONAL
1312 OMPT_STORE_RETURN_ADDRESS(gtid);
1314 __kmpc_destroy_nest_lock(NULL, gtid, user_lock);
1318void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_LOCK)(
void **user_lock) {
1320 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1323 if (*((kmp_stub_lock_t *)user_lock) != UNLOCKED) {
1326 *((kmp_stub_lock_t *)user_lock) = LOCKED;
1328 int gtid = __kmp_entry_gtid();
1329#if OMPT_SUPPORT && OMPT_OPTIONAL
1330 OMPT_STORE_RETURN_ADDRESS(gtid);
1332 __kmpc_set_lock(NULL, gtid, user_lock);
1336void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_NEST_LOCK)(
void **user_lock) {
1338 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1341 (*((
int *)user_lock))++;
1343 int gtid = __kmp_entry_gtid();
1344#if OMPT_SUPPORT && OMPT_OPTIONAL
1345 OMPT_STORE_RETURN_ADDRESS(gtid);
1347 __kmpc_set_nest_lock(NULL, gtid, user_lock);
1351void FTN_STDCALL KMP_EXPAND_NAME(FTN_UNSET_LOCK)(
void **user_lock) {
1353 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1356 if (*((kmp_stub_lock_t *)user_lock) == UNLOCKED) {
1359 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1361 int gtid = __kmp_entry_gtid();
1362#if OMPT_SUPPORT && OMPT_OPTIONAL
1363 OMPT_STORE_RETURN_ADDRESS(gtid);
1365 __kmpc_unset_lock(NULL, gtid, user_lock);
1369void FTN_STDCALL KMP_EXPAND_NAME(FTN_UNSET_NEST_LOCK)(
void **user_lock) {
1371 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1374 if (*((kmp_stub_lock_t *)user_lock) == UNLOCKED) {
1377 (*((
int *)user_lock))--;
1379 int gtid = __kmp_entry_gtid();
1380#if OMPT_SUPPORT && OMPT_OPTIONAL
1381 OMPT_STORE_RETURN_ADDRESS(gtid);
1383 __kmpc_unset_nest_lock(NULL, gtid, user_lock);
1387int FTN_STDCALL KMP_EXPAND_NAME(FTN_TEST_LOCK)(
void **user_lock) {
1389 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1392 if (*((kmp_stub_lock_t *)user_lock) == LOCKED) {
1395 *((kmp_stub_lock_t *)user_lock) = LOCKED;
1398 int gtid = __kmp_entry_gtid();
1399#if OMPT_SUPPORT && OMPT_OPTIONAL
1400 OMPT_STORE_RETURN_ADDRESS(gtid);
1402 return __kmpc_test_lock(NULL, gtid, user_lock);
1406int FTN_STDCALL KMP_EXPAND_NAME(FTN_TEST_NEST_LOCK)(
void **user_lock) {
1408 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1411 return ++(*((
int *)user_lock));
1413 int gtid = __kmp_entry_gtid();
1414#if OMPT_SUPPORT && OMPT_OPTIONAL
1415 OMPT_STORE_RETURN_ADDRESS(gtid);
1417 return __kmpc_test_nest_lock(NULL, gtid, user_lock);
1421double FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_WTIME)(void) {
1423 return __kmps_get_wtime();
1429 if (!__kmp_init_serial) {
1430 __kmp_serial_initialize();
1433 __kmp_elapsed(&data);
1438double FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_WTICK)(void) {
1440 return __kmps_get_wtick();
1443 if (!__kmp_init_serial) {
1444 __kmp_serial_initialize();
1446 __kmp_elapsed_tick(&data);
1453void *FTN_STDCALL FTN_MALLOC(
size_t KMP_DEREF size) {
1455 return kmpc_malloc(KMP_DEREF size);
1458void *FTN_STDCALL FTN_ALIGNED_MALLOC(
size_t KMP_DEREF size,
1459 size_t KMP_DEREF alignment) {
1461 return kmpc_aligned_malloc(KMP_DEREF size, KMP_DEREF alignment);
1464void *FTN_STDCALL FTN_CALLOC(
size_t KMP_DEREF nelem,
size_t KMP_DEREF elsize) {
1466 return kmpc_calloc(KMP_DEREF nelem, KMP_DEREF elsize);
1469void *FTN_STDCALL FTN_REALLOC(
void *KMP_DEREF ptr,
size_t KMP_DEREF size) {
1471 return kmpc_realloc(KMP_DEREF ptr, KMP_DEREF size);
1474void FTN_STDCALL FTN_KFREE(
void *KMP_DEREF ptr) {
1476 kmpc_free(KMP_DEREF ptr);
1479void FTN_STDCALL FTN_SET_WARNINGS_ON(
void) {
1481 __kmp_generate_warnings = kmp_warnings_explicit;
1485void FTN_STDCALL FTN_SET_WARNINGS_OFF(
void) {
1487 __kmp_generate_warnings = FALSE;
1491void FTN_STDCALL FTN_SET_DEFAULTS(
char const *str
1492#ifndef PASS_ARGS_BY_VALUE
1498#ifdef PASS_ARGS_BY_VALUE
1499 int len = (int)KMP_STRLEN(str);
1501 __kmp_aux_set_defaults(str, len);
1508int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_CANCELLATION)(void) {
1513 if (!__kmp_init_serial) {
1514 __kmp_serial_initialize();
1516 return __kmp_omp_cancellation;
1520int FTN_STDCALL FTN_GET_CANCELLATION_STATUS(
int cancel_kind) {
1524 return __kmp_get_cancellation_status(cancel_kind);
1529int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_MAX_TASK_PRIORITY)(void) {
1533 if (!__kmp_init_serial) {
1534 __kmp_serial_initialize();
1536 return __kmp_max_task_priority;
1543int FTN_STDCALL FTN_GET_DEVICE_NUM(
void) KMP_WEAK_ATTRIBUTE_EXTERNAL;
1544int FTN_STDCALL FTN_GET_DEVICE_NUM(
void) {
1545 return KMP_EXPAND_NAME(FTN_GET_INITIAL_DEVICE)();
1549int FTN_STDCALL KMP_EXPAND_NAME(FTN_PAUSE_RESOURCE)(kmp_pause_status_t kind,
1554 if (kind == kmp_stop_tool_paused)
1556 if (device_num == KMP_EXPAND_NAME(FTN_GET_INITIAL_DEVICE)())
1557 return __kmpc_pause_resource(kind);
1559 int (*fptr)(kmp_pause_status_t, int);
1560 if ((*(
void **)(&fptr) = KMP_DLSYM(
"tgt_pause_resource")))
1561 return (*fptr)(kind, device_num);
1570 KMP_EXPAND_NAME(FTN_PAUSE_RESOURCE_ALL)(kmp_pause_status_t kind) {
1575 int (*fptr)(kmp_pause_status_t, int);
1576 if ((*(
void **)(&fptr) = KMP_DLSYM(
"tgt_pause_resource")))
1577 fails = (*fptr)(kind, KMP_DEVICE_ALL);
1578 fails += __kmpc_pause_resource(kind);
1584int FTN_STDCALL FTN_GET_SUPPORTED_ACTIVE_LEVELS(
void) {
1588 return KMP_MAX_ACTIVE_LEVELS_LIMIT;
1592void FTN_STDCALL FTN_FULFILL_EVENT(kmp_event_t *event) {
1594 __kmp_fulfill_event(event);
1599void FTN_STDCALL FTN_SET_NUM_TEAMS(
int KMP_DEREF num_teams) {
1603 if (!__kmp_init_serial) {
1604 __kmp_serial_initialize();
1606 __kmp_set_num_teams(KMP_DEREF num_teams);
1609int FTN_STDCALL FTN_GET_MAX_TEAMS(
void) {
1613 if (!__kmp_init_serial) {
1614 __kmp_serial_initialize();
1616 return __kmp_get_max_teams();
1620void FTN_STDCALL FTN_SET_TEAMS_THREAD_LIMIT(
int KMP_DEREF limit) {
1624 if (!__kmp_init_serial) {
1625 __kmp_serial_initialize();
1627 __kmp_set_teams_thread_limit(KMP_DEREF limit);
1630int FTN_STDCALL FTN_GET_TEAMS_THREAD_LIMIT(
void) {
1634 if (!__kmp_init_serial) {
1635 __kmp_serial_initialize();
1637 return __kmp_get_teams_thread_limit();
1643typedef intptr_t omp_intptr_t;
1647typedef enum omp_interop_property {
1649 omp_ipr_fr_name = -2,
1650 omp_ipr_vendor = -3,
1651 omp_ipr_vendor_name = -4,
1652 omp_ipr_device_num = -5,
1653 omp_ipr_platform = -6,
1654 omp_ipr_device = -7,
1655 omp_ipr_device_context = -8,
1656 omp_ipr_targetsync = -9,
1658} omp_interop_property_t;
1660#define omp_interop_none 0
1662typedef enum omp_interop_rc {
1663 omp_irc_no_value = 1,
1664 omp_irc_success = 0,
1666 omp_irc_out_of_range = -2,
1667 omp_irc_type_int = -3,
1668 omp_irc_type_ptr = -4,
1669 omp_irc_type_str = -5,
1673typedef enum omp_interop_fr {
1675 omp_ifr_cuda_driver = 2,
1679 omp_ifr_level_zero = 6,
1683typedef void *omp_interop_t;
1686int FTN_STDCALL FTN_GET_NUM_INTEROP_PROPERTIES(
const omp_interop_t interop) {
1687#if KMP_OS_DARWIN || KMP_OS_WASI || defined(KMP_STUB)
1690 int (*fptr)(
const omp_interop_t);
1691 if ((*(
void **)(&fptr) = KMP_DLSYM_NEXT(
"omp_get_num_interop_properties")))
1692 return (*fptr)(interop);
1699intptr_t FTN_STDCALL FTN_GET_INTEROP_INT(
const omp_interop_t interop,
1700 omp_interop_property_t property_id,
1702#if KMP_OS_DARWIN || KMP_OS_WASI || defined(KMP_STUB)
1705 intptr_t (*fptr)(
const omp_interop_t, omp_interop_property_t,
int *);
1706 if ((*(
void **)(&fptr) = KMP_DLSYM_NEXT(
"omp_get_interop_int")))
1707 return (*fptr)(interop, property_id, err);
1713void *FTN_STDCALL FTN_GET_INTEROP_PTR(
const omp_interop_t interop,
1714 omp_interop_property_t property_id,
1716#if KMP_OS_DARWIN || KMP_OS_WASI || defined(KMP_STUB)
1719 void *(*fptr)(
const omp_interop_t, omp_interop_property_t,
int *);
1720 if ((*(
void **)(&fptr) = KMP_DLSYM_NEXT(
"omp_get_interop_ptr")))
1721 return (*fptr)(interop, property_id, err);
1727const char *FTN_STDCALL FTN_GET_INTEROP_STR(
const omp_interop_t interop,
1728 omp_interop_property_t property_id,
1730#if KMP_OS_DARWIN || KMP_OS_WASI || defined(KMP_STUB)
1733 const char *(*fptr)(
const omp_interop_t, omp_interop_property_t,
int *);
1734 if ((*(
void **)(&fptr) = KMP_DLSYM_NEXT(
"omp_get_interop_str")))
1735 return (*fptr)(interop, property_id, err);
1741const char *FTN_STDCALL FTN_GET_INTEROP_NAME(
1742 const omp_interop_t interop, omp_interop_property_t property_id) {
1743#if KMP_OS_DARWIN || KMP_OS_WASI || defined(KMP_STUB)
1746 const char *(*fptr)(
const omp_interop_t, omp_interop_property_t);
1747 if ((*(
void **)(&fptr) = KMP_DLSYM_NEXT(
"omp_get_interop_name")))
1748 return (*fptr)(interop, property_id);
1754const char *FTN_STDCALL FTN_GET_INTEROP_TYPE_DESC(
1755 const omp_interop_t interop, omp_interop_property_t property_id) {
1756#if KMP_OS_DARWIN || KMP_OS_WASI || defined(KMP_STUB)
1759 const char *(*fptr)(
const omp_interop_t, omp_interop_property_t);
1760 if ((*(
void **)(&fptr) = KMP_DLSYM_NEXT(
"omp_get_interop_type_desc")))
1761 return (*fptr)(interop, property_id);
1767const char *FTN_STDCALL FTN_GET_INTEROP_RC_DESC(
1768 const omp_interop_t interop, omp_interop_property_t property_id) {
1769#if KMP_OS_DARWIN || KMP_OS_WASI || defined(KMP_STUB)
1772 const char *(*fptr)(
const omp_interop_t, omp_interop_property_t);
1773 if ((*(
void **)(&fptr) = KMP_DLSYM_NEXT(
"omp_get_interop_rec_desc")))
1774 return (*fptr)(interop, property_id);
1780void FTN_STDCALL FTN_DISPLAY_ENV(
int verbose) {
1782 __kmp_omp_display_env(verbose);
1786int FTN_STDCALL FTN_IN_EXPLICIT_TASK(
void) {
1790 int gtid = __kmp_entry_gtid();
1791 return __kmp_thread_from_gtid(gtid)->th.th_current_task->td_flags.tasktype;
1796#ifdef KMP_USE_VERSION_SYMBOLS
1818KMP_VERSION_SYMBOL(FTN_SET_NUM_THREADS, 10,
"OMP_1.0");
1819KMP_VERSION_SYMBOL(FTN_GET_NUM_THREADS, 10,
"OMP_1.0");
1820KMP_VERSION_SYMBOL(FTN_GET_MAX_THREADS, 10,
"OMP_1.0");
1821KMP_VERSION_SYMBOL(FTN_GET_THREAD_NUM, 10,
"OMP_1.0");
1822KMP_VERSION_SYMBOL(FTN_GET_NUM_PROCS, 10,
"OMP_1.0");
1823KMP_VERSION_SYMBOL(FTN_IN_PARALLEL, 10,
"OMP_1.0");
1824KMP_VERSION_SYMBOL(FTN_SET_DYNAMIC, 10,
"OMP_1.0");
1825KMP_VERSION_SYMBOL(FTN_GET_DYNAMIC, 10,
"OMP_1.0");
1826KMP_VERSION_SYMBOL(FTN_SET_NESTED, 10,
"OMP_1.0");
1827KMP_VERSION_SYMBOL(FTN_GET_NESTED, 10,
"OMP_1.0");
1828KMP_VERSION_SYMBOL(FTN_INIT_LOCK, 10,
"OMP_1.0");
1829KMP_VERSION_SYMBOL(FTN_INIT_NEST_LOCK, 10,
"OMP_1.0");
1830KMP_VERSION_SYMBOL(FTN_DESTROY_LOCK, 10,
"OMP_1.0");
1831KMP_VERSION_SYMBOL(FTN_DESTROY_NEST_LOCK, 10,
"OMP_1.0");
1832KMP_VERSION_SYMBOL(FTN_SET_LOCK, 10,
"OMP_1.0");
1833KMP_VERSION_SYMBOL(FTN_SET_NEST_LOCK, 10,
"OMP_1.0");
1834KMP_VERSION_SYMBOL(FTN_UNSET_LOCK, 10,
"OMP_1.0");
1835KMP_VERSION_SYMBOL(FTN_UNSET_NEST_LOCK, 10,
"OMP_1.0");
1836KMP_VERSION_SYMBOL(FTN_TEST_LOCK, 10,
"OMP_1.0");
1837KMP_VERSION_SYMBOL(FTN_TEST_NEST_LOCK, 10,
"OMP_1.0");
1840KMP_VERSION_SYMBOL(FTN_GET_WTICK, 20,
"OMP_2.0");
1841KMP_VERSION_SYMBOL(FTN_GET_WTIME, 20,
"OMP_2.0");
1844KMP_VERSION_SYMBOL(FTN_SET_SCHEDULE, 30,
"OMP_3.0");
1845KMP_VERSION_SYMBOL(FTN_GET_SCHEDULE, 30,
"OMP_3.0");
1846KMP_VERSION_SYMBOL(FTN_GET_THREAD_LIMIT, 30,
"OMP_3.0");
1847KMP_VERSION_SYMBOL(FTN_SET_MAX_ACTIVE_LEVELS, 30,
"OMP_3.0");
1848KMP_VERSION_SYMBOL(FTN_GET_MAX_ACTIVE_LEVELS, 30,
"OMP_3.0");
1849KMP_VERSION_SYMBOL(FTN_GET_ANCESTOR_THREAD_NUM, 30,
"OMP_3.0");
1850KMP_VERSION_SYMBOL(FTN_GET_LEVEL, 30,
"OMP_3.0");
1851KMP_VERSION_SYMBOL(FTN_GET_TEAM_SIZE, 30,
"OMP_3.0");
1852KMP_VERSION_SYMBOL(FTN_GET_ACTIVE_LEVEL, 30,
"OMP_3.0");
1855KMP_VERSION_SYMBOL(FTN_INIT_LOCK, 30,
"OMP_3.0");
1856KMP_VERSION_SYMBOL(FTN_INIT_NEST_LOCK, 30,
"OMP_3.0");
1857KMP_VERSION_SYMBOL(FTN_DESTROY_LOCK, 30,
"OMP_3.0");
1858KMP_VERSION_SYMBOL(FTN_DESTROY_NEST_LOCK, 30,
"OMP_3.0");
1859KMP_VERSION_SYMBOL(FTN_SET_LOCK, 30,
"OMP_3.0");
1860KMP_VERSION_SYMBOL(FTN_SET_NEST_LOCK, 30,
"OMP_3.0");
1861KMP_VERSION_SYMBOL(FTN_UNSET_LOCK, 30,
"OMP_3.0");
1862KMP_VERSION_SYMBOL(FTN_UNSET_NEST_LOCK, 30,
"OMP_3.0");
1863KMP_VERSION_SYMBOL(FTN_TEST_LOCK, 30,
"OMP_3.0");
1864KMP_VERSION_SYMBOL(FTN_TEST_NEST_LOCK, 30,
"OMP_3.0");
1867KMP_VERSION_SYMBOL(FTN_IN_FINAL, 31,
"OMP_3.1");
1870KMP_VERSION_SYMBOL(FTN_GET_PROC_BIND, 40,
"OMP_4.0");
1871KMP_VERSION_SYMBOL(FTN_GET_NUM_TEAMS, 40,
"OMP_4.0");
1872KMP_VERSION_SYMBOL(FTN_GET_TEAM_NUM, 40,
"OMP_4.0");
1873KMP_VERSION_SYMBOL(FTN_GET_CANCELLATION, 40,
"OMP_4.0");
1874KMP_VERSION_SYMBOL(FTN_GET_DEFAULT_DEVICE, 40,
"OMP_4.0");
1875KMP_VERSION_SYMBOL(FTN_SET_DEFAULT_DEVICE, 40,
"OMP_4.0");
1876KMP_VERSION_SYMBOL(FTN_IS_INITIAL_DEVICE, 40,
"OMP_4.0");
1877KMP_VERSION_SYMBOL(FTN_GET_NUM_DEVICES, 40,
"OMP_4.0");
1880KMP_VERSION_SYMBOL(FTN_GET_MAX_TASK_PRIORITY, 45,
"OMP_4.5");
1881KMP_VERSION_SYMBOL(FTN_GET_NUM_PLACES, 45,
"OMP_4.5");
1882KMP_VERSION_SYMBOL(FTN_GET_PLACE_NUM_PROCS, 45,
"OMP_4.5");
1883KMP_VERSION_SYMBOL(FTN_GET_PLACE_PROC_IDS, 45,
"OMP_4.5");
1884KMP_VERSION_SYMBOL(FTN_GET_PLACE_NUM, 45,
"OMP_4.5");
1885KMP_VERSION_SYMBOL(FTN_GET_PARTITION_NUM_PLACES, 45,
"OMP_4.5");
1886KMP_VERSION_SYMBOL(FTN_GET_PARTITION_PLACE_NUMS, 45,
"OMP_4.5");
1887KMP_VERSION_SYMBOL(FTN_GET_INITIAL_DEVICE, 45,
"OMP_4.5");
1891KMP_VERSION_SYMBOL(FTN_PAUSE_RESOURCE, 50,
"OMP_5.0");
1892KMP_VERSION_SYMBOL(FTN_PAUSE_RESOURCE_ALL, 50,
"OMP_5.0");
1894#if KMP_FTN_ENTRIES == KMP_FTN_APPEND
1895KMP_VERSION_SYMBOL(FTN_CAPTURE_AFFINITY, 50,
"OMP_5.0");
1896KMP_VERSION_SYMBOL(FTN_DISPLAY_AFFINITY, 50,
"OMP_5.0");
1897KMP_VERSION_SYMBOL(FTN_GET_AFFINITY_FORMAT, 50,
"OMP_5.0");
1898KMP_VERSION_SYMBOL(FTN_SET_AFFINITY_FORMAT, 50,
"OMP_5.0");
KMP_EXPORT kmp_int32 __kmpc_bound_num_threads(ident_t *)