Dynamic Load Balance
3.6.1+32-59d1
src
LB_numThreads
omptool.h
Go to the documentation of this file.
1
/*********************************************************************************/
2
/* Copyright 2009-2024 Barcelona Supercomputing Center */
3
/* */
4
/* This file is part of the DLB library. */
5
/* */
6
/* DLB is free software: you can redistribute it and/or modify */
7
/* it under the terms of the GNU Lesser General Public License as published by */
8
/* the Free Software Foundation, either version 3 of the License, or */
9
/* (at your option) any later version. */
10
/* */
11
/* DLB is distributed in the hope that it will be useful, */
12
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
13
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
14
/* GNU Lesser General Public License for more details. */
15
/* */
16
/* You should have received a copy of the GNU Lesser General Public License */
17
/* along with DLB. If not, see <https://www.gnu.org/licenses/>. */
18
/*********************************************************************************/
19
20
#ifndef OMPTOOL_H
21
#define OMPTOOL_H
22
23
#include "
LB_numThreads/omp-tools.h
"
24
#include "
support/atomic.h
"
25
#include "
support/options.h
"
26
27
/* Non-device OMPT callbacks in OpenMP 5.2 (unused callbacks are commented) */
28
typedef
struct
omptool_callback_funcs_t
{
29
ompt_callback_thread_begin_t
thread_begin
;
30
ompt_callback_thread_end_t
thread_end
;
31
ompt_callback_thread_role_shift_t
thread_role_shift
;
32
ompt_callback_parallel_begin_t
parallel_begin
;
33
ompt_callback_parallel_end_t
parallel_end
;
34
/* ompt_callback_work_t work; */
35
/* ompt_callback_dispatch_t dispatch; */
36
ompt_callback_task_create_t
task_create
;
37
/* ompt_callback_dependences_t dependences; */
38
/* ompt_callback_task_dependence_t task_dependence; */
39
ompt_callback_task_schedule_t
task_schedule
;
40
ompt_callback_implicit_task_t
implicit_task
;
41
/* ompt_callback_masked_t masked; */
42
ompt_callback_sync_region_t
sync_region
;
43
/* ompt_callback_mutex_acquire_t mutex_acquire; */
44
/* ompt_callback_mutex_t mutex; */
45
/* ompt_callback_nest_lock_t nest_lock_t; */
46
/* ompt_callback_flush_t flush; */
47
/* ompt_callback_cancel_t cancel; */
48
}
omptool_callback_funcs_t
;
49
50
typedef
struct
DLB_ALIGN_CACHE
omptool_parallel_data_t
{
51
bool
ready
;
52
unsigned
int
level
;
53
const
void
*
codeptr_ra
;
54
void
*
omptm_parallel_data
;
55
void
*
talp_parallel_data
;
56
57
/* The following fields are only useful for the primary thread.
58
* Avoid false sharing by placing them in another cache line */
59
unsigned
int
DLB_ALIGN_CACHE
requested_parallelism
;
60
unsigned
int
actual_parallelism
;
61
}
omptool_parallel_data_t
;
62
63
/* Events that may occur in a hybrid MPI-OpenMP program.
64
* Some of the OpenMP events that match an OMPT callback receive less
65
* arguments, or values that represent more high-level information. */
66
typedef
struct
omptool_event_funcs_t
{
67
/* Init & Finalize function */
68
void (*
init
)(pid_t,
const
options_t
*);
69
void (*
finalize
)(void);
70
/* MPI calls */
71
void (*
into_mpi
)(void);
72
void (*
outof_mpi
)(void);
73
/* Intercept Lend */
74
void (*
lend_from_api
)(void);
75
/* Thread events */
76
void (*
thread_begin
)(
ompt_thread_t
);
77
void (*
thread_end
)(void);
78
void (*
thread_role_shift
)(
ompt_data_t
*,
ompt_role_t
,
ompt_role_t
);
79
/* Parallel events */
80
void (*
parallel_begin
)(
omptool_parallel_data_t
*);
81
void (*
parallel_end
)(
omptool_parallel_data_t
*);
82
void (*
into_parallel_function
)(
omptool_parallel_data_t
*, unsigned);
83
void (*
outof_parallel_function
)(void);
84
void (*
into_parallel_implicit_barrier
)(
omptool_parallel_data_t
*);
85
void (*
into_parallel_sync
)(
omptool_parallel_data_t
*);
86
void (*
outof_parallel_sync
)(
omptool_parallel_data_t
*);
87
/* Tasking events */
88
void (*
task_create
)(void);
89
void (*
task_complete
)(void);
90
void (*
task_switch
)(void);
91
}
omptool_event_funcs_t
;
92
93
void
omptool__into_blocking_call
(
void
);
94
void
omptool__outof_blocking_call
(
void
);
95
void
omptool__lend_from_api
(
void
);
96
void
omptool_testing__setup_event_fn_ptrs
(
97
const
omptool_event_funcs_t
*talp_test_funcs,
98
const
omptool_event_funcs_t
*omptm_test_funcs);
99
100
#endif
/* OMPTOOL_H */
atomic.h
DLB_ALIGN_CACHE
#define DLB_ALIGN_CACHE
Definition:
atomic.h:92
omp-tools.h
ompt_callback_implicit_task_t
void(* ompt_callback_implicit_task_t)(ompt_scope_endpoint_t endpoint, ompt_data_t *parallel_data, ompt_data_t *task_data, unsigned int actual_parallelism, unsigned int index, int flags)
Definition:
omp-tools.h:861
ompt_callback_task_schedule_t
void(* ompt_callback_task_schedule_t)(ompt_data_t *prior_task_data, ompt_task_status_t prior_task_status, ompt_data_t *next_task_data)
Definition:
omp-tools.h:849
ompt_callback_task_create_t
void(* ompt_callback_task_create_t)(ompt_data_t *encountering_task_data, const ompt_frame_t *encountering_task_frame, ompt_data_t *new_task_data, int flags, int has_dependences, const void *codeptr_ra)
Definition:
omp-tools.h:810
ompt_callback_thread_end_t
void(* ompt_callback_thread_end_t)(ompt_data_t *thread_data)
Definition:
omp-tools.h:737
ompt_callback_thread_role_shift_t
void(* ompt_callback_thread_role_shift_t)(ompt_data_t *thread_data, ompt_role_t prior_role, ompt_role_t next_role)
Definition:
omp-tools.h:741
ompt_callback_thread_begin_t
void(* ompt_callback_thread_begin_t)(ompt_thread_t thread_type, ompt_data_t *thread_data)
Definition:
omp-tools.h:728
ompt_callback_parallel_begin_t
void(* ompt_callback_parallel_begin_t)(ompt_data_t *encountering_task_data, const ompt_frame_t *encountering_task_frame, ompt_data_t *parallel_data, unsigned int requested_parallelism, int flags, const void *codeptr_ra)
Definition:
omp-tools.h:747
ompt_callback_parallel_end_t
void(* ompt_callback_parallel_end_t)(ompt_data_t *parallel_data, ompt_data_t *encountering_task_data, int flags, const void *codeptr_ra)
Definition:
omp-tools.h:764
ompt_role_t
ompt_role_t
Definition:
omp-tools.h:255
ompt_thread_t
ompt_thread_t
Definition:
omp-tools.h:281
ompt_callback_sync_region_t
void(* ompt_callback_sync_region_t)(ompt_sync_region_t kind, ompt_scope_endpoint_t endpoint, ompt_data_t *parallel_data, ompt_data_t *task_data, const void *codeptr_ra)
Definition:
omp-tools.h:895
omptool__outof_blocking_call
void omptool__outof_blocking_call(void)
Definition:
omptool.c:91
omptool__lend_from_api
void omptool__lend_from_api(void)
Definition:
omptool.c:100
omptool__into_blocking_call
void omptool__into_blocking_call(void)
Definition:
omptool.c:82
omptool_testing__setup_event_fn_ptrs
void omptool_testing__setup_event_fn_ptrs(const omptool_event_funcs_t *talp_test_funcs, const omptool_event_funcs_t *omptm_test_funcs)
Definition:
omptool.c:518
options.h
omptool_callback_funcs_t
Definition:
omptool.h:28
omptool_callback_funcs_t::task_create
ompt_callback_task_create_t task_create
Definition:
omptool.h:36
omptool_callback_funcs_t::sync_region
ompt_callback_sync_region_t sync_region
Definition:
omptool.h:42
omptool_callback_funcs_t::parallel_begin
ompt_callback_parallel_begin_t parallel_begin
Definition:
omptool.h:32
omptool_callback_funcs_t::parallel_end
ompt_callback_parallel_end_t parallel_end
Definition:
omptool.h:33
omptool_callback_funcs_t::thread_begin
ompt_callback_thread_begin_t thread_begin
Definition:
omptool.h:29
omptool_callback_funcs_t::implicit_task
ompt_callback_implicit_task_t implicit_task
Definition:
omptool.h:40
omptool_callback_funcs_t::thread_role_shift
ompt_callback_thread_role_shift_t thread_role_shift
Definition:
omptool.h:31
omptool_callback_funcs_t::thread_end
ompt_callback_thread_end_t thread_end
Definition:
omptool.h:30
omptool_callback_funcs_t::task_schedule
ompt_callback_task_schedule_t task_schedule
Definition:
omptool.h:39
omptool_event_funcs_t
Definition:
omptool.h:66
omptool_event_funcs_t::into_parallel_implicit_barrier
void(* into_parallel_implicit_barrier)(omptool_parallel_data_t *)
Definition:
omptool.h:84
omptool_event_funcs_t::thread_role_shift
void(* thread_role_shift)(ompt_data_t *, ompt_role_t, ompt_role_t)
Definition:
omptool.h:78
omptool_event_funcs_t::task_switch
void(* task_switch)(void)
Definition:
omptool.h:90
omptool_event_funcs_t::finalize
void(* finalize)(void)
Definition:
omptool.h:69
omptool_event_funcs_t::parallel_begin
void(* parallel_begin)(omptool_parallel_data_t *)
Definition:
omptool.h:80
omptool_event_funcs_t::into_parallel_function
void(* into_parallel_function)(omptool_parallel_data_t *, unsigned)
Definition:
omptool.h:82
omptool_event_funcs_t::outof_parallel_function
void(* outof_parallel_function)(void)
Definition:
omptool.h:83
omptool_event_funcs_t::into_parallel_sync
void(* into_parallel_sync)(omptool_parallel_data_t *)
Definition:
omptool.h:85
omptool_event_funcs_t::outof_parallel_sync
void(* outof_parallel_sync)(omptool_parallel_data_t *)
Definition:
omptool.h:86
omptool_event_funcs_t::thread_begin
void(* thread_begin)(ompt_thread_t)
Definition:
omptool.h:76
omptool_event_funcs_t::task_create
void(* task_create)(void)
Definition:
omptool.h:88
omptool_event_funcs_t::lend_from_api
void(* lend_from_api)(void)
Definition:
omptool.h:74
omptool_event_funcs_t::outof_mpi
void(* outof_mpi)(void)
Definition:
omptool.h:72
omptool_event_funcs_t::init
void(* init)(pid_t, const options_t *)
Definition:
omptool.h:68
omptool_event_funcs_t::into_mpi
void(* into_mpi)(void)
Definition:
omptool.h:71
omptool_event_funcs_t::thread_end
void(* thread_end)(void)
Definition:
omptool.h:77
omptool_event_funcs_t::task_complete
void(* task_complete)(void)
Definition:
omptool.h:89
omptool_event_funcs_t::parallel_end
void(* parallel_end)(omptool_parallel_data_t *)
Definition:
omptool.h:81
omptool_parallel_data_t
Definition:
omptool.h:50
omptool_parallel_data_t::ready
bool ready
Definition:
omptool.h:51
omptool_parallel_data_t::omptm_parallel_data
void * omptm_parallel_data
Definition:
omptool.h:54
omptool_parallel_data_t::requested_parallelism
unsigned int DLB_ALIGN_CACHE requested_parallelism
Definition:
omptool.h:59
omptool_parallel_data_t::level
unsigned int level
Definition:
omptool.h:52
omptool_parallel_data_t::codeptr_ra
const void * codeptr_ra
Definition:
omptool.h:53
omptool_parallel_data_t::talp_parallel_data
void * talp_parallel_data
Definition:
omptool.h:55
omptool_parallel_data_t::actual_parallelism
unsigned int actual_parallelism
Definition:
omptool.h:60
options_t
Definition:
options.h:30
ompt_data_t
Definition:
omp-tools.h:521
Generated by
1.9.4