liboffload_error_codes.h 9.4 KB

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