17 # error The support file kmp_ftn_entry.h should not be compiled by itself. 40 #ifdef KMP_GOMP_COMPAT 41 # if (KMP_FTN_ENTRIES == KMP_FTN_PLAIN) || (KMP_FTN_ENTRIES == KMP_FTN_UPPER) 42 # define PASS_ARGS_BY_VALUE 1 46 # if (KMP_FTN_ENTRIES == KMP_FTN_PLAIN) || (KMP_FTN_ENTRIES == KMP_FTN_APPEND) 47 # define PASS_ARGS_BY_VALUE 1 52 #ifdef PASS_ARGS_BY_VALUE 59 FTN_SET_STACKSIZE(
int KMP_DEREF arg )
62 __kmps_set_stacksize( KMP_DEREF arg );
65 __kmp_aux_set_stacksize( (
size_t) KMP_DEREF arg );
70 FTN_SET_STACKSIZE_S(
size_t KMP_DEREF arg )
73 __kmps_set_stacksize( KMP_DEREF arg );
76 __kmp_aux_set_stacksize( KMP_DEREF arg );
81 FTN_GET_STACKSIZE(
void )
84 return __kmps_get_stacksize();
86 if ( ! __kmp_init_serial ) {
87 __kmp_serial_initialize();
89 return (
int)__kmp_stksize;
94 FTN_GET_STACKSIZE_S(
void )
97 return __kmps_get_stacksize();
99 if ( ! __kmp_init_serial ) {
100 __kmp_serial_initialize();
102 return __kmp_stksize;
107 FTN_SET_BLOCKTIME(
int KMP_DEREF arg )
110 __kmps_set_blocktime( KMP_DEREF arg );
115 gtid = __kmp_entry_gtid();
116 tid = __kmp_tid_from_gtid(gtid);
117 thread = __kmp_thread_from_gtid(gtid);
119 __kmp_aux_set_blocktime( KMP_DEREF arg, thread, tid );
124 FTN_GET_BLOCKTIME(
void )
127 return __kmps_get_blocktime();
133 gtid = __kmp_entry_gtid();
134 tid = __kmp_tid_from_gtid(gtid);
135 thread = __kmp_thread_from_gtid(gtid);
136 team = __kmp_threads[ gtid ] -> th.th_team;
139 if ( __kmp_dflt_blocktime == KMP_MAX_BLOCKTIME ) {
140 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n",
141 gtid, team->t.t_id, tid, KMP_MAX_BLOCKTIME) );
142 return KMP_MAX_BLOCKTIME;
144 #ifdef KMP_ADJUST_BLOCKTIME 145 else if ( __kmp_zero_bt && !get__bt_set( team, tid ) ) {
146 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n",
147 gtid, team->t.t_id, tid, 0) );
152 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n",
153 gtid, team->t.t_id, tid, get__blocktime( team, tid ) ) );
154 return get__blocktime( team, tid );
160 FTN_SET_LIBRARY_SERIAL(
void )
163 __kmps_set_library( library_serial );
166 __kmp_user_set_library( library_serial );
171 FTN_SET_LIBRARY_TURNAROUND(
void )
174 __kmps_set_library( library_turnaround );
177 __kmp_user_set_library( library_turnaround );
182 FTN_SET_LIBRARY_THROUGHPUT(
void )
185 __kmps_set_library( library_throughput );
188 __kmp_user_set_library( library_throughput );
193 FTN_SET_LIBRARY(
int KMP_DEREF arg )
196 __kmps_set_library( KMP_DEREF arg );
198 enum library_type lib;
199 lib = (
enum library_type) KMP_DEREF arg;
201 __kmp_user_set_library( lib );
206 FTN_GET_LIBRARY (
void)
209 return __kmps_get_library();
211 if ( ! __kmp_init_serial ) {
212 __kmp_serial_initialize();
214 return ((
int) __kmp_library);
219 FTN_SET_DISP_NUM_BUFFERS(
int KMP_DEREF arg )
226 if( __kmp_init_serial == 0 && (KMP_DEREF arg) > 0 )
227 __kmp_dispatch_num_buffers = KMP_DEREF arg;
232 FTN_SET_AFFINITY(
void **mask )
234 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 237 if ( ! TCR_4(__kmp_init_middle) ) {
238 __kmp_middle_initialize();
240 return __kmp_aux_set_affinity( mask );
245 FTN_GET_AFFINITY(
void **mask )
247 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 250 if ( ! TCR_4(__kmp_init_middle) ) {
251 __kmp_middle_initialize();
253 return __kmp_aux_get_affinity( mask );
258 FTN_GET_AFFINITY_MAX_PROC(
void )
260 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 266 if ( ! TCR_4(__kmp_init_middle) ) {
267 __kmp_middle_initialize();
269 if ( ! ( KMP_AFFINITY_CAPABLE() ) ) {
273 #if KMP_GROUP_AFFINITY 274 if ( __kmp_num_proc_groups > 1 ) {
275 return (
int)(__kmp_num_proc_groups*
sizeof(DWORD_PTR)*CHAR_BIT);
283 FTN_CREATE_AFFINITY_MASK(
void **mask )
285 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 291 if ( ! TCR_4(__kmp_init_middle) ) {
292 __kmp_middle_initialize();
295 *mask = (hwloc_cpuset_t)hwloc_bitmap_alloc();
297 *mask = kmpc_malloc( __kmp_affin_mask_size );
299 KMP_CPU_ZERO( (kmp_affin_mask_t *)(*mask) );
304 FTN_DESTROY_AFFINITY_MASK(
void **mask )
306 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 312 if ( ! TCR_4(__kmp_init_middle) ) {
313 __kmp_middle_initialize();
315 if ( __kmp_env_consistency_check ) {
316 if ( *mask == NULL ) {
317 KMP_FATAL( AffinityInvalidMask,
"kmp_destroy_affinity_mask" );
321 hwloc_bitmap_free((hwloc_cpuset_t)(*mask));
330 FTN_SET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask )
332 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 335 if ( ! TCR_4(__kmp_init_middle) ) {
336 __kmp_middle_initialize();
338 return __kmp_aux_set_affinity_mask_proc( KMP_DEREF proc, mask );
343 FTN_UNSET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask )
345 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 348 if ( ! TCR_4(__kmp_init_middle) ) {
349 __kmp_middle_initialize();
351 return __kmp_aux_unset_affinity_mask_proc( KMP_DEREF proc, mask );
356 FTN_GET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask )
358 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 361 if ( ! TCR_4(__kmp_init_middle) ) {
362 __kmp_middle_initialize();
364 return __kmp_aux_get_affinity_mask_proc( KMP_DEREF proc, mask );
374 xexpand(FTN_SET_NUM_THREADS)(
int KMP_DEREF arg )
379 __kmp_set_num_threads( KMP_DEREF arg, __kmp_entry_gtid() );
386 xexpand(FTN_GET_NUM_THREADS)( void )
397 xexpand(FTN_GET_MAX_THREADS)( void )
404 if ( ! TCR_4(__kmp_init_middle) ) {
405 __kmp_middle_initialize();
407 gtid = __kmp_entry_gtid();
408 thread = __kmp_threads[ gtid ];
410 return thread -> th.th_current_task -> td_icvs.nproc;
415 xexpand(FTN_GET_THREAD_NUM)( void )
422 #if KMP_OS_DARWIN || KMP_OS_FREEBSD || KMP_OS_NETBSD 423 gtid = __kmp_entry_gtid();
425 if (!__kmp_init_parallel ||
426 (gtid = (
int)((kmp_intptr_t)TlsGetValue( __kmp_gtid_threadprivate_key ))) == 0) {
433 #ifdef KMP_TDATA_GTID 434 if ( __kmp_gtid_mode >= 3 ) {
435 if ((gtid = __kmp_gtid) == KMP_GTID_DNE) {
440 if (!__kmp_init_parallel ||
441 (gtid = (kmp_intptr_t)(pthread_getspecific( __kmp_gtid_threadprivate_key ))) == 0) {
445 #ifdef KMP_TDATA_GTID 449 #error Unknown or unsupported OS 452 return __kmp_tid_from_gtid( gtid );
457 FTN_GET_NUM_KNOWN_THREADS(
void )
462 if ( ! __kmp_init_serial ) {
463 __kmp_serial_initialize();
467 return TCR_4(__kmp_nth);
472 xexpand(FTN_GET_NUM_PROCS)( void )
477 if ( ! TCR_4(__kmp_init_middle) ) {
478 __kmp_middle_initialize();
480 return __kmp_avail_proc;
485 xexpand(FTN_SET_NESTED)(
int KMP_DEREF flag )
488 __kmps_set_nested( KMP_DEREF flag );
492 thread = __kmp_entry_thread();
493 __kmp_save_internal_controls( thread );
494 set__nested( thread, ( (KMP_DEREF flag) ? TRUE : FALSE ) );
500 xexpand(FTN_GET_NESTED)( void )
503 return __kmps_get_nested();
506 thread = __kmp_entry_thread();
507 return get__nested( thread );
512 xexpand(FTN_SET_DYNAMIC)(
int KMP_DEREF flag )
515 __kmps_set_dynamic( KMP_DEREF flag ? TRUE : FALSE );
519 thread = __kmp_entry_thread();
521 __kmp_save_internal_controls( thread );
522 set__dynamic( thread, KMP_DEREF flag ? TRUE : FALSE );
528 xexpand(FTN_GET_DYNAMIC)( void )
531 return __kmps_get_dynamic();
534 thread = __kmp_entry_thread();
535 return get__dynamic( thread );
540 xexpand(FTN_IN_PARALLEL)( void )
545 kmp_info_t *th = __kmp_entry_thread();
547 if ( th->th.th_teams_microtask ) {
552 return ( th->th.th_team->t.t_active_level ? 1 : 0 );
556 return ( th->th.th_root->r.r_in_parallel ? FTN_TRUE : FTN_FALSE );
561 xexpand(FTN_SET_SCHEDULE)( kmp_sched_t KMP_DEREF kind,
int KMP_DEREF modifier )
564 __kmps_set_schedule( KMP_DEREF kind, KMP_DEREF modifier );
568 __kmp_set_schedule( __kmp_entry_gtid(), KMP_DEREF kind, KMP_DEREF modifier );
573 xexpand(FTN_GET_SCHEDULE)( kmp_sched_t * kind,
int * modifier )
576 __kmps_get_schedule( kind, modifier );
580 __kmp_get_schedule( __kmp_entry_gtid(), kind, modifier );
585 xexpand(FTN_SET_MAX_ACTIVE_LEVELS)(
int KMP_DEREF arg )
592 __kmp_set_max_active_levels( __kmp_entry_gtid(), KMP_DEREF arg );
597 xexpand(FTN_GET_MAX_ACTIVE_LEVELS)( void )
604 return __kmp_get_max_active_levels( __kmp_entry_gtid() );
609 xexpand(FTN_GET_ACTIVE_LEVEL)( void )
616 return __kmp_entry_thread() -> th.th_team -> t.t_active_level;
621 xexpand(FTN_GET_LEVEL)( void )
628 return __kmp_entry_thread() -> th.th_team -> t.t_level;
633 xexpand(FTN_GET_ANCESTOR_THREAD_NUM)(
int KMP_DEREF level )
636 return ( KMP_DEREF level ) ? ( -1 ) : ( 0 );
638 return __kmp_get_ancestor_thread_num( __kmp_entry_gtid(), KMP_DEREF level );
643 xexpand(FTN_GET_TEAM_SIZE)(
int KMP_DEREF level )
646 return ( KMP_DEREF level ) ? ( -1 ) : ( 1 );
648 return __kmp_get_team_size( __kmp_entry_gtid(), KMP_DEREF level );
653 xexpand(FTN_GET_THREAD_LIMIT)( void )
658 if ( ! __kmp_init_serial ) {
659 __kmp_serial_initialize();
662 return __kmp_max_nth;
667 xexpand(FTN_IN_FINAL)( void )
672 if ( ! TCR_4(__kmp_init_parallel) ) {
675 return __kmp_entry_thread() -> th.th_current_task -> td_flags.final;
682 kmp_proc_bind_t FTN_STDCALL
683 xexpand(FTN_GET_PROC_BIND)( void )
686 return __kmps_get_proc_bind();
688 return get__proc_bind( __kmp_entry_thread() );
694 FTN_GET_NUM_PLACES(
void )
696 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 699 if ( ! TCR_4(__kmp_init_middle) ) {
700 __kmp_middle_initialize();
702 return __kmp_affinity_num_masks;
707 FTN_GET_PLACE_NUM_PROCS(
int place_num )
709 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 714 if ( ! TCR_4(__kmp_init_middle) ) {
715 __kmp_middle_initialize();
717 if ( place_num < 0 || place_num >= (
int)__kmp_affinity_num_masks )
719 kmp_affin_mask_t *mask = KMP_CPU_INDEX(__kmp_affinity_masks, place_num);
720 KMP_CPU_SET_ITERATE(i, mask) {
721 if ((! KMP_CPU_ISSET(i, __kmp_affin_fullMask)) ||
722 (!KMP_CPU_ISSET(i, mask))) {
732 FTN_GET_PLACE_PROC_IDS(
int place_num,
int *ids )
734 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 738 if ( ! TCR_4(__kmp_init_middle) ) {
739 __kmp_middle_initialize();
741 if ( place_num < 0 || place_num >= (
int)__kmp_affinity_num_masks )
743 kmp_affin_mask_t *mask = KMP_CPU_INDEX(__kmp_affinity_masks, place_num);
745 KMP_CPU_SET_ITERATE(i, mask) {
746 if ((! KMP_CPU_ISSET(i, __kmp_affin_fullMask)) ||
747 (!KMP_CPU_ISSET(i, mask))) {
756 FTN_GET_PLACE_NUM(
void )
758 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 763 if ( ! TCR_4(__kmp_init_middle) ) {
764 __kmp_middle_initialize();
766 gtid = __kmp_entry_gtid();
767 thread = __kmp_thread_from_gtid(gtid);
768 if ( thread->th.th_current_place < 0 )
770 return thread->th.th_current_place;
775 FTN_GET_PARTITION_NUM_PLACES(
void )
777 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 780 int gtid, num_places, first_place, last_place;
782 if ( ! TCR_4(__kmp_init_middle) ) {
783 __kmp_middle_initialize();
785 gtid = __kmp_entry_gtid();
786 thread = __kmp_thread_from_gtid(gtid);
787 first_place = thread->th.th_first_place;
788 last_place = thread->th.th_last_place;
789 if ( first_place < 0 || last_place < 0 )
791 if ( first_place <= last_place )
792 num_places = last_place - first_place + 1;
794 num_places = __kmp_affinity_num_masks - first_place + last_place + 1;
800 FTN_GET_PARTITION_PLACE_NUMS(
int *place_nums ) {
801 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 804 int i, gtid, place_num, first_place, last_place, start, end;
806 if ( ! TCR_4(__kmp_init_middle) ) {
807 __kmp_middle_initialize();
809 gtid = __kmp_entry_gtid();
810 thread = __kmp_thread_from_gtid(gtid);
811 first_place = thread->th.th_first_place;
812 last_place = thread->th.th_last_place;
813 if ( first_place < 0 || last_place < 0 )
815 if ( first_place <= last_place ) {
822 for (i = 0, place_num = start; place_num <= end; ++place_num, ++i) {
823 place_nums[i] = place_num;
830 xexpand(FTN_GET_NUM_TEAMS)( void )
835 kmp_info_t *thr = __kmp_entry_thread();
836 if ( thr->th.th_teams_microtask ) {
837 kmp_team_t *team = thr->th.th_team;
838 int tlevel = thr->th.th_teams_level;
839 int ii = team->t.t_level;
840 int dd = team -> t.t_serialized;
841 int level = tlevel + 1;
842 KMP_DEBUG_ASSERT( ii >= tlevel );
845 for( dd = team -> t.t_serialized; ( dd > 0 ) && ( ii > level ); dd--, ii-- )
848 if( team -> t.t_serialized && ( !dd ) ) {
849 team = team->t.t_parent;
853 team = team->t.t_parent;
860 return team->t.t_parent->t.t_nproc;
869 xexpand(FTN_GET_TEAM_NUM)( void )
874 kmp_info_t *thr = __kmp_entry_thread();
875 if ( thr->th.th_teams_microtask ) {
876 kmp_team_t *team = thr->th.th_team;
877 int tlevel = thr->th.th_teams_level;
878 int ii = team->t.t_level;
879 int dd = team -> t.t_serialized;
880 int level = tlevel + 1;
881 KMP_DEBUG_ASSERT( ii >= tlevel );
884 for( dd = team -> t.t_serialized; ( dd > 0 ) && ( ii > level ); dd--, ii-- )
887 if( team -> t.t_serialized && ( !dd ) ) {
888 team = team->t.t_parent;
892 team = team->t.t_parent;
899 return team->t.t_master_tid;
907 #if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB) 910 FTN_GET_DEFAULT_DEVICE(
void )
916 FTN_SET_DEFAULT_DEVICE(
int KMP_DEREF arg )
921 FTN_GET_NUM_DEVICES(
void )
926 #endif // KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB) 931 xexpand(FTN_IS_INITIAL_DEVICE)( void )
940 int _Offload_get_device_number(
void ) __attribute__((weak));
943 xexpand(FTN_IS_INITIAL_DEVICE)(
void )
945 if( _Offload_get_device_number ) {
946 return _Offload_get_device_number() == -1;
952 #endif // ! KMP_OS_LINUX 954 #endif // OMP_40_ENABLED 956 #if OMP_45_ENABLED && defined(KMP_STUB) 960 FTN_GET_INITIAL_DEVICE(
void)
967 FTN_TARGET_ALLOC(
size_t size,
int device_num)
973 FTN_TARGET_FREE(
void * device_ptr,
int device_num)
978 FTN_TARGET_IS_PRESENT(
void * ptr,
int device_num)
984 FTN_TARGET_MEMCPY(
void *dst,
void *src,
size_t length,
size_t dst_offset,
985 size_t src_offset,
int dst_device,
int src_device)
991 FTN_TARGET_MEMCPY_RECT(
void *dst,
void *src,
size_t element_size,
int num_dims,
992 const size_t *volume,
const size_t *dst_offsets,
993 const size_t *src_offsets,
const size_t *dst_dimensions,
994 const size_t *src_dimensions,
int dst_device,
int src_device)
1000 FTN_TARGET_ASSOCIATE_PTR(
void *host_ptr,
void *device_ptr,
size_t size,
1001 size_t device_offset,
int device_num)
1007 FTN_TARGET_DISASSOCIATE_PTR(
void *host_ptr,
int device_num)
1011 #endif // OMP_45_ENABLED && defined(KMP_STUB) 1014 typedef enum { UNINIT = -1, UNLOCKED, LOCKED } kmp_stub_lock_t;
1017 #if KMP_USE_DYNAMIC_LOCK 1019 FTN_INIT_LOCK_WITH_HINT(
void **user_lock, uintptr_t KMP_DEREF hint )
1022 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1024 __kmpc_init_lock_with_hint( NULL, __kmp_entry_gtid(), user_lock, KMP_DEREF hint );
1029 FTN_INIT_NEST_LOCK_WITH_HINT(
void **user_lock, uintptr_t KMP_DEREF hint )
1032 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1034 __kmpc_init_nest_lock_with_hint( NULL, __kmp_entry_gtid(), user_lock, KMP_DEREF hint );
1041 xexpand(FTN_INIT_LOCK)(
void **user_lock )
1044 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1046 __kmpc_init_lock( NULL, __kmp_entry_gtid(), user_lock );
1052 xexpand(FTN_INIT_NEST_LOCK)(
void **user_lock )
1055 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1057 __kmpc_init_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
1062 xexpand(FTN_DESTROY_LOCK)(
void **user_lock )
1065 *((kmp_stub_lock_t *)user_lock) = UNINIT;
1067 __kmpc_destroy_lock( NULL, __kmp_entry_gtid(), user_lock );
1072 xexpand(FTN_DESTROY_NEST_LOCK)(
void **user_lock )
1075 *((kmp_stub_lock_t *)user_lock) = UNINIT;
1077 __kmpc_destroy_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
1082 xexpand(FTN_SET_LOCK)(
void **user_lock )
1085 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1088 if ( *((kmp_stub_lock_t *)user_lock) != UNLOCKED ) {
1091 *((kmp_stub_lock_t *)user_lock) = LOCKED;
1093 __kmpc_set_lock( NULL, __kmp_entry_gtid(), user_lock );
1098 xexpand(FTN_SET_NEST_LOCK)(
void **user_lock )
1101 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1104 (*((
int *)user_lock))++;
1106 __kmpc_set_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
1111 xexpand(FTN_UNSET_LOCK)(
void **user_lock )
1114 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1117 if ( *((kmp_stub_lock_t *)user_lock) == UNLOCKED ) {
1120 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1122 __kmpc_unset_lock( NULL, __kmp_entry_gtid(), user_lock );
1127 xexpand(FTN_UNSET_NEST_LOCK)(
void **user_lock )
1130 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1133 if ( *((kmp_stub_lock_t *)user_lock) == UNLOCKED ) {
1136 (*((
int *)user_lock))--;
1138 __kmpc_unset_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
1143 xexpand(FTN_TEST_LOCK)(
void **user_lock )
1146 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1149 if ( *((kmp_stub_lock_t *)user_lock) == LOCKED ) {
1152 *((kmp_stub_lock_t *)user_lock) = LOCKED;
1155 return __kmpc_test_lock( NULL, __kmp_entry_gtid(), user_lock );
1160 xexpand(FTN_TEST_NEST_LOCK)(
void **user_lock )
1163 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1166 return ++(*((
int *)user_lock));
1168 return __kmpc_test_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
1173 xexpand(FTN_GET_WTIME)( void )
1176 return __kmps_get_wtime();
1182 if ( ! __kmp_init_serial ) {
1183 __kmp_serial_initialize();
1186 __kmp_elapsed( & data );
1192 xexpand(FTN_GET_WTICK)( void )
1195 return __kmps_get_wtick();
1198 if ( ! __kmp_init_serial ) {
1199 __kmp_serial_initialize();
1201 __kmp_elapsed_tick( & data );
1209 FTN_MALLOC(
size_t KMP_DEREF size )
1212 return kmpc_malloc( KMP_DEREF size );
1216 FTN_ALIGNED_MALLOC(
size_t KMP_DEREF size,
size_t KMP_DEREF alignment )
1219 return kmpc_aligned_malloc( KMP_DEREF size, KMP_DEREF alignment );
1223 FTN_CALLOC(
size_t KMP_DEREF nelem,
size_t KMP_DEREF elsize )
1226 return kmpc_calloc( KMP_DEREF nelem, KMP_DEREF elsize );
1230 FTN_REALLOC(
void * KMP_DEREF ptr,
size_t KMP_DEREF size )
1233 return kmpc_realloc( KMP_DEREF ptr, KMP_DEREF size );
1237 FTN_FREE(
void * KMP_DEREF ptr )
1240 kmpc_free( KMP_DEREF ptr );
1244 FTN_SET_WARNINGS_ON(
void )
1247 __kmp_generate_warnings = kmp_warnings_explicit;
1252 FTN_SET_WARNINGS_OFF(
void )
1255 __kmp_generate_warnings = FALSE;
1260 FTN_SET_DEFAULTS(
char const * str
1261 #ifndef PASS_ARGS_BY_VALUE
1267 #ifdef PASS_ARGS_BY_VALUE 1268 int len = (int)KMP_STRLEN( str );
1270 __kmp_aux_set_defaults( str, len );
1280 xexpand(FTN_GET_CANCELLATION)(void) {
1285 if ( ! __kmp_init_serial ) {
1286 __kmp_serial_initialize();
1288 return __kmp_omp_cancellation;
1293 FTN_GET_CANCELLATION_STATUS(
int cancel_kind) {
1297 return __kmp_get_cancellation_status(cancel_kind);
1301 #endif // OMP_40_ENABLED 1306 FTN_GET_MAX_TASK_PRIORITY(
void )
1311 if ( ! __kmp_init_serial ) {
1312 __kmp_serial_initialize();
1314 return __kmp_max_task_priority;
1320 #ifdef KMP_USE_VERSION_SYMBOLS 1339 xaliasify(FTN_SET_NUM_THREADS, 10);
1340 xaliasify(FTN_GET_NUM_THREADS, 10);
1341 xaliasify(FTN_GET_MAX_THREADS, 10);
1342 xaliasify(FTN_GET_THREAD_NUM, 10);
1343 xaliasify(FTN_GET_NUM_PROCS, 10);
1344 xaliasify(FTN_IN_PARALLEL, 10);
1345 xaliasify(FTN_SET_DYNAMIC, 10);
1346 xaliasify(FTN_GET_DYNAMIC, 10);
1347 xaliasify(FTN_SET_NESTED, 10);
1348 xaliasify(FTN_GET_NESTED, 10);
1349 xaliasify(FTN_INIT_LOCK, 10);
1350 xaliasify(FTN_INIT_NEST_LOCK, 10);
1351 xaliasify(FTN_DESTROY_LOCK, 10);
1352 xaliasify(FTN_DESTROY_NEST_LOCK, 10);
1353 xaliasify(FTN_SET_LOCK, 10);
1354 xaliasify(FTN_SET_NEST_LOCK, 10);
1355 xaliasify(FTN_UNSET_LOCK, 10);
1356 xaliasify(FTN_UNSET_NEST_LOCK, 10);
1357 xaliasify(FTN_TEST_LOCK, 10);
1358 xaliasify(FTN_TEST_NEST_LOCK, 10);
1361 xaliasify(FTN_GET_WTICK, 20);
1362 xaliasify(FTN_GET_WTIME, 20);
1365 xaliasify(FTN_SET_SCHEDULE, 30);
1366 xaliasify(FTN_GET_SCHEDULE, 30);
1367 xaliasify(FTN_GET_THREAD_LIMIT, 30);
1368 xaliasify(FTN_SET_MAX_ACTIVE_LEVELS, 30);
1369 xaliasify(FTN_GET_MAX_ACTIVE_LEVELS, 30);
1370 xaliasify(FTN_GET_LEVEL, 30);
1371 xaliasify(FTN_GET_ANCESTOR_THREAD_NUM, 30);
1372 xaliasify(FTN_GET_TEAM_SIZE, 30);
1373 xaliasify(FTN_GET_ACTIVE_LEVEL, 30);
1374 xaliasify(FTN_INIT_LOCK, 30);
1375 xaliasify(FTN_INIT_NEST_LOCK, 30);
1376 xaliasify(FTN_DESTROY_LOCK, 30);
1377 xaliasify(FTN_DESTROY_NEST_LOCK, 30);
1378 xaliasify(FTN_SET_LOCK, 30);
1379 xaliasify(FTN_SET_NEST_LOCK, 30);
1380 xaliasify(FTN_UNSET_LOCK, 30);
1381 xaliasify(FTN_UNSET_NEST_LOCK, 30);
1382 xaliasify(FTN_TEST_LOCK, 30);
1383 xaliasify(FTN_TEST_NEST_LOCK, 30);
1386 xaliasify(FTN_IN_FINAL, 31);
1390 xaliasify(FTN_GET_PROC_BIND, 40);
1391 xaliasify(FTN_GET_NUM_TEAMS, 40);
1392 xaliasify(FTN_GET_TEAM_NUM, 40);
1393 xaliasify(FTN_GET_CANCELLATION, 40);
1394 xaliasify(FTN_IS_INITIAL_DEVICE, 40);
1406 xversionify(FTN_SET_NUM_THREADS, 10,
"OMP_1.0");
1407 xversionify(FTN_GET_NUM_THREADS, 10,
"OMP_1.0");
1408 xversionify(FTN_GET_MAX_THREADS, 10,
"OMP_1.0");
1409 xversionify(FTN_GET_THREAD_NUM, 10,
"OMP_1.0");
1410 xversionify(FTN_GET_NUM_PROCS, 10,
"OMP_1.0");
1411 xversionify(FTN_IN_PARALLEL, 10,
"OMP_1.0");
1412 xversionify(FTN_SET_DYNAMIC, 10,
"OMP_1.0");
1413 xversionify(FTN_GET_DYNAMIC, 10,
"OMP_1.0");
1414 xversionify(FTN_SET_NESTED, 10,
"OMP_1.0");
1415 xversionify(FTN_GET_NESTED, 10,
"OMP_1.0");
1416 xversionify(FTN_INIT_LOCK, 10,
"OMP_1.0");
1417 xversionify(FTN_INIT_NEST_LOCK, 10,
"OMP_1.0");
1418 xversionify(FTN_DESTROY_LOCK, 10,
"OMP_1.0");
1419 xversionify(FTN_DESTROY_NEST_LOCK, 10,
"OMP_1.0");
1420 xversionify(FTN_SET_LOCK, 10,
"OMP_1.0");
1421 xversionify(FTN_SET_NEST_LOCK, 10,
"OMP_1.0");
1422 xversionify(FTN_UNSET_LOCK, 10,
"OMP_1.0");
1423 xversionify(FTN_UNSET_NEST_LOCK, 10,
"OMP_1.0");
1424 xversionify(FTN_TEST_LOCK, 10,
"OMP_1.0");
1425 xversionify(FTN_TEST_NEST_LOCK, 10,
"OMP_1.0");
1428 xversionify(FTN_GET_WTICK, 20,
"OMP_2.0");
1429 xversionify(FTN_GET_WTIME, 20,
"OMP_2.0");
1432 xversionify(FTN_SET_SCHEDULE, 30,
"OMP_3.0");
1433 xversionify(FTN_GET_SCHEDULE, 30,
"OMP_3.0");
1434 xversionify(FTN_GET_THREAD_LIMIT, 30,
"OMP_3.0");
1435 xversionify(FTN_SET_MAX_ACTIVE_LEVELS, 30,
"OMP_3.0");
1436 xversionify(FTN_GET_MAX_ACTIVE_LEVELS, 30,
"OMP_3.0");
1437 xversionify(FTN_GET_ANCESTOR_THREAD_NUM, 30,
"OMP_3.0");
1438 xversionify(FTN_GET_LEVEL, 30,
"OMP_3.0");
1439 xversionify(FTN_GET_TEAM_SIZE, 30,
"OMP_3.0");
1440 xversionify(FTN_GET_ACTIVE_LEVEL, 30,
"OMP_3.0");
1443 xversionify(FTN_INIT_LOCK, 30,
"OMP_3.0");
1444 xversionify(FTN_INIT_NEST_LOCK, 30,
"OMP_3.0");
1445 xversionify(FTN_DESTROY_LOCK, 30,
"OMP_3.0");
1446 xversionify(FTN_DESTROY_NEST_LOCK, 30,
"OMP_3.0");
1447 xversionify(FTN_SET_LOCK, 30,
"OMP_3.0");
1448 xversionify(FTN_SET_NEST_LOCK, 30,
"OMP_3.0");
1449 xversionify(FTN_UNSET_LOCK, 30,
"OMP_3.0");
1450 xversionify(FTN_UNSET_NEST_LOCK, 30,
"OMP_3.0");
1451 xversionify(FTN_TEST_LOCK, 30,
"OMP_3.0");
1452 xversionify(FTN_TEST_NEST_LOCK, 30,
"OMP_3.0");
1455 xversionify(FTN_IN_FINAL, 31,
"OMP_3.1");
1459 xversionify(FTN_GET_PROC_BIND, 40,
"OMP_4.0");
1460 xversionify(FTN_GET_NUM_TEAMS, 40,
"OMP_4.0");
1461 xversionify(FTN_GET_TEAM_NUM, 40,
"OMP_4.0");
1462 xversionify(FTN_GET_CANCELLATION, 40,
"OMP_4.0");
1463 xversionify(FTN_IS_INITIAL_DEVICE, 40,
"OMP_4.0");
1474 #endif // KMP_USE_VERSION_SYMBOLS 1478 #endif // __cplusplus KMP_EXPORT kmp_int32 __kmpc_bound_num_threads(ident_t *)