diff options
Diffstat (limited to 'openmp/offload/src/liboffload_error_codes.h')
-rw-r--r-- | openmp/offload/src/liboffload_error_codes.h | 276 |
1 files changed, 276 insertions, 0 deletions
diff --git a/openmp/offload/src/liboffload_error_codes.h b/openmp/offload/src/liboffload_error_codes.h new file mode 100644 index 00000000000..982167b11f6 --- /dev/null +++ b/openmp/offload/src/liboffload_error_codes.h @@ -0,0 +1,276 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.txt for details. +// +//===----------------------------------------------------------------------===// + + +#if !defined(LIBOFFLOAD_ERROR_CODES_H) +#define LIBOFFLOAD_ERROR_CODES_H +#include <stdarg.h> +#include <stdlib.h> +#include <stdio.h> + +typedef enum +{ + c_device_is_not_available = 0, + c_invalid_device_number, + c_offload1, + c_unknown_var_type, + c_send_func_ptr, + c_receive_func_ptr, + c_offload_malloc, + c_invalid_env_var_value, + c_invalid_env_var_int_value, + c_invalid_env_report_value, + c_offload_signaled1, + c_offload_signaled2, + c_myotarget_checkresult, + c_myowrapper_checkresult, + c_offload_descriptor_offload, + c_merge_var_descs1, + c_merge_var_descs2, + c_mic_parse_env_var_list1, + c_mic_parse_env_var_list2, + c_mic_process_exit_ret, + c_mic_process_exit_sig, + c_mic_process_exit, + c_mic_init3, + c_mic_init4, + c_mic_init5, + c_mic_init6, + c_no_static_var_data, + c_no_ptr_data, + c_get_engine_handle, + c_get_engine_index, + c_process_create, + c_process_get_func_handles, + c_process_wait_shutdown, + c_process_proxy_flush, + c_load_library, + c_pipeline_create, + c_pipeline_run_func, + c_pipeline_start_run_funcs, + c_buf_create, + c_buf_create_out_of_mem, + c_buf_create_from_mem, + c_buf_destroy, + c_buf_map, + c_buf_unmap, + c_buf_read, + c_buf_write, + c_buf_copy, + c_buf_get_address, + c_buf_add_ref, + c_buf_release_ref, + c_buf_set_state, + c_event_wait, + c_zero_or_neg_ptr_len, + c_zero_or_neg_transfer_size, + c_bad_ptr_mem_range, + c_different_src_and_dstn_sizes, + c_ranges_dont_match, + c_destination_is_over, + c_slice_of_noncont_array, + c_non_contiguous_dope_vector, + c_pointer_array_mismatch, + c_omp_invalid_device_num_env, + c_omp_invalid_device_num, + c_unknown_binary_type, + c_multiple_target_exes, + c_no_target_exe, + c_report_host, + c_report_target, + c_report_title, + c_report_from_file, + c_report_file, + c_report_line, + c_report_tag, + c_report_seconds, + c_report_bytes, + c_report_mic, + c_report_cpu_time, + c_report_cpu_to_mic_data, + c_report_mic_time, + c_report_mic_to_cpu_data, + c_report_unknown_timer_node, + c_report_unknown_trace_node, + c_report_offload, + c_report_w_tag, + c_report_state, + c_report_start, + c_report_init, + c_report_logical_card, + c_report_physical_card, + c_report_register, + c_report_init_func, + c_report_create_buf_host, + c_report_create_buf_mic, + c_report_send_pointer_data, + c_report_sent_pointer_data, + c_report_gather_copyin_data, + c_report_copyin_data, + c_report_state_signal, + c_report_signal, + c_report_wait, + c_report_compute, + c_report_receive_pointer_data, + c_report_received_pointer_data, + c_report_start_target_func, + c_report_var, + c_report_scatter_copyin_data, + c_report_gather_copyout_data, + c_report_scatter_copyout_data, + c_report_copyout_data, + c_report_unregister, + c_report_destroy, + c_report_myoinit, + c_report_myoregister, + c_report_myofini, + c_report_mic_myo_shared, + c_report_mic_myo_fptr, + c_report_myosharedmalloc, + c_report_myosharedfree, + c_report_myosharedalignedmalloc, + c_report_myosharedalignedfree, + c_report_myoacquire, + c_report_myorelease, + c_coipipe_max_number +} error_types; + +enum OffloadHostPhase { + // Total time on host for entire offload + c_offload_host_total_offload = 0, + + // Time to load target binary + c_offload_host_initialize, + + // Time to acquire lrb availability dynamically + c_offload_host_target_acquire, + + // Time to wait for dependencies + c_offload_host_wait_deps, + + // Time to allocate pointer buffers, initiate writes for pointers + // and calculate size of copyin/copyout buffer + c_offload_host_setup_buffers, + + // Time to allocate pointer buffers + c_offload_host_alloc_buffers, + + // Time to initialize misc data + c_offload_host_setup_misc_data, + + // Time to allocate copyin/copyout buffer + c_offload_host_alloc_data_buffer, + + // Time to initiate writes from host pointers to buffers + c_offload_host_send_pointers, + + // Time to Gather IN data of offload into buffer + c_offload_host_gather_inputs, + + // Time to map buffer + c_offload_host_map_in_data_buffer, + + // Time to unmap buffer + c_offload_host_unmap_in_data_buffer, + + // Time to start remote function call that does computation on lrb + c_offload_host_start_compute, + + // Time to wait for compute to finish + c_offload_host_wait_compute, + + // Time to initiate reads from pointer buffers + c_offload_host_start_buffers_reads, + + // Time to update host variabels with OUT data from buffer + c_offload_host_scatter_outputs, + + // Time to map buffer + c_offload_host_map_out_data_buffer, + + // Time to unmap buffer + c_offload_host_unmap_out_data_buffer, + + // Time to wait reads from buffers to finish + c_offload_host_wait_buffers_reads, + + // Time to destroy buffers that are no longer needed + c_offload_host_destroy_buffers, + + // LAST TIME MONITOR + c_offload_host_max_phase +}; + +enum OffloadTargetPhase { + // Total time spent on the target + c_offload_target_total_time = 0, + + // Time to initialize offload descriptor + c_offload_target_descriptor_setup, + + // Time to find target entry point in lookup table + c_offload_target_func_lookup, + + // Total time spend executing offload entry + c_offload_target_func_time, + + // Time to initialize target variables with IN values from buffer + c_offload_target_scatter_inputs, + + // Time to add buffer reference for pointer buffers + c_offload_target_add_buffer_refs, + + // Total time on lrb for computation + c_offload_target_compute, + + // On lrb, time to copy OUT into buffer + c_offload_target_gather_outputs, + + // Time to release buffer references + c_offload_target_release_buffer_refs, + + // LAST TIME MONITOR + c_offload_target_max_phase +}; + +#ifdef __cplusplus +extern "C" { +#endif +void __liboffload_error_support(error_types input_tag, ...); +void __liboffload_report_support(error_types input_tag, ...); +char const *offload_get_message_str(int msgCode); +char const * report_get_message_str(error_types input_tag); +char const * report_get_host_stage_str(int i); +char const * report_get_target_stage_str(int i); +#ifdef __cplusplus +} +#endif + +#define test_msg_cat(nm, msg) \ + fprintf(stderr, "\t TEST for %s \n \t", nm); \ + __liboffload_error_support(msg); + +#define test_msg_cat1(nm, msg, ...) \ + fprintf(stderr, "\t TEST for %s \n \t", nm); \ + __liboffload_error_support(msg, __VA_ARGS__); + +void write_message(FILE * file, int msgCode, va_list args_p); + +#define LIBOFFLOAD_ERROR __liboffload_error_support + +#ifdef TARGET_WINNT +#define LIBOFFLOAD_ABORT \ + _set_abort_behavior(0, _WRITE_ABORT_MSG); \ + abort() +#else +#define LIBOFFLOAD_ABORT \ + abort() +#endif + +#endif // !defined(LIBOFFLOAD_ERROR_CODES_H) |