[Openmp-commits] [openmp] r228734 - Updated the kmp_omp_struct_info_t structure used by debuggers.
Andrey Churbanov
Andrey.Churbanov at intel.com
Tue Feb 10 11:53:14 PST 2015
Author: achurbanov
Date: Tue Feb 10 13:53:13 2015
New Revision: 228734
URL: http://llvm.org/viewvc/llvm-project?rev=228734&view=rev
Log:
Updated the kmp_omp_struct_info_t structure used by debuggers.
Modified:
openmp/trunk/runtime/src/kmp_omp.h
Modified: openmp/trunk/runtime/src/kmp_omp.h
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_omp.h?rev=228734&r1=228733&r2=228734&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_omp.h (original)
+++ openmp/trunk/runtime/src/kmp_omp.h Tue Feb 10 13:53:13 2015
@@ -28,7 +28,7 @@
* stable, then any new updates to the structures or data structure traversal algorithms need to
* change this value.
*/
-#define KMP_OMP_VERSION 8
+#define KMP_OMP_VERSION 9
typedef struct {
kmp_int32 offset;
@@ -71,6 +71,7 @@ typedef struct {
addr_and_size_t major;
addr_and_size_t minor;
addr_and_size_t build;
+ addr_and_size_t openmp_version;
addr_and_size_t banner;
/* Various globals. */
@@ -81,13 +82,14 @@ typedef struct {
addr_and_size_t lock_table; // Pointer to __kmp_lock_table.
addr_and_size_t func_microtask;
addr_and_size_t func_fork;
+ addr_and_size_t func_fork_teams;
addr_and_size_t team_counter;
addr_and_size_t task_counter;
addr_and_size_t nthr_info;
kmp_int32 address_width;
kmp_int32 indexed_locks;
- kmp_int32 last_barrier;
- kmp_int32 deque_size;
+ kmp_int32 last_barrier; // The end in enum barrier_type
+ kmp_int32 deque_size; // TASK_DEQUE_SIZE
/* thread structure information. */
kmp_int32 th_sizeof_struct;
@@ -98,11 +100,17 @@ typedef struct {
offset_and_size_t th_ident; // location for this thread (if available)
offset_and_size_t th_spin_here; // is thread waiting for lock (if available)
offset_and_size_t th_next_waiting; // next thread waiting for lock (if available)
- offset_and_size_t th_task_team;
- offset_and_size_t th_current_task;
- offset_and_size_t th_task_state;
+ offset_and_size_t th_task_team; // task team struct
+ offset_and_size_t th_current_task; // innermost task being executed
+ offset_and_size_t th_task_state; // alternating 0/1 for task team identification
offset_and_size_t th_bar;
- offset_and_size_t th_b_worker_arrived;
+ offset_and_size_t th_b_worker_arrived; // the worker increases it by 1 when it arrives to the barrier
+
+ /* 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
/* kmp_desc structure (for info field above) */
kmp_int32 ds_sizeof_struct;
@@ -120,11 +128,12 @@ typedef struct {
offset_and_size_t t_serialized; // # levels of serialized teams
offset_and_size_t t_id; // unique team id
offset_and_size_t t_pkfn;
- offset_and_size_t t_task_team;
- offset_and_size_t t_implicit_task;
+ offset_and_size_t t_task_team; // task team structure
+ offset_and_size_t t_implicit_task; // taskdata for the thread's implicit task
+ offset_and_size_t t_cancel_request;
offset_and_size_t t_bar;
- offset_and_size_t t_b_master_arrived;
- offset_and_size_t t_b_team_arrived;
+ 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
/* root structure information */
kmp_int32 r_sizeof_struct;
@@ -148,6 +157,7 @@ typedef struct {
offset_and_size_t lk_now_serving;
offset_and_size_t lk_owner_id;
offset_and_size_t lk_depth_locked;
+ offset_and_size_t lk_lock_flags;
/* lock_table_t */
kmp_int32 lt_size_of_struct; /* Size and layout of kmp_lock_table_t. */
@@ -165,13 +175,33 @@ typedef struct {
/* kmp_taskdata_t */
kmp_int32 td_sizeof_struct;
- offset_and_size_t td_task_id;
- offset_and_size_t td_flags;
- offset_and_size_t td_team;
- offset_and_size_t td_parent;
- offset_and_size_t td_ident;
- offset_and_size_t td_allocated_child_tasks;
- offset_and_size_t td_incomplete_child_tasks;
+ offset_and_size_t td_task_id; // task id
+ offset_and_size_t td_flags; // task flags
+ offset_and_size_t td_team; // team for this task
+ offset_and_size_t td_parent; // parent task
+ offset_and_size_t td_level; // task testing level
+ offset_and_size_t td_ident; // task identifier
+ offset_and_size_t td_allocated_child_tasks; // child tasks (+ current task) not yet deallocated
+ offset_and_size_t td_incomplete_child_tasks; // child tasks not yet complete
+
+ /* Taskwait */
+ offset_and_size_t td_taskwait_ident;
+ offset_and_size_t td_taskwait_counter;
+ offset_and_size_t td_taskwait_thread; // gtid + 1 of thread encountered taskwait
+
+ /* 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
+ offset_and_size_t td_cancel; // request for cancellation of this taskgroup
+
+ /* Task dependency */
+ offset_and_size_t td_depnode; // pointer to graph node if the task has dependencies
+ offset_and_size_t dn_successors;
+ offset_and_size_t dn_node;
+ offset_and_size_t dn_next;
+ offset_and_size_t dn_task;
+ offset_and_size_t dn_npredecessors;
+ offset_and_size_t dn_nrefs;
/* kmp_thread_data_t */
kmp_int32 hd_sizeof_struct;
@@ -183,15 +213,6 @@ typedef struct {
// The last field of stable version.
kmp_uint64 last_field;
- // Extensions.
- // When KMP_OMP_VERSION is bumped, move these fields up to appropriate location,
- // to let last_field be actually last.
- addr_and_size_t openmp_version;
- offset_and_size_t td_taskwait_ident;
- offset_and_size_t td_taskwait_counter;
- offset_and_size_t td_taskwait_thread;
-
- offset_and_size_t lk_lock_flags;
} kmp_omp_struct_info_t;
More information about the Openmp-commits
mailing list