From 1e2a57d5330fbb2b15e339936219789f912d8b3e Mon Sep 17 00:00:00 2001 From: Aleksei Keisel Date: Mon, 8 Nov 2021 15:11:07 +0000 Subject: [PATCH] Update MDAPI headers Resolves: LOCI-2692 Signed-off-by: Aleksei Keisel aleksei.keisel@intel.com --- level_zero/tools/source/metrics/metric.h | 7 +- .../source/metrics/metric_enumeration_imp.cpp | 2 +- .../source/metrics/metric_enumeration_imp.h | 2 - .../metrics/mock_metric_enumeration.cpp | 16 +- .../sources/metrics/mock_metric_enumeration.h | 12 +- .../metrics_discovery/metrics_discovery_api.h | 141 +++++++++++++++--- 6 files changed, 142 insertions(+), 38 deletions(-) diff --git a/level_zero/tools/source/metrics/metric.h b/level_zero/tools/source/metrics/metric.h index 5e2d5ebeac..4f6b7f1206 100644 --- a/level_zero/tools/source/metrics/metric.h +++ b/level_zero/tools/source/metrics/metric.h @@ -9,6 +9,8 @@ #include "level_zero/core/source/event/event.h" #include +#include "metrics_discovery_api.h" + #include struct _zet_metric_group_handle_t {}; @@ -17,11 +19,6 @@ struct _zet_metric_streamer_handle_t {}; struct _zet_metric_query_pool_handle_t {}; struct _zet_metric_query_handle_t {}; -namespace MetricsDiscovery { -class IMetricSet_1_5; -class IConcurrentGroup_1_5; -} // namespace MetricsDiscovery - namespace L0 { struct MetricsLibrary; struct CommandList; diff --git a/level_zero/tools/source/metrics/metric_enumeration_imp.cpp b/level_zero/tools/source/metrics/metric_enumeration_imp.cpp index fc93b4495e..d45b82148d 100644 --- a/level_zero/tools/source/metrics/metric_enumeration_imp.cpp +++ b/level_zero/tools/source/metrics/metric_enumeration_imp.cpp @@ -111,7 +111,7 @@ ze_result_t MetricEnumeration::openMetricsDiscovery() { pMetricsDevice = nullptr; // Open adapter group. - openAdapterGroup(&pAdapterGroup); + openAdapterGroup((MetricsDiscovery::IAdapterGroupLatest **)&pAdapterGroup); if (pAdapterGroup == nullptr) { NEO::printDebugString(NEO::DebugManager.flags.PrintDebugMessages.get(), stderr, "unable to open metrics adapter groups %s\n", " "); cleanupMetricsDiscovery(); diff --git a/level_zero/tools/source/metrics/metric_enumeration_imp.h b/level_zero/tools/source/metrics/metric_enumeration_imp.h index 81c9c562f9..c0d3a5a12c 100644 --- a/level_zero/tools/source/metrics/metric_enumeration_imp.h +++ b/level_zero/tools/source/metrics/metric_enumeration_imp.h @@ -11,8 +11,6 @@ #include "level_zero/tools/source/metrics/metric.h" -#include "metrics_discovery_api.h" - #include namespace L0 { diff --git a/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.cpp b/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.cpp index 59eea3638d..b2ff699ac0 100644 --- a/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.cpp +++ b/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.cpp @@ -18,20 +18,20 @@ Mock::~Mock() { MockMetricsDiscoveryApi *Mock::g_mockApi = nullptr; -TCompletionCode MockMetricsDiscoveryApi::OpenAdapterGroup(IAdapterGroup_1_9 **group) { - return Mock::g_mockApi->MockOpenAdapterGroup(group); +TCompletionCode MockMetricsDiscoveryApi::OpenAdapterGroup(IAdapterGroupLatest **group) { + return Mock::g_mockApi->MockOpenAdapterGroup((IAdapterGroup_1_9 **)group); } -TCompletionCode MockMetricsDiscoveryApi::OpenMetricsDeviceFromFile(const char *fileName, void *openParams, IMetricsDevice_1_5 **device) { - return Mock::g_mockApi->MockOpenMetricsDeviceFromFile(fileName, openParams, device); +TCompletionCode MockMetricsDiscoveryApi::OpenMetricsDeviceFromFile(const char *fileName, void *openParams, IMetricsDeviceLatest **device) { + return Mock::g_mockApi->MockOpenMetricsDeviceFromFile(fileName, openParams, (IMetricsDevice_1_5 **)device); } -TCompletionCode MockMetricsDiscoveryApi::CloseMetricsDevice(IMetricsDevice_1_5 *device) { - return Mock::g_mockApi->MockCloseMetricsDevice(device); +TCompletionCode MockMetricsDiscoveryApi::CloseMetricsDevice(IMetricsDeviceLatest *device) { + return Mock::g_mockApi->MockCloseMetricsDevice((IMetricsDevice_1_5 *)device); } -TCompletionCode MockMetricsDiscoveryApi::SaveMetricsDeviceToFile(const char *fileName, void *saveParams, IMetricsDevice_1_5 *device) { - return Mock::g_mockApi->MockSaveMetricsDeviceToFile(fileName, saveParams, device); +TCompletionCode MockMetricsDiscoveryApi::SaveMetricsDeviceToFile(const char *fileName, void *saveParams, IMetricsDeviceLatest *device) { + return Mock::g_mockApi->MockSaveMetricsDeviceToFile(fileName, saveParams, (IMetricsDevice_1_5 *)device); } void Mock::setMockedApi(MockMetricsDiscoveryApi *mockedApi) { diff --git a/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.h b/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.h index 474945ab4c..1f6f6ceea2 100644 --- a/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.h +++ b/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.h @@ -30,10 +30,12 @@ using MetricsDiscovery::IAdapter_1_9; using MetricsDiscovery::IAdapterGroup_1_6; using MetricsDiscovery::IAdapterGroup_1_8; using MetricsDiscovery::IAdapterGroup_1_9; +using MetricsDiscovery::IAdapterGroupLatest; using MetricsDiscovery::IConcurrentGroup_1_5; using MetricsDiscovery::IInformation_1_0; using MetricsDiscovery::IMetric_1_0; using MetricsDiscovery::IMetricsDevice_1_5; +using MetricsDiscovery::IMetricsDeviceLatest; using MetricsDiscovery::IMetricSet_1_0; using MetricsDiscovery::IMetricSet_1_5; using MetricsDiscovery::IOverride_1_2; @@ -55,16 +57,16 @@ using MetricsDiscovery::TTypedValue_1_0; struct MockMetricsDiscoveryApi { // Original api functions. - static TCompletionCode MD_STDCALL OpenMetricsDeviceFromFile(const char *fileName, void *openParams, IMetricsDevice_1_5 **device); - static TCompletionCode MD_STDCALL CloseMetricsDevice(IMetricsDevice_1_5 *device); - static TCompletionCode MD_STDCALL SaveMetricsDeviceToFile(const char *fileName, void *saveParams, IMetricsDevice_1_5 *device); - static TCompletionCode MD_STDCALL OpenAdapterGroup(IAdapterGroup_1_9 **adapterGroup); + static TCompletionCode MD_STDCALL OpenMetricsDeviceFromFile(const char *fileName, void *openParams, IMetricsDeviceLatest **device); + static TCompletionCode MD_STDCALL CloseMetricsDevice(IMetricsDeviceLatest *device); + static TCompletionCode MD_STDCALL SaveMetricsDeviceToFile(const char *fileName, void *saveParams, IMetricsDeviceLatest *device); + static TCompletionCode MD_STDCALL OpenAdapterGroup(IAdapterGroupLatest **adapterGroup); // Mocked api functions. MOCK_METHOD(TCompletionCode, MockOpenMetricsDeviceFromFile, (const char *, void *, IMetricsDevice_1_5 **)); MOCK_METHOD(TCompletionCode, MockCloseMetricsDevice, (IMetricsDevice_1_5 *)); MOCK_METHOD(TCompletionCode, MockSaveMetricsDeviceToFile, (const char *, void *, IMetricsDevice_1_5 *)); - MOCK_METHOD(TCompletionCode, MockOpenAdapterGroup, (IAdapterGroup_1_9 * *adapterGroup)); + MOCK_METHOD(TCompletionCode, MockOpenAdapterGroup, (IAdapterGroup_1_9 **)); }; template <> diff --git a/third_party/metrics_discovery/metrics_discovery_api.h b/third_party/metrics_discovery/metrics_discovery_api.h index f034b68b4d..bf47465925 100644 --- a/third_party/metrics_discovery/metrics_discovery_api.h +++ b/third_party/metrics_discovery/metrics_discovery_api.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// Copyright © 2019-2020, Intel Corporation +// Copyright © 2019-2020, Intel Corporation // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), @@ -54,7 +54,7 @@ ////////////////////////////////////////////////////////////////////////////////// // API build number: ////////////////////////////////////////////////////////////////////////////////// -#define MD_API_BUILD_NUMBER_CURRENT 133 +#define MD_API_BUILD_NUMBER_CURRENT 139 namespace MetricsDiscovery { @@ -74,16 +74,17 @@ namespace MetricsDiscovery typedef enum EMD_API_MINOR_VERSION { MD_API_MINOR_NUMBER_0 = 0, - MD_API_MINOR_NUMBER_1 = 1, // CalculationAPI - MD_API_MINOR_NUMBER_2 = 2, // OverridesAPI - MD_API_MINOR_NUMBER_3 = 3, // BatchBuffer Sampling (aka DMA Sampling) - MD_API_MINOR_NUMBER_4 = 4, // GT dependent MetricSets - MD_API_MINOR_NUMBER_5 = 5, // MaxValue calculation for CalculationAPI - MD_API_MINOR_NUMBER_6 = 6, // Multi adapter support - MD_API_MINOR_NUMBER_7 = 7, - MD_API_MINOR_NUMBER_8 = 8, // TAdapterParams update - MD_API_MINOR_NUMBER_9 = 9, // Sub device support. - MD_API_MINOR_NUMBER_CURRENT = MD_API_MINOR_NUMBER_9, + MD_API_MINOR_NUMBER_1 = 1, // CalculationAPI + MD_API_MINOR_NUMBER_2 = 2, // OverridesAPI + MD_API_MINOR_NUMBER_3 = 3, // BatchBuffer Sampling (aka DMA Sampling) + MD_API_MINOR_NUMBER_4 = 4, // GT dependent MetricSets + MD_API_MINOR_NUMBER_5 = 5, // MaxValue calculation for CalculationAPI + MD_API_MINOR_NUMBER_6 = 6, // Multi adapter support + MD_API_MINOR_NUMBER_7 = 7, // Compile time equations calculation approach + MD_API_MINOR_NUMBER_8 = 8, // TAdapterParams update + MD_API_MINOR_NUMBER_9 = 9, // Sub device support. + MD_API_MINOR_NUMBER_10 = 10, // GetGpuCpuTimestamps API function extended by a correlation indicator param + MD_API_MINOR_NUMBER_CURRENT = MD_API_MINOR_NUMBER_10, MD_API_MINOR_NUMBER_CEIL = 0xFFFFFFFF } MD_API_MINOR_VERSION; @@ -1225,6 +1226,25 @@ namespace MetricsDiscovery virtual IConcurrentGroup_1_5* GetConcurrentGroup( uint32_t index ); }; + /////////////////////////////////////////////////////////////////////////////// + // + // Class: + // IMetricsDevice_1_10 + // + // Description: + // Updated 1.5 version to use with 1.10 interface version. + // + // Updates: + // - GetGpuCpuTimestamps: Update to 1.10 interface + // + /////////////////////////////////////////////////////////////////////////////// + class IMetricsDevice_1_10 : public IMetricsDevice_1_5 + { + public: + using IMetricsDevice_1_0::GetGpuCpuTimestamps; // To avoid hiding by 1.10 interface function + virtual TCompletionCode GetGpuCpuTimestamps( uint64_t* gpuTimestampNs, uint64_t* cpuTimestampNs, uint32_t* cpuId, uint64_t* correlationIndicatorNs ); + }; + /////////////////////////////////////////////////////////////////////////////// // // Class: @@ -1298,6 +1318,35 @@ namespace MetricsDiscovery virtual TCompletionCode OpenMetricsSubDeviceFromFile( const uint32_t subDeviceIndex, const char* fileName, void* openParams, IMetricsDevice_1_5** metricsDevice ); }; + /////////////////////////////////////////////////////////////////////////////// + // + // Class: + // IAdapter_1_10 + // + // Description: + // Abstract interface for GPU adapter. + // + // Updates: + // - OpenMetricsDevice: Update to 1.10 interface + // - OpenMetricsDeviceFromFile: Update to 1.10 interface + // - OpenMetricsSubDevice: Update to 1.10 interface + // - OpenMetricsSubDeviceFromFile: Update to 1.10 interface + // + /////////////////////////////////////////////////////////////////////////////// + class IAdapter_1_10 : public IAdapter_1_9 + { + public: + using IAdapter_1_6::OpenMetricsDevice; + using IAdapter_1_6::OpenMetricsDeviceFromFile; + using IAdapter_1_9::OpenMetricsSubDevice; + using IAdapter_1_9::OpenMetricsSubDeviceFromFile; + + virtual TCompletionCode OpenMetricsDevice( IMetricsDevice_1_10** metricsDevice ); + virtual TCompletionCode OpenMetricsDeviceFromFile( const char* fileName, void* openParams, IMetricsDevice_1_10** metricsDevice ); + virtual TCompletionCode OpenMetricsSubDevice( const uint32_t subDeviceIndex, IMetricsDevice_1_10** metricsDevice ); + virtual TCompletionCode OpenMetricsSubDeviceFromFile( const uint32_t subDeviceIndex, const char* fileName, void* openParams, IMetricsDevice_1_10** metricsDevice ); + }; + /////////////////////////////////////////////////////////////////////////////// // // Class: @@ -1357,19 +1406,77 @@ namespace MetricsDiscovery virtual IAdapter_1_9* GetAdapter( uint32_t index ); }; + /////////////////////////////////////////////////////////////////////////////// + // + // Class: + // IAdapterGroup_1_10 + // + // Description: + // Abstract interface for the GPU adapters root object. + // + // Updates: + // - GetAdapter: Update to 1.10 interface + // + /////////////////////////////////////////////////////////////////////////////// + class IAdapterGroup_1_10 : public IAdapterGroup_1_9 + { + public: + virtual IAdapter_1_10* GetAdapter( uint32_t index ); + }; + + ////////////////////////////////////////////////////////////////////////////////// + // Latest interfaces and typedef structs versions: + ////////////////////////////////////////////////////////////////////////////////// + using IAdapterGroupLatest = IAdapterGroup_1_10; + using IAdapterLatest = IAdapter_1_10; + using IConcurrentGroupLatest = IConcurrentGroup_1_5; + using IEquationLatest = IEquation_1_0; + using IInformationLatest = IInformation_1_0; + using IMetricLatest = IMetric_1_0; + using IMetricSetLatest = IMetricSet_1_5; + using IMetricsDeviceLatest = IMetricsDevice_1_10; + using IOverrideLatest = IOverride_1_2; + using TAdapterGroupParamsLatest = TAdapterGroupParams_1_6; + using TAdapterIdLatest = TAdapterId_1_6; + using TAdapterIdLuidLatest = TAdapterIdLuid_1_6; + using TAdapterIdMajorMinorLatest = TAdapterIdMajorMinor_1_6; + using TAdapterParamsLatest = TAdapterParams_1_9; + using TApiSpecificIdLatest = TApiSpecificId_1_0; + using TApiVersionLatest = TApiVersion_1_0; + using TByteArrayLatest = TByteArray_1_0; + using TConcurrentGroupParamsLatest = TConcurrentGroupParams_1_0; + using TDeltaFunctionLatest = TDeltaFunction_1_0; + using TEngineIdClassInstanceLatest = TEngineIdClassInstance_1_9; + using TEngineIdLatest = TEngineId_1_9; + using TEngineParamsLatest = TEngineParams_1_9; + using TEquationElementLatest = TEquationElement_1_0; + using TGlobalSymbolLatest = TGlobalSymbol_1_0; + using TInformationParamsLatest = TInformationParams_1_0; + using TMetricParamsLatest = TMetricParams_1_0; + using TMetricSetParamsLatest = TMetricSetParams_1_4; + using TMetricsDeviceParamsLatest = TMetricsDeviceParams_1_2; + using TOverrideParamsLatest = TOverrideParams_1_2; + using TReadParamsLatest = TReadParams_1_0; + using TSetDriverOverrideParamsLatest = TSetDriverOverrideParams_1_2; + using TSetFrequencyOverrideParamsLatest = TSetFrequencyOverrideParams_1_2; + using TSetOverrideParamsLatest = TSetOverrideParams_1_2; + using TSetQueryOverrideParamsLatest = TSetQueryOverrideParams_1_2; + using TSubDeviceParamsLatest = TSubDeviceParams_1_9; + using TTypedValueLatest = TTypedValue_1_0; + #ifdef __cplusplus extern "C" { #endif // [Current] Factory functions - typedef TCompletionCode( MD_STDCALL* OpenAdapterGroup_fn )( IAdapterGroup_1_9** adapterGroup ); + typedef TCompletionCode( MD_STDCALL* OpenAdapterGroup_fn )( IAdapterGroupLatest** adapterGroup ); // [Legacy] Factory functions - typedef TCompletionCode( MD_STDCALL* OpenMetricsDevice_fn )( IMetricsDevice_1_5** metricsDevice ); - typedef TCompletionCode( MD_STDCALL* OpenMetricsDeviceFromFile_fn )( const char* fileName, void* openParams, IMetricsDevice_1_5** metricsDevice ); - typedef TCompletionCode( MD_STDCALL* CloseMetricsDevice_fn )( IMetricsDevice_1_5* metricsDevice ); - typedef TCompletionCode( MD_STDCALL* SaveMetricsDeviceToFile_fn )( const char* fileName, void* saveParams, IMetricsDevice_1_5* metricsDevice ); + typedef TCompletionCode( MD_STDCALL* OpenMetricsDevice_fn )( IMetricsDeviceLatest** metricsDevice ); + typedef TCompletionCode( MD_STDCALL* OpenMetricsDeviceFromFile_fn )( const char* fileName, void* openParams, IMetricsDeviceLatest** metricsDevice ); + typedef TCompletionCode( MD_STDCALL* CloseMetricsDevice_fn )( IMetricsDeviceLatest* metricsDevice ); + typedef TCompletionCode( MD_STDCALL* SaveMetricsDeviceToFile_fn )( const char* fileName, void* saveParams, IMetricsDeviceLatest* metricsDevice ); #ifdef __cplusplus }