//===----------------------------------------------------------------------===// // // 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 #include #include 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)