LLVM OpenMP* Runtime Library
Toggle main menu visibility
Loading...
Searching...
No Matches
src
ompt-internal.h
1
/*
2
* ompt-internal.h - header of OMPT internal data structures
3
*/
4
5
//===----------------------------------------------------------------------===//
6
//
7
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
8
// See https://llvm.org/LICENSE.txt for license information.
9
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef __OMPT_INTERNAL_H__
14
#define __OMPT_INTERNAL_H__
15
16
#include "ompt-event-specific.h"
17
#include "omp-tools.h"
18
19
#define OMPT_VERSION 1
20
21
#define _OMP_EXTERN extern "C"
22
23
#define OMPT_INVOKER(x) \
24
((x == fork_context_gnu) ? ompt_parallel_invoker_program \
25
: ompt_parallel_invoker_runtime)
26
27
#define ompt_callback(e) e##_callback
28
29
typedef
struct
ompt_callbacks_internal_s {
30
#define ompt_event_macro(event, callback, eventid) \
31
callback ompt_callback(event);
32
33
FOREACH_OMPT_EVENT(ompt_event_macro)
34
35
#undef ompt_event_macro
36
} ompt_callbacks_internal_t;
37
38
typedef
struct
ompt_callbacks_active_s {
39
unsigned
int
enabled : 1;
40
#define ompt_event_macro(event, callback, eventid) unsigned int event : 1;
41
42
FOREACH_OMPT_EVENT(ompt_event_macro)
43
44
#undef ompt_event_macro
45
} ompt_callbacks_active_t;
46
47
#define TASK_TYPE_DETAILS_FORMAT(info) \
48
((info->td_flags.task_serial || info->td_flags.tasking_ser) \
49
? ompt_task_undeferred \
50
: 0x0) | \
51
((!(info->td_flags.tiedness)) ? ompt_task_untied : 0x0) | \
52
(info->td_flags.final ? ompt_task_final : 0x0) | \
53
(info->td_flags.target \
54
? ompt_task_target \
55
: (info->td_flags.tasktype ? ompt_task_explicit \
56
: ompt_task_implicit)) | \
57
(info->td_flags.merged_if0 ? ompt_task_mergeable : 0x0)
58
59
typedef
struct
{
60
ompt_frame_t frame;
61
ompt_data_t task_data;
62
struct
kmp_taskdata *scheduling_parent;
63
int
thread_num;
64
ompt_dispatch_chunk_t dispatch_chunk;
65
} ompt_task_info_t;
66
67
typedef
struct
{
68
ompt_data_t parallel_data;
69
void
*master_return_address;
70
} ompt_team_info_t;
71
72
typedef
struct
ompt_lw_taskteam_s {
73
ompt_team_info_t ompt_team_info;
74
ompt_task_info_t ompt_task_info;
75
int
heap;
76
struct
ompt_lw_taskteam_s *parent;
77
} ompt_lw_taskteam_t;
78
79
typedef
struct
{
80
ompt_data_t thread_data;
81
ompt_data_t task_data;
/* stored here from implicit barrier-begin until
82
implicit-task-end */
83
ompt_data_t target_task_data;
/* required by target support */
84
void
*return_address;
/* stored here on entry of runtime */
85
ompt_state_t state;
86
ompt_wait_id_t wait_id;
87
int
ompt_task_yielded;
88
int
parallel_flags;
// information for the last parallel region invoked
89
void
*idle_frame;
90
} ompt_thread_info_t;
91
92
extern
ompt_callbacks_internal_t ompt_callbacks;
93
94
#if OMPT_SUPPORT && OMPT_OPTIONAL
95
#if USE_FAST_MEMORY
96
#define KMP_OMPT_DEPS_ALLOC __kmp_fast_allocate
97
#define KMP_OMPT_DEPS_FREE __kmp_fast_free
98
#else
99
#define KMP_OMPT_DEPS_ALLOC __kmp_thread_malloc
100
#define KMP_OMPT_DEPS_FREE __kmp_thread_free
101
#endif
102
#endif
/* OMPT_SUPPORT && OMPT_OPTIONAL */
103
104
#ifdef __cplusplus
105
extern
"C"
{
106
#endif
107
108
void
ompt_pre_init(
void
);
109
void
ompt_post_init(
void
);
110
void
ompt_fini(
void
);
111
112
#define OMPT_GET_RETURN_ADDRESS(level) \
113
__builtin_extract_return_addr(__builtin_return_address(level))
114
#define OMPT_GET_FRAME_ADDRESS(level) __builtin_frame_address(level)
115
#define OMPT_FRAME_FLAGS_APP (ompt_frame_application | ompt_frame_cfa)
116
#define OMPT_FRAME_FLAGS_RUNTIME (ompt_frame_runtime | ompt_frame_cfa)
117
118
int
__kmp_control_tool(uint64_t command, uint64_t modifier,
void
*arg);
119
120
extern
ompt_callbacks_active_t ompt_enabled;
121
122
#if KMP_OS_WINDOWS
123
#define UNLIKELY(x) (x)
124
#define OMPT_NOINLINE __declspec(noinline)
125
#else
126
#define UNLIKELY(x) __builtin_expect(!!(x), 0)
127
#define OMPT_NOINLINE __attribute__((noinline))
128
#endif
129
130
#ifdef __cplusplus
131
}
132
#endif
133
134
#endif
Generated by
1.17.0