@@ -532,6 +532,15 @@ enum clock_function_type {
532
532
enum mic_type { non_mic, mic1, mic2, mic3, dummy };
533
533
#endif
534
534
535
+ // OpenMP 3.1 - Nested num threads array
536
+ typedef struct kmp_nested_nthreads_t {
537
+ int *nth;
538
+ int size;
539
+ int used;
540
+ } kmp_nested_nthreads_t ;
541
+
542
+ extern kmp_nested_nthreads_t __kmp_nested_nth;
543
+
535
544
/* -- fast reduction stuff ------------------------------------------------ */
536
545
537
546
#undef KMP_FAST_REDUCTION_BARRIER
@@ -2965,6 +2974,12 @@ typedef struct KMP_ALIGN_CACHE kmp_base_info {
2965
2974
/* The data set by the primary thread at reinit, then R/W by the worker */
2966
2975
KMP_ALIGN_CACHE int
2967
2976
th_set_nproc; /* if > 0, then only use this request for the next fork */
2977
+ int *th_set_nested_nth;
2978
+ bool th_nt_strict; // num_threads clause has strict modifier
2979
+ ident_t *th_nt_loc; // loc for strict modifier
2980
+ int th_nt_sev; // error severity for strict modifier
2981
+ const char *th_nt_msg; // error message for strict modifier
2982
+ int th_set_nested_nth_sz;
2968
2983
#if KMP_NESTED_HOT_TEAMS
2969
2984
kmp_hot_team_ptr_t *th_hot_teams; /* array of hot teams */
2970
2985
#endif
@@ -3206,6 +3221,7 @@ typedef struct KMP_ALIGN_CACHE kmp_base_team {
3206
3221
void *t_stack_id; // team specific stack stitching id (for ittnotify)
3207
3222
#endif /* USE_ITT_BUILD */
3208
3223
distributedBarrier *b; // Distributed barrier data associated with team
3224
+ kmp_nested_nthreads_t *t_nested_nth;
3209
3225
} kmp_base_team_t ;
3210
3226
3211
3227
// Assert that the list structure fits and aligns within
@@ -3542,15 +3558,6 @@ extern enum mic_type __kmp_mic_type;
3542
3558
extern double __kmp_load_balance_interval; // load balance algorithm interval
3543
3559
#endif /* USE_LOAD_BALANCE */
3544
3560
3545
- // OpenMP 3.1 - Nested num threads array
3546
- typedef struct kmp_nested_nthreads_t {
3547
- int *nth;
3548
- int size;
3549
- int used;
3550
- } kmp_nested_nthreads_t ;
3551
-
3552
- extern kmp_nested_nthreads_t __kmp_nested_nth;
3553
-
3554
3561
#if KMP_USE_ADAPTIVE_LOCKS
3555
3562
3556
3563
// Parameters for the speculative lock backoff system.
@@ -3785,6 +3792,11 @@ extern void ___kmp_thread_free(kmp_info_t *th, void *ptr KMP_SRC_LOC_DECL);
3785
3792
___kmp_thread_free ((th), (ptr)KMP_SRC_LOC_CURR)
3786
3793
3787
3794
extern void __kmp_push_num_threads(ident_t *loc, int gtid, int num_threads);
3795
+ extern void __kmp_push_num_threads_list (ident_t *loc, int gtid,
3796
+ kmp_uint32 list_length,
3797
+ int *num_threads_list);
3798
+ extern void __kmp_set_strict_num_threads (ident_t *loc, int gtid, int sev,
3799
+ const char *msg);
3788
3800
3789
3801
extern void __kmp_push_proc_bind (ident_t *loc, int gtid,
3790
3802
kmp_proc_bind_t proc_bind);
@@ -4423,6 +4435,18 @@ KMP_EXPORT kmp_int32 __kmpc_in_parallel(ident_t *loc);
4423
4435
KMP_EXPORT void __kmpc_pop_num_threads (ident_t *loc, kmp_int32 global_tid);
4424
4436
KMP_EXPORT void __kmpc_push_num_threads (ident_t *loc, kmp_int32 global_tid,
4425
4437
kmp_int32 num_threads);
4438
+ KMP_EXPORT void __kmpc_push_num_threads_strict (ident_t *loc,
4439
+ kmp_int32 global_tid,
4440
+ kmp_int32 num_threads,
4441
+ int severity,
4442
+ const char *message);
4443
+
4444
+ KMP_EXPORT void __kmpc_push_num_threads_list (ident_t *loc, kmp_int32 global_tid,
4445
+ kmp_uint32 list_length,
4446
+ kmp_int32 *num_threads_list);
4447
+ KMP_EXPORT void __kmpc_push_num_threads_list_strict (
4448
+ ident_t *loc, kmp_int32 global_tid, kmp_uint32 list_length,
4449
+ kmp_int32 *num_threads_list, int severity, const char *message);
4426
4450
4427
4451
KMP_EXPORT void __kmpc_push_proc_bind (ident_t *loc, kmp_int32 global_tid,
4428
4452
int proc_bind);
0 commit comments