From 64b516415c6fa7b0709df2bf4f6ac35bd0b7ad70 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Thu, 21 Sep 2017 14:31:58 -0500 Subject: [PATCH] removing graphics specific block RMI, ennabling memory related blocks Change-Id: I477adc49b9ee3c8593c193bdc69c0deb4a9726e1 [ROCm/ROCR-Runtime commit: 0e88414f5c6907a67f94478969ac467bc774edd1] --- .../hsa-runtime/inc/hsa_ven_amd_aqlprofile.h | 105 ++++++++++++------ 1 file changed, 72 insertions(+), 33 deletions(-) diff --git a/projects/rocr-runtime/runtime/hsa-runtime/inc/hsa_ven_amd_aqlprofile.h b/projects/rocr-runtime/runtime/hsa-runtime/inc/hsa_ven_amd_aqlprofile.h index b247da20f3..f9a593079e 100644 --- a/projects/rocr-runtime/runtime/hsa-runtime/inc/hsa_ven_amd_aqlprofile.h +++ b/projects/rocr-runtime/runtime/hsa-runtime/inc/hsa_ven_amd_aqlprofile.h @@ -73,14 +73,15 @@ extern "C" { // // Supported profiling events typedef enum { - HSA_VEN_AMD_AQLPROFILE_EVENT_TYPE_PMC, - HSA_VEN_AMD_AQLPROFILE_EVENT_TYPE_SQTT + HSA_VEN_AMD_AQLPROFILE_EVENT_TYPE_PMC = 0, + HSA_VEN_AMD_AQLPROFILE_EVENT_TYPE_SQTT = 1 } hsa_ven_amd_aqlprofile_event_type_t; // Supported performance counters (PMC) blocks // The block ID is the same for a block instances set, for example // each block instance from the TCC block set, TCC0, TCC1, …, TCCN // will have the same block ID HSA_VEN_AMD_AQLPROFILE_BLOCKS_TCC. +#ifndef AQLPROFILE_NGEN_API typedef enum { HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_CPC = 0, HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_CPF = 1, @@ -111,6 +112,37 @@ typedef enum { /* HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_RPB = 25, */ HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER = 26 } hsa_ven_amd_aqlprofile_block_name_t; +#else // AQLPROFILE_NGEN_API +typedef enum { + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_CPC = 0, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_CPF = 1, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_GDS = 2, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_GRBM = 3, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_GRBMSE = 4, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_SPI = 5, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_SQ = 6, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_SQCS = 7, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_SRBM = 8, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_SX = 9, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_TA = 10, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_TCA = 11, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_TCC = 12, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_TCP = 13, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_TD = 14, + // Memory related blocks + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_MCARB = 15, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_MCHUB = 16, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_MCMCBVM = 17, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_MCSEQ = 18, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_MCVML2 = 19, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_MCXBAR = 20, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_ATC = 21, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_ATCL2 = 22, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_GCEA = 23, + HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_RPB = 24, + HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER = 25 +} hsa_ven_amd_aqlprofile_block_name_t; +#endif // AQLPROFILE_NGEN_API // PMC event object structure // ‘counter_id’ value is specified in GFXIPs perfcounter user guides @@ -123,7 +155,7 @@ typedef struct { } hsa_ven_amd_aqlprofile_event_t; // Check if event is valid for the specific GPU -hsa_status_t HSA_API hsa_ven_amd_aqlprofile_validate_event( +hsa_status_t hsa_ven_amd_aqlprofile_validate_event( hsa_agent_t agent, // HSA handle for the profiling GPU const hsa_ven_amd_aqlprofile_event_t* event, // [in] Pointer on validated event bool* result); // [out] True if the event valid, False otherwise @@ -133,11 +165,11 @@ hsa_status_t HSA_API hsa_ven_amd_aqlprofile_validate_event( // profile configuration then error status will be returned. typedef enum { // SQTT applicable parameters - HSA_VEN_AMD_AQLPROFILE_PARAMETER_NAME_COMPUTE_UNIT_TARGET, - HSA_VEN_AMD_AQLPROFILE_PARAMETER_NAME_VM_ID_MASK, - HSA_VEN_AMD_AQLPROFILE_PARAMETER_NAME_MASK, - HSA_VEN_AMD_AQLPROFILE_PARAMETER_NAME_TOKEN_MASK, - HSA_VEN_AMD_AQLPROFILE_PARAMETER_NAME_TOKEN_MASK2 + HSA_VEN_AMD_AQLPROFILE_PARAMETER_NAME_COMPUTE_UNIT_TARGET = 0, + HSA_VEN_AMD_AQLPROFILE_PARAMETER_NAME_VM_ID_MASK = 1, + HSA_VEN_AMD_AQLPROFILE_PARAMETER_NAME_MASK = 2, + HSA_VEN_AMD_AQLPROFILE_PARAMETER_NAME_TOKEN_MASK = 3, + HSA_VEN_AMD_AQLPROFILE_PARAMETER_NAME_TOKEN_MASK2 = 4 } hsa_ven_amd_aqlprofile_parameter_name_t; // Profile parameter object @@ -192,21 +224,21 @@ typedef struct { // Method to populate the provided AQL packet with profiling start commands // Only 'pm4_command' fields of the packet are set and the application // is responsible to set Vendor Specific header type a completion signal -hsa_status_t HSA_API hsa_ven_amd_aqlprofile_start( +hsa_status_t hsa_ven_amd_aqlprofile_start( const hsa_ven_amd_aqlprofile_profile_t* profile, // [in] profile contex object hsa_ext_amd_aql_pm4_packet_t* aql_start_packet); // [out] profile start AQL packet // Method to populate the provided AQL packet with profiling stop commands // Only 'pm4_command' fields of the packet are set and the application // is responsible to set Vendor Specific header type and a completion signal -hsa_status_t HSA_API hsa_ven_amd_aqlprofile_stop( +hsa_status_t hsa_ven_amd_aqlprofile_stop( const hsa_ven_amd_aqlprofile_profile_t* profile, // [in] profile contex object hsa_ext_amd_aql_pm4_packet_t* aql_stop_packet); // [out] profile stop AQL packet // Legacy devices, PM4 profiling packet size const unsigned HSA_VEN_AMD_AQLPROFILE_LEGACY_PM4_PACKET_SIZE = 192; // Legacy devices, converting the profiling AQL packet to PM4 packet blob -hsa_status_t HSA_API hsa_ven_amd_aqlprofile_legacy_get_pm4( +hsa_status_t hsa_ven_amd_aqlprofile_legacy_get_pm4( const hsa_ext_amd_aql_pm4_packet_t* aql_packet, // [in] AQL packet void* data); // [out] PM4 packet blob @@ -230,12 +262,12 @@ typedef struct { // Profile attributes typedef enum { - HSA_VEN_AMD_AQLPROFILE_INFO_COMMAND_BUFFER_SIZE, // get_info returns uint32_t value - HSA_VEN_AMD_AQLPROFILE_INFO_PMC_DATA_SIZE, // get_info returns uint32_t value - HSA_VEN_AMD_AQLPROFILE_INFO_PMC_DATA, // get_info returns PMC uint64_t value - // in info_data object - HSA_VEN_AMD_AQLPROFILE_INFO_SQTT_DATA // get_info returns SQTT buffer ptr/size - // in info_data object + HSA_VEN_AMD_AQLPROFILE_INFO_COMMAND_BUFFER_SIZE = 0, // get_info returns uint32_t value + HSA_VEN_AMD_AQLPROFILE_INFO_PMC_DATA_SIZE = 1, // get_info returns uint32_t value + HSA_VEN_AMD_AQLPROFILE_INFO_PMC_DATA = 2, // get_info returns PMC uint64_t value + // in info_data object + HSA_VEN_AMD_AQLPROFILE_INFO_SQTT_DATA = 3 // get_info returns SQTT buffer ptr/size + // in info_data object } hsa_ven_amd_aqlprofile_info_type_t; // Definition of output data iterator callback @@ -245,19 +277,19 @@ typedef hsa_status_t (*hsa_ven_amd_aqlprofile_data_callback_t)( void* callback_data); // [in/out] data passed to the callback // Method for getting the profile info -hsa_status_t HSA_API hsa_ven_amd_aqlprofile_get_info( +hsa_status_t hsa_ven_amd_aqlprofile_get_info( const hsa_ven_amd_aqlprofile_profile_t* profile, // [in] profile context object hsa_ven_amd_aqlprofile_info_type_t attribute, // [in] requested profile attribute void* value); // [in/out] returned value // Method for iterating the events output data -hsa_status_t HSA_API hsa_ven_amd_aqlprofile_iterate_data( +hsa_status_t hsa_ven_amd_aqlprofile_iterate_data( const hsa_ven_amd_aqlprofile_profile_t* profile, // [in] profile context object hsa_ven_amd_aqlprofile_data_callback_t callback, // [in] callback to iterate the output data void* data); // [in/out] data passed to the callback // Return error string -hsa_status_t HSA_API hsa_ven_amd_aqlprofile_error_string( +hsa_status_t hsa_ven_amd_aqlprofile_error_string( const char** str); // [out] pointer on the error string /** @@ -269,28 +301,35 @@ hsa_status_t HSA_API hsa_ven_amd_aqlprofile_error_string( * @brief Extension function table. */ typedef struct hsa_ven_amd_aqlprofile_1_00_pfn_s { - hsa_status_t (*hsa_ven_amd_aqlprofile_error_string)(const char** str); + hsa_status_t (*hsa_ven_amd_aqlprofile_error_string)( + const char** str); - hsa_status_t (*hsa_ven_amd_aqlprofile_validate_event)(hsa_agent_t agent, - const hsa_ven_amd_aqlprofile_event_t* event, - bool* result); + hsa_status_t (*hsa_ven_amd_aqlprofile_validate_event)( + hsa_agent_t agent, + const hsa_ven_amd_aqlprofile_event_t* event, + bool* result); - hsa_status_t (*hsa_ven_amd_aqlprofile_start)(const hsa_ven_amd_aqlprofile_profile_t* profile, - hsa_ext_amd_aql_pm4_packet_t* aql_start_packet); + hsa_status_t (*hsa_ven_amd_aqlprofile_start)( + const hsa_ven_amd_aqlprofile_profile_t* profile, + hsa_ext_amd_aql_pm4_packet_t* aql_start_packet); - hsa_status_t (*hsa_ven_amd_aqlprofile_stop)(const hsa_ven_amd_aqlprofile_profile_t* profile, - hsa_ext_amd_aql_pm4_packet_t* aql_start_packet); + hsa_status_t (*hsa_ven_amd_aqlprofile_stop)( + const hsa_ven_amd_aqlprofile_profile_t* profile, + hsa_ext_amd_aql_pm4_packet_t* aql_start_packet); hsa_status_t (*hsa_ven_amd_aqlprofile_legacy_get_pm4)( - const hsa_ext_amd_aql_pm4_packet_t* aql_packet, void* data); + const hsa_ext_amd_aql_pm4_packet_t* aql_packet, + void* data); - hsa_status_t (*hsa_ven_amd_aqlprofile_get_info)(const hsa_ven_amd_aqlprofile_profile_t* profile, - hsa_ven_amd_aqlprofile_info_type_t attribute, - void* value); + hsa_status_t (*hsa_ven_amd_aqlprofile_get_info)( + const hsa_ven_amd_aqlprofile_profile_t* profile, + hsa_ven_amd_aqlprofile_info_type_t attribute, + void* value); hsa_status_t (*hsa_ven_amd_aqlprofile_iterate_data)( const hsa_ven_amd_aqlprofile_profile_t* profile, - hsa_ven_amd_aqlprofile_data_callback_t callback, void* data); + hsa_ven_amd_aqlprofile_data_callback_t callback, + void* data); } hsa_ven_amd_aqlprofile_1_00_pfn_t; #ifdef __cplusplus