Dynamic Load Balance 3.6.1+32-59d1
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
24#include "support/atomic.h"
25#include "support/options.h"
26
27/* Non-device OMPT callbacks in OpenMP 5.2 (unused callbacks are commented) */
34 /* ompt_callback_work_t work; */
35 /* ompt_callback_dispatch_t dispatch; */
37 /* ompt_callback_dependences_t dependences; */
38 /* ompt_callback_task_dependence_t task_dependence; */
41 /* ompt_callback_masked_t masked; */
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; */
49
51 bool ready;
52 unsigned int level;
53 const void *codeptr_ra;
56
57 /* The following fields are only useful for the primary thread.
58 * Avoid false sharing by placing them in another cache line */
60 unsigned int actual_parallelism;
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. */
66typedef 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 */
77 void (*thread_end)(void);
79 /* Parallel events */
87 /* Tasking events */
88 void (*task_create)(void);
89 void (*task_complete)(void);
90 void (*task_switch)(void);
92
95void omptool__lend_from_api(void);
97 const omptool_event_funcs_t *talp_test_funcs,
98 const omptool_event_funcs_t *omptm_test_funcs);
99
100#endif /* OMPTOOL_H */
#define DLB_ALIGN_CACHE
Definition: atomic.h:92
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
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
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
void(* ompt_callback_thread_end_t)(ompt_data_t *thread_data)
Definition: omp-tools.h:737
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
void(* ompt_callback_thread_begin_t)(ompt_thread_t thread_type, ompt_data_t *thread_data)
Definition: omp-tools.h:728
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
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
Definition: omp-tools.h:255
ompt_thread_t
Definition: omp-tools.h:281
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
void omptool__outof_blocking_call(void)
Definition: omptool.c:91
void omptool__lend_from_api(void)
Definition: omptool.c:100
void omptool__into_blocking_call(void)
Definition: omptool.c:82
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
Definition: omptool.h:28
ompt_callback_task_create_t task_create
Definition: omptool.h:36
ompt_callback_sync_region_t sync_region
Definition: omptool.h:42
ompt_callback_parallel_begin_t parallel_begin
Definition: omptool.h:32
ompt_callback_parallel_end_t parallel_end
Definition: omptool.h:33
ompt_callback_thread_begin_t thread_begin
Definition: omptool.h:29
ompt_callback_implicit_task_t implicit_task
Definition: omptool.h:40
ompt_callback_thread_role_shift_t thread_role_shift
Definition: omptool.h:31
ompt_callback_thread_end_t thread_end
Definition: omptool.h:30
ompt_callback_task_schedule_t task_schedule
Definition: omptool.h:39
Definition: omptool.h:66
void(* into_parallel_implicit_barrier)(omptool_parallel_data_t *)
Definition: omptool.h:84
void(* thread_role_shift)(ompt_data_t *, ompt_role_t, ompt_role_t)
Definition: omptool.h:78
void(* task_switch)(void)
Definition: omptool.h:90
void(* finalize)(void)
Definition: omptool.h:69
void(* parallel_begin)(omptool_parallel_data_t *)
Definition: omptool.h:80
void(* into_parallel_function)(omptool_parallel_data_t *, unsigned)
Definition: omptool.h:82
void(* outof_parallel_function)(void)
Definition: omptool.h:83
void(* into_parallel_sync)(omptool_parallel_data_t *)
Definition: omptool.h:85
void(* outof_parallel_sync)(omptool_parallel_data_t *)
Definition: omptool.h:86
void(* thread_begin)(ompt_thread_t)
Definition: omptool.h:76
void(* task_create)(void)
Definition: omptool.h:88
void(* lend_from_api)(void)
Definition: omptool.h:74
void(* outof_mpi)(void)
Definition: omptool.h:72
void(* init)(pid_t, const options_t *)
Definition: omptool.h:68
void(* into_mpi)(void)
Definition: omptool.h:71
void(* thread_end)(void)
Definition: omptool.h:77
void(* task_complete)(void)
Definition: omptool.h:89
void(* parallel_end)(omptool_parallel_data_t *)
Definition: omptool.h:81
Definition: omptool.h:50
bool ready
Definition: omptool.h:51
void * omptm_parallel_data
Definition: omptool.h:54
unsigned int DLB_ALIGN_CACHE requested_parallelism
Definition: omptool.h:59
unsigned int level
Definition: omptool.h:52
const void * codeptr_ra
Definition: omptool.h:53
void * talp_parallel_data
Definition: omptool.h:55
unsigned int actual_parallelism
Definition: omptool.h:60
Definition: options.h:30
Definition: omp-tools.h:521