]>
Commit | Line | Data |
---|---|---|
5f520819 | 1 | /* |
df26a50d | 2 | Copyright (c) 2014-2016 Intel Corporation. All Rights Reserved. |
5f520819 KY |
3 | |
4 | Redistribution and use in source and binary forms, with or without | |
5 | modification, are permitted provided that the following conditions | |
6 | are met: | |
7 | ||
8 | * Redistributions of source code must retain the above copyright | |
9 | notice, this list of conditions and the following disclaimer. | |
10 | * Redistributions in binary form must reproduce the above copyright | |
11 | notice, this list of conditions and the following disclaimer in the | |
12 | documentation and/or other materials provided with the distribution. | |
13 | * Neither the name of Intel Corporation nor the names of its | |
14 | contributors may be used to endorse or promote products derived | |
15 | from this software without specific prior written permission. | |
16 | ||
17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
21 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
28 | */ | |
29 | ||
30 | ||
31 | #if !defined(LIBOFFLOAD_ERROR_CODES_H) | |
32 | #define LIBOFFLOAD_ERROR_CODES_H | |
33 | #include <stdarg.h> | |
34 | #include <stdlib.h> | |
35 | #include <stdio.h> | |
36 | ||
37 | typedef enum | |
38 | { | |
39 | c_device_is_not_available = 0, | |
40 | c_invalid_device_number, | |
41 | c_offload1, | |
42 | c_unknown_var_type, | |
43 | c_send_func_ptr, | |
44 | c_receive_func_ptr, | |
45 | c_malloc, | |
df26a50d | 46 | c_unknown_mic_device_type, |
5f520819 KY |
47 | c_offload_malloc, |
48 | c_invalid_env_var_value, | |
49 | c_invalid_env_var_int_value, | |
50 | c_invalid_env_report_value, | |
51 | c_offload_signaled1, | |
52 | c_offload_signaled2, | |
53 | c_myotarget_checkresult, | |
54 | c_myowrapper_checkresult, | |
55 | c_offload_descriptor_offload, | |
56 | c_merge_var_descs1, | |
57 | c_merge_var_descs2, | |
58 | c_mic_parse_env_var_list1, | |
59 | c_mic_parse_env_var_list2, | |
60 | c_mic_process_exit_ret, | |
61 | c_mic_process_exit_sig, | |
62 | c_mic_process_exit, | |
63 | c_mic_init3, | |
64 | c_mic_init4, | |
65 | c_mic_init5, | |
66 | c_mic_init6, | |
df26a50d IV |
67 | c_mic_init7, |
68 | c_mic_init8, | |
69 | c_mic_init9, | |
70 | c_mic_init10, | |
71 | c_mic_init11, | |
5f520819 KY |
72 | c_no_static_var_data, |
73 | c_no_ptr_data, | |
74 | c_get_engine_handle, | |
75 | c_get_engine_index, | |
76 | c_process_create, | |
2eab9666 | 77 | c_process_set_cache_size, |
5f520819 KY |
78 | c_process_get_func_handles, |
79 | c_process_wait_shutdown, | |
80 | c_process_proxy_flush, | |
81 | c_load_library, | |
82 | c_pipeline_create, | |
83 | c_pipeline_run_func, | |
84 | c_pipeline_start_run_funcs, | |
85 | c_buf_create, | |
86 | c_buf_create_out_of_mem, | |
87 | c_buf_create_from_mem, | |
88 | c_buf_destroy, | |
89 | c_buf_map, | |
90 | c_buf_unmap, | |
91 | c_buf_read, | |
92 | c_buf_write, | |
93 | c_buf_copy, | |
94 | c_buf_get_address, | |
95 | c_buf_add_ref, | |
96 | c_buf_release_ref, | |
97 | c_buf_set_state, | |
98 | c_event_wait, | |
99 | c_zero_or_neg_ptr_len, | |
100 | c_zero_or_neg_transfer_size, | |
2eab9666 | 101 | c_bad_ptr_mem_alloc, |
5f520819 KY |
102 | c_bad_ptr_mem_range, |
103 | c_different_src_and_dstn_sizes, | |
104 | c_ranges_dont_match, | |
105 | c_destination_is_over, | |
106 | c_slice_of_noncont_array, | |
107 | c_non_contiguous_dope_vector, | |
108 | c_pointer_array_mismatch, | |
109 | c_omp_invalid_device_num_env, | |
110 | c_omp_invalid_device_num, | |
111 | c_unknown_binary_type, | |
112 | c_multiple_target_exes, | |
113 | c_no_target_exe, | |
2eab9666 IV |
114 | c_incorrect_affinity, |
115 | c_cannot_set_affinity, | |
df26a50d | 116 | c_mixed_versions, |
5f520819 KY |
117 | c_report_host, |
118 | c_report_target, | |
119 | c_report_title, | |
120 | c_report_from_file, | |
121 | c_report_file, | |
122 | c_report_line, | |
123 | c_report_tag, | |
124 | c_report_seconds, | |
125 | c_report_bytes, | |
126 | c_report_mic, | |
127 | c_report_cpu_time, | |
128 | c_report_cpu_to_mic_data, | |
129 | c_report_mic_time, | |
130 | c_report_mic_to_cpu_data, | |
131 | c_report_unknown_timer_node, | |
132 | c_report_unknown_trace_node, | |
133 | c_report_offload, | |
134 | c_report_w_tag, | |
135 | c_report_state, | |
136 | c_report_start, | |
137 | c_report_init, | |
138 | c_report_logical_card, | |
139 | c_report_physical_card, | |
140 | c_report_register, | |
141 | c_report_init_func, | |
142 | c_report_create_buf_host, | |
143 | c_report_create_buf_mic, | |
144 | c_report_send_pointer_data, | |
145 | c_report_sent_pointer_data, | |
146 | c_report_gather_copyin_data, | |
147 | c_report_copyin_data, | |
148 | c_report_state_signal, | |
149 | c_report_signal, | |
150 | c_report_wait, | |
151 | c_report_compute, | |
152 | c_report_receive_pointer_data, | |
153 | c_report_received_pointer_data, | |
154 | c_report_start_target_func, | |
155 | c_report_var, | |
156 | c_report_scatter_copyin_data, | |
157 | c_report_gather_copyout_data, | |
158 | c_report_scatter_copyout_data, | |
159 | c_report_copyout_data, | |
160 | c_report_unregister, | |
161 | c_report_destroy, | |
162 | c_report_myoinit, | |
163 | c_report_myoregister, | |
164 | c_report_myofini, | |
165 | c_report_mic_myo_shared, | |
166 | c_report_mic_myo_fptr, | |
167 | c_report_myosharedmalloc, | |
168 | c_report_myosharedfree, | |
169 | c_report_myosharedalignedmalloc, | |
170 | c_report_myosharedalignedfree, | |
171 | c_report_myoacquire, | |
172 | c_report_myorelease, | |
2eab9666 IV |
173 | c_report_myosupportsfeature, |
174 | c_report_myosharedarenacreate, | |
175 | c_report_myosharedalignedarenamalloc, | |
176 | c_report_myosharedalignedarenafree, | |
177 | c_report_myoarenaacquire, | |
178 | c_report_myoarenarelease, | |
179 | c_coipipe_max_number, | |
180 | c_in_with_preallocated, | |
181 | c_report_no_host_exe, | |
df26a50d | 182 | c_report_no_target_exe, |
2eab9666 IV |
183 | c_report_path_buff_overflow, |
184 | c_create_pipeline_for_stream, | |
185 | c_offload_no_stream, | |
df26a50d IV |
186 | c_offload_device_doesnt_match_to_stream, |
187 | c_offload_streams_are_absent, | |
2eab9666 IV |
188 | c_get_engine_info, |
189 | c_clear_cpu_mask, | |
190 | c_set_cpu_mask, | |
191 | c_report_state_stream, | |
192 | c_report_stream, | |
df26a50d IV |
193 | c_unload_library, |
194 | c_target_myo_library, | |
195 | c_myo_dl_sym, | |
196 | c_bad_myo_free | |
5f520819 KY |
197 | } error_types; |
198 | ||
199 | enum OffloadHostPhase { | |
200 | // Total time on host for entire offload | |
201 | c_offload_host_total_offload = 0, | |
202 | ||
203 | // Time to load target binary | |
204 | c_offload_host_initialize, | |
205 | ||
206 | // Time to acquire lrb availability dynamically | |
207 | c_offload_host_target_acquire, | |
208 | ||
209 | // Time to wait for dependencies | |
210 | c_offload_host_wait_deps, | |
211 | ||
212 | // Time to allocate pointer buffers, initiate writes for pointers | |
213 | // and calculate size of copyin/copyout buffer | |
214 | c_offload_host_setup_buffers, | |
215 | ||
216 | // Time to allocate pointer buffers | |
217 | c_offload_host_alloc_buffers, | |
218 | ||
219 | // Time to initialize misc data | |
220 | c_offload_host_setup_misc_data, | |
221 | ||
222 | // Time to allocate copyin/copyout buffer | |
223 | c_offload_host_alloc_data_buffer, | |
224 | ||
225 | // Time to initiate writes from host pointers to buffers | |
226 | c_offload_host_send_pointers, | |
227 | ||
228 | // Time to Gather IN data of offload into buffer | |
229 | c_offload_host_gather_inputs, | |
230 | ||
231 | // Time to map buffer | |
232 | c_offload_host_map_in_data_buffer, | |
233 | ||
234 | // Time to unmap buffer | |
235 | c_offload_host_unmap_in_data_buffer, | |
236 | ||
237 | // Time to start remote function call that does computation on lrb | |
238 | c_offload_host_start_compute, | |
239 | ||
240 | // Time to wait for compute to finish | |
241 | c_offload_host_wait_compute, | |
242 | ||
243 | // Time to initiate reads from pointer buffers | |
244 | c_offload_host_start_buffers_reads, | |
245 | ||
246 | // Time to update host variabels with OUT data from buffer | |
247 | c_offload_host_scatter_outputs, | |
248 | ||
249 | // Time to map buffer | |
250 | c_offload_host_map_out_data_buffer, | |
251 | ||
252 | // Time to unmap buffer | |
253 | c_offload_host_unmap_out_data_buffer, | |
254 | ||
255 | // Time to wait reads from buffers to finish | |
256 | c_offload_host_wait_buffers_reads, | |
257 | ||
258 | // Time to destroy buffers that are no longer needed | |
259 | c_offload_host_destroy_buffers, | |
260 | ||
261 | // LAST TIME MONITOR | |
262 | c_offload_host_max_phase | |
263 | }; | |
264 | ||
265 | enum OffloadTargetPhase { | |
266 | // Total time spent on the target | |
267 | c_offload_target_total_time = 0, | |
268 | ||
269 | // Time to initialize offload descriptor | |
270 | c_offload_target_descriptor_setup, | |
271 | ||
272 | // Time to find target entry point in lookup table | |
273 | c_offload_target_func_lookup, | |
274 | ||
275 | // Total time spend executing offload entry | |
276 | c_offload_target_func_time, | |
277 | ||
278 | // Time to initialize target variables with IN values from buffer | |
279 | c_offload_target_scatter_inputs, | |
280 | ||
281 | // Time to add buffer reference for pointer buffers | |
282 | c_offload_target_add_buffer_refs, | |
283 | ||
284 | // Total time on lrb for computation | |
285 | c_offload_target_compute, | |
286 | ||
287 | // On lrb, time to copy OUT into buffer | |
288 | c_offload_target_gather_outputs, | |
289 | ||
290 | // Time to release buffer references | |
291 | c_offload_target_release_buffer_refs, | |
292 | ||
293 | // LAST TIME MONITOR | |
294 | c_offload_target_max_phase | |
295 | }; | |
296 | ||
2eab9666 IV |
297 | #ifdef TARGET_WINNT |
298 | #define DLL_LOCAL | |
299 | #else | |
300 | #define DLL_LOCAL __attribute__((visibility("hidden"))) | |
301 | #endif | |
302 | ||
5f520819 KY |
303 | #ifdef __cplusplus |
304 | extern "C" { | |
305 | #endif | |
2eab9666 IV |
306 | DLL_LOCAL void __liboffload_error_support(error_types input_tag, ...); |
307 | DLL_LOCAL void __liboffload_report_support(error_types input_tag, ...); | |
308 | DLL_LOCAL char const *offload_get_message_str(int msgCode); | |
309 | DLL_LOCAL char const * report_get_message_str(error_types input_tag); | |
310 | DLL_LOCAL char const * report_get_host_stage_str(int i); | |
311 | DLL_LOCAL char const * report_get_target_stage_str(int i); | |
5f520819 KY |
312 | #ifdef __cplusplus |
313 | } | |
314 | #endif | |
315 | ||
316 | #define test_msg_cat(nm, msg) \ | |
317 | fprintf(stderr, "\t TEST for %s \n \t", nm); \ | |
318 | __liboffload_error_support(msg); | |
319 | ||
320 | #define test_msg_cat1(nm, msg, ...) \ | |
321 | fprintf(stderr, "\t TEST for %s \n \t", nm); \ | |
322 | __liboffload_error_support(msg, __VA_ARGS__); | |
323 | ||
2eab9666 | 324 | DLL_LOCAL void write_message(FILE * file, int msgCode, va_list args_p); |
5f520819 KY |
325 | |
326 | #define LIBOFFLOAD_ERROR __liboffload_error_support | |
327 | ||
328 | #ifdef TARGET_WINNT | |
329 | #define LIBOFFLOAD_ABORT \ | |
330 | _set_abort_behavior(0, _WRITE_ABORT_MSG); \ | |
331 | abort() | |
332 | #else | |
333 | #define LIBOFFLOAD_ABORT \ | |
334 | abort() | |
335 | #endif | |
336 | ||
337 | #endif // !defined(LIBOFFLOAD_ERROR_CODES_H) |