annotate libgomp/acc_prof.h @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 /* OpenACC Profiling Interface
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 Copyright (C) 2019-2020 Free Software Foundation, Inc.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 Contributed by Mentor, a Siemens Business.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 This file is part of the GNU Offloading and Multi Processing Library
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 (libgomp).
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 Libgomp is free software; you can redistribute it and/or modify it
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11 under the terms of the GNU General Public License as published by
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 the Free Software Foundation; either version 3, or (at your option)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 any later version.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 FOR A PARTICULAR PURPOSE. See the GNU General Public License for
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 more details.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 Under Section 7 of GPL version 3, you are granted additional
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21 permissions described in the GCC Runtime Library Exception, version
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 3.1, as published by the Free Software Foundation.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 You should have received a copy of the GNU General Public License and
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 a copy of the GCC Runtime Library Exception along with this program;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 <http://www.gnu.org/licenses/>. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 #ifndef _ACC_PROF_H
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 #define _ACC_PROF_H 1
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 /* The OpenACC specification doesn't say so explicitly, but as its Profiling
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 Interface explicitly makes use of, for example, <openacc.h>'s
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 'acc_device_t', we supposedly are to '#include' that file here. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37 #include <openacc.h>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 #ifdef __cplusplus
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41 extern "C" {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42 #endif
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 /* Events. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47 typedef enum acc_event_t
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 acc_ev_none = 0,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50 acc_ev_device_init_start,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 acc_ev_device_init_end,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 acc_ev_device_shutdown_start,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53 acc_ev_device_shutdown_end,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 acc_ev_runtime_shutdown,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 acc_ev_create,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 acc_ev_delete,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57 acc_ev_alloc,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 acc_ev_free,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59 acc_ev_enter_data_start,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60 acc_ev_enter_data_end,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61 acc_ev_exit_data_start,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62 acc_ev_exit_data_end,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63 acc_ev_update_start,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64 acc_ev_update_end,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
65 acc_ev_compute_construct_start,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
66 acc_ev_compute_construct_end,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
67 acc_ev_enqueue_launch_start,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
68 acc_ev_enqueue_launch_end,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
69 acc_ev_enqueue_upload_start,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
70 acc_ev_enqueue_upload_end,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
71 acc_ev_enqueue_download_start,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
72 acc_ev_enqueue_download_end,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
73 acc_ev_wait_start,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
74 acc_ev_wait_end,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
75 acc_ev_last
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
76 } acc_event_t;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
77
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
78
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
79 /* Callbacks Signature. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
80
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
81 /* "The datatype 'ssize_t' means a signed 32-bit integer for a 32-bit binary
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
82 and a 64-bit integer for a 64-bit binary". */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
83 typedef signed long int _acc_prof_ssize_t;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
84 /* "The datatype 'size_t' means an unsigned 32-bit integer for a 32-bit binary
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
85 and a 64-bit integer for a 64-bit binary". */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
86 typedef unsigned long int _acc_prof_size_t;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
87 /* "The datatype 'int' means a 32-bit integer for both 32-bit and 64-bit
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
88 binaries". */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
89 typedef int _acc_prof_int_t;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
90
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
91 /* Internal helpers: a struct's 'valid_bytes' may be less than its 'sizeof'. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
92 #define _ACC_PROF_VALID_BYTES_STRUCT(_struct, _lastfield, _valid_bytes_lastfield) \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
93 offsetof (_struct, _lastfield) + (_valid_bytes_lastfield)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
94 #if 0 /* Untested. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
95 #define _ACC_PROF_VALID_BYTES_TYPE_N(_type, _n, _valid_bytes_type) \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
96 ((_n - 1) * sizeof (_type) + (_valid_bytes_type))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
97 #endif
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
98 #define _ACC_PROF_VALID_BYTES_BASICTYPE(_basictype) \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
99 (sizeof (_basictype))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
100
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
101 typedef struct acc_prof_info
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
102 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
103 acc_event_t event_type;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
104 _acc_prof_int_t valid_bytes;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
105 _acc_prof_int_t version;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
106 acc_device_t device_type;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
107 _acc_prof_int_t device_number;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
108 _acc_prof_int_t thread_id;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
109 _acc_prof_ssize_t async;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
110 _acc_prof_ssize_t async_queue;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
111 const char *src_file;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
112 const char *func_name;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
113 _acc_prof_int_t line_no, end_line_no;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
114 _acc_prof_int_t func_line_no, func_end_line_no;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
115 #define _ACC_PROF_INFO_VALID_BYTES \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
116 _ACC_PROF_VALID_BYTES_STRUCT (acc_prof_info, func_end_line_no, \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
117 _ACC_PROF_VALID_BYTES_BASICTYPE (_acc_prof_int_t))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
118 } acc_prof_info;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
119
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
120 /* We implement the OpenACC 2.6 Profiling Interface. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
121
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
122 #define _ACC_PROF_INFO_VERSION 201711
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
123
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
124 typedef enum acc_construct_t
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
125 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
126 acc_construct_parallel = 0,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
127 acc_construct_kernels,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
128 acc_construct_loop,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
129 acc_construct_data,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
130 acc_construct_enter_data,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
131 acc_construct_exit_data,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
132 acc_construct_host_data,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
133 acc_construct_atomic,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
134 acc_construct_declare,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
135 acc_construct_init,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
136 acc_construct_shutdown,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
137 acc_construct_set,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
138 acc_construct_update,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
139 acc_construct_routine,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
140 acc_construct_wait,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
141 acc_construct_runtime_api,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
142 acc_construct_serial
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
143 } acc_construct_t;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
144
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
145 typedef struct acc_data_event_info
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
146 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
147 acc_event_t event_type;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
148 _acc_prof_int_t valid_bytes;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
149 acc_construct_t parent_construct;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
150 _acc_prof_int_t implicit;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
151 void *tool_info;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
152 const char *var_name;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
153 _acc_prof_size_t bytes;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
154 const void *host_ptr;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
155 const void *device_ptr;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
156 #define _ACC_DATA_EVENT_INFO_VALID_BYTES \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
157 _ACC_PROF_VALID_BYTES_STRUCT (acc_data_event_info, device_ptr, \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
158 _ACC_PROF_VALID_BYTES_BASICTYPE (void *))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
159 } acc_data_event_info;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
160
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
161 typedef struct acc_launch_event_info
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
162 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
163 acc_event_t event_type;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
164 _acc_prof_int_t valid_bytes;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
165 acc_construct_t parent_construct;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
166 _acc_prof_int_t implicit;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
167 void *tool_info;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
168 const char *kernel_name;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
169 _acc_prof_size_t num_gangs, num_workers, vector_length;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
170 #define _ACC_LAUNCH_EVENT_INFO_VALID_BYTES \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
171 _ACC_PROF_VALID_BYTES_STRUCT (acc_launch_event_info, vector_length, \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
172 _ACC_PROF_VALID_BYTES_BASICTYPE (_acc_prof_size_t))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
173 } acc_launch_event_info;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
174
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
175 typedef struct acc_other_event_info
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
176 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
177 acc_event_t event_type;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
178 _acc_prof_int_t valid_bytes;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
179 acc_construct_t parent_construct;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
180 _acc_prof_int_t implicit;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
181 void *tool_info;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
182 #define _ACC_OTHER_EVENT_INFO_VALID_BYTES \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
183 _ACC_PROF_VALID_BYTES_STRUCT (acc_other_event_info, tool_info, \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
184 _ACC_PROF_VALID_BYTES_BASICTYPE (void *))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
185 } acc_other_event_info;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
186
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
187 typedef union acc_event_info
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
188 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
189 acc_event_t event_type;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
190 acc_data_event_info data_event;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
191 acc_launch_event_info launch_event;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
192 acc_other_event_info other_event;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
193 } acc_event_info;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
194
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
195 typedef enum acc_device_api
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
196 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
197 acc_device_api_none = 0,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
198 acc_device_api_cuda,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
199 acc_device_api_opencl,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
200 acc_device_api_coi,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
201 acc_device_api_other
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
202 } acc_device_api;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
203
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
204 typedef struct acc_api_info
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
205 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
206 acc_device_api device_api;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
207 _acc_prof_int_t valid_bytes;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
208 acc_device_t device_type;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
209 _acc_prof_int_t vendor;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
210 const void *device_handle;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
211 const void *context_handle;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
212 const void *async_handle;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
213 #define _ACC_API_INFO_VALID_BYTES \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
214 _ACC_PROF_VALID_BYTES_STRUCT (acc_api_info, async_handle, \
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
215 _ACC_PROF_VALID_BYTES_BASICTYPE (void *))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
216 } acc_api_info;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
217
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
218 /* Don't tag 'acc_prof_callback' as '__GOACC_NOTHROW': these functions are
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
219 provided by user code, and must be expected to do anything. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
220 typedef void (*acc_prof_callback) (acc_prof_info *, acc_event_info *,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
221 acc_api_info *);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
222
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
223
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
224 /* Loading the Library. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
225
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
226 typedef enum acc_register_t
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
227 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
228 acc_reg = 0,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
229 acc_toggle = 1,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
230 acc_toggle_per_thread = 2
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
231 } acc_register_t;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
232
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
233 typedef void (*acc_prof_reg) (acc_event_t, acc_prof_callback, acc_register_t);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
234 extern void acc_prof_register (acc_event_t, acc_prof_callback,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
235 acc_register_t) __GOACC_NOTHROW;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
236 extern void acc_prof_unregister (acc_event_t, acc_prof_callback,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
237 acc_register_t) __GOACC_NOTHROW;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
238 typedef void (*acc_query_fn) ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
239 typedef acc_query_fn (*acc_prof_lookup_func) (const char *);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
240 extern acc_query_fn acc_prof_lookup (const char *) __GOACC_NOTHROW;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
241 /* Don't tag 'acc_register_library' as '__GOACC_NOTHROW': this function can be
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
242 overridden by user code, and must be expected to do anything. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
243 extern void acc_register_library (acc_prof_reg, acc_prof_reg,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
244 acc_prof_lookup_func);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
245
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
246
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
247 #ifdef __cplusplus
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
248 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
249 #endif
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
250
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
251
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
252 #endif /* _ACC_PROF_H */