summaryrefslogtreecommitdiffstats
path: root/openmp
diff options
context:
space:
mode:
Diffstat (limited to 'openmp')
-rw-r--r--openmp/runtime/src/kmp_barrier.cpp4
-rw-r--r--openmp/runtime/src/kmp_debugger.c6
-rw-r--r--openmp/runtime/src/kmp_dispatch.cpp2
-rw-r--r--openmp/runtime/src/kmp_omp.h6
-rw-r--r--openmp/runtime/src/kmp_runtime.c2
-rw-r--r--openmp/runtime/src/kmp_sched.cpp4
-rw-r--r--openmp/runtime/src/kmp_settings.c7
7 files changed, 25 insertions, 6 deletions
diff --git a/openmp/runtime/src/kmp_barrier.cpp b/openmp/runtime/src/kmp_barrier.cpp
index c2f26fde797..505daec8795 100644
--- a/openmp/runtime/src/kmp_barrier.cpp
+++ b/openmp/runtime/src/kmp_barrier.cpp
@@ -735,9 +735,11 @@ __kmp_hierarchical_barrier_gather(enum barrier_type bt, kmp_info_t *this_thr,
register kmp_uint64 new_state;
int level = team->t.t_level;
+#if OMP_40_ENABLED
if (other_threads[0]->th.th_teams_microtask) // are we inside the teams construct?
if (this_thr->th.th_teams_size.nteams > 1)
++level; // level was not increased in teams construct for team_of_masters
+#endif
if (level == 1) thr_bar->use_oncore_barrier = 1;
else thr_bar->use_oncore_barrier = 0; // Do not use oncore barrier when nested
@@ -908,12 +910,14 @@ __kmp_hierarchical_barrier_release(enum barrier_type bt, kmp_info_t *this_thr, i
}
int level = team->t.t_level;
+#if OMP_40_ENABLED
if (team->t.t_threads[0]->th.th_teams_microtask ) { // are we inside the teams construct?
if (team->t.t_pkfn != (microtask_t)__kmp_teams_master && this_thr->th.th_teams_level == level)
++level; // level was not increased in teams construct for team_of_workers
if( this_thr->th.th_teams_size.nteams > 1 )
++level; // level was not increased in teams construct for team_of_masters
}
+#endif
if (level == 1) thr_bar->use_oncore_barrier = 1;
else thr_bar->use_oncore_barrier = 0; // Do not use oncore barrier when nested
nproc = this_thr->th.th_team_nproc;
diff --git a/openmp/runtime/src/kmp_debugger.c b/openmp/runtime/src/kmp_debugger.c
index d46c8a9a978..b3c1acb49ba 100644
--- a/openmp/runtime/src/kmp_debugger.c
+++ b/openmp/runtime/src/kmp_debugger.c
@@ -110,11 +110,13 @@ __kmp_omp_debug_struct_info = {
offset_and_size_of( kmp_base_info_t, th_bar ),
offset_and_size_of( kmp_bstate_t, b_worker_arrived ),
+#if OMP_40_ENABLED
// teams information
offset_and_size_of( kmp_base_info_t, th_teams_microtask),
offset_and_size_of( kmp_base_info_t, th_teams_level),
offset_and_size_of( kmp_teams_size_t, nteams ),
offset_and_size_of( kmp_teams_size_t, nth ),
+#endif
// kmp_desc structure (for info field above)
sizeof( kmp_desc_base_t ),
@@ -140,7 +142,9 @@ __kmp_omp_debug_struct_info = {
offset_and_size_of( kmp_base_team_t, t_pkfn ),
offset_and_size_of( kmp_base_team_t, t_task_team ),
offset_and_size_of( kmp_base_team_t, t_implicit_task_taskdata ),
+#if OMP_40_ENABLED
offset_and_size_of( kmp_base_team_t, t_cancel_request ),
+#endif
offset_and_size_of( kmp_base_team_t, t_bar ),
offset_and_size_of( kmp_balign_team_t, b_master_arrived ),
offset_and_size_of( kmp_balign_team_t, b_team_arrived ),
@@ -200,6 +204,7 @@ __kmp_omp_debug_struct_info = {
offset_and_size_of( kmp_taskdata_t, td_taskwait_counter ),
offset_and_size_of( kmp_taskdata_t, td_taskwait_thread ),
+#if OMP_40_ENABLED
offset_and_size_of( kmp_taskdata_t, td_taskgroup ),
offset_and_size_of( kmp_taskgroup_t, count ),
offset_and_size_of( kmp_taskgroup_t, cancel_request ),
@@ -211,6 +216,7 @@ __kmp_omp_debug_struct_info = {
offset_and_size_of( kmp_base_depnode_t, task ),
offset_and_size_of( kmp_base_depnode_t, npredecessors ),
offset_and_size_of( kmp_base_depnode_t, nrefs ),
+#endif
offset_and_size_of( kmp_task_t, routine ),
// thread_data_t.
diff --git a/openmp/runtime/src/kmp_dispatch.cpp b/openmp/runtime/src/kmp_dispatch.cpp
index ba87a5407cb..c0bd71b12d4 100644
--- a/openmp/runtime/src/kmp_dispatch.cpp
+++ b/openmp/runtime/src/kmp_dispatch.cpp
@@ -2224,9 +2224,9 @@ __kmp_dist_get_bounds(
}
}
th = __kmp_threads[gtid];
- KMP_DEBUG_ASSERT(th->th.th_teams_microtask); // we are in the teams construct
team = th->th.th_team;
#if OMP_40_ENABLED
+ KMP_DEBUG_ASSERT(th->th.th_teams_microtask); // we are in the teams construct
nteams = th->th.th_teams_size.nteams;
#endif
team_id = team->t.t_master_tid;
diff --git a/openmp/runtime/src/kmp_omp.h b/openmp/runtime/src/kmp_omp.h
index 5a9419ff35c..fc4de0f2360 100644
--- a/openmp/runtime/src/kmp_omp.h
+++ b/openmp/runtime/src/kmp_omp.h
@@ -109,11 +109,13 @@ typedef struct {
offset_and_size_t th_bar;
offset_and_size_t th_b_worker_arrived; // the worker increases it by 1 when it arrives to the barrier
+#if OMP_40_ENABLED
/* teams information */
offset_and_size_t th_teams_microtask;// entry address for teams construct
offset_and_size_t th_teams_level; // initial level of teams construct
offset_and_size_t th_teams_nteams; // number of teams in a league
offset_and_size_t th_teams_nth; // number of threads in each team of the league
+#endif
/* kmp_desc structure (for info field above) */
kmp_int32 ds_sizeof_struct;
@@ -133,7 +135,9 @@ typedef struct {
offset_and_size_t t_pkfn;
offset_and_size_t t_task_team; // task team structure
offset_and_size_t t_implicit_task; // taskdata for the thread's implicit task
+#if OMP_40_ENABLED
offset_and_size_t t_cancel_request;
+#endif
offset_and_size_t t_bar;
offset_and_size_t t_b_master_arrived; // increased by 1 when master arrives to a barrier
offset_and_size_t t_b_team_arrived; // increased by one when all the threads arrived
@@ -194,6 +198,7 @@ typedef struct {
offset_and_size_t td_taskwait_counter;
offset_and_size_t td_taskwait_thread; // gtid + 1 of thread encountered taskwait
+#if OMP_40_ENABLED
/* Taskgroup */
offset_and_size_t td_taskgroup; // pointer to the current taskgroup
offset_and_size_t td_task_count; // number of allocated and not yet complete tasks
@@ -207,6 +212,7 @@ typedef struct {
offset_and_size_t dn_task;
offset_and_size_t dn_npredecessors;
offset_and_size_t dn_nrefs;
+#endif
offset_and_size_t dn_routine;
/* kmp_thread_data_t */
diff --git a/openmp/runtime/src/kmp_runtime.c b/openmp/runtime/src/kmp_runtime.c
index 10caaafd392..22fc3a17993 100644
--- a/openmp/runtime/src/kmp_runtime.c
+++ b/openmp/runtime/src/kmp_runtime.c
@@ -2362,9 +2362,11 @@ __kmp_join_call(ident_t *loc, int gtid
// But there is barrier for external team (league).
__kmp_internal_join( loc, gtid, team );
}
+#if OMP_40_ENABLED
else {
master_th->th.th_task_state = 0; // AC: no tasking in teams (out of any parallel)
}
+#endif /* OMP_40_ENABLED */
KMP_MB();
diff --git a/openmp/runtime/src/kmp_sched.cpp b/openmp/runtime/src/kmp_sched.cpp
index 4eec41b9d44..5fb5e4779e5 100644
--- a/openmp/runtime/src/kmp_sched.cpp
+++ b/openmp/runtime/src/kmp_sched.cpp
@@ -424,10 +424,10 @@ __kmp_dist_for_static_init(
}
tid = __kmp_tid_from_gtid( gtid );
th = __kmp_threads[gtid];
- KMP_DEBUG_ASSERT(th->th.th_teams_microtask); // we are in the teams construct
nth = th->th.th_team_nproc;
team = th->th.th_team;
#if OMP_40_ENABLED
+ KMP_DEBUG_ASSERT(th->th.th_teams_microtask); // we are in the teams construct
nteams = th->th.th_teams_size.nteams;
#endif
team_id = team->t.t_master_tid;
@@ -662,9 +662,9 @@ __kmp_team_static_init(
}
}
th = __kmp_threads[gtid];
- KMP_DEBUG_ASSERT(th->th.th_teams_microtask); // we are in the teams construct
team = th->th.th_team;
#if OMP_40_ENABLED
+ KMP_DEBUG_ASSERT(th->th.th_teams_microtask); // we are in the teams construct
nteams = th->th.th_teams_size.nteams;
#endif
team_id = team->t.t_master_tid;
diff --git a/openmp/runtime/src/kmp_settings.c b/openmp/runtime/src/kmp_settings.c
index 7356bf8abe5..ae8ac567e0b 100644
--- a/openmp/runtime/src/kmp_settings.c
+++ b/openmp/runtime/src/kmp_settings.c
@@ -2926,11 +2926,12 @@ __kmp_stg_parse_proc_bind( char const * name, char const * value, void * data )
// OMP_PROC_BIND => granularity=core,scatter elsewhere
//
__kmp_affinity_type = affinity_scatter;
- if( __kmp_mic_type != non_mic ) {
+# if KMP_ARCH_X86_64 && (KMP_OS_LINUX || KMP_OS_WINDOWS)
+ if( __kmp_mic_type != non_mic )
__kmp_affinity_gran = affinity_gran_fine;
- } else {
+ else
+# endif
__kmp_affinity_gran = affinity_gran_core;
- }
}
else {
__kmp_affinity_type = affinity_none;
OpenPOWER on IntegriCloud