mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-05 09:09:04 +08:00
L0 Metrics Api fixes:
1. DEBUG_BREAK_IF instead of UNRECOVERABLE_IF. 2. Proper oa configuration deinitialization. Change-Id: I2b966fb627d4a79ad1c0a1589b9e0916ea640545
This commit is contained in:
committed by
sys_ocldev
parent
93c8ffe326
commit
e438da0f92
@@ -19,7 +19,6 @@ bool MetricsLibrary::getContextData(Device &device, ContextCreateData_1_0 &conte
|
||||
}
|
||||
|
||||
bool MetricsLibrary::activateConfiguration(const ConfigurationHandle_1_0 configurationHandle) {
|
||||
UNRECOVERABLE_IF(!configurationHandle.IsValid());
|
||||
|
||||
ConfigurationActivateData_1_0 activateData = {};
|
||||
activateData.Type = GpuConfigurationActivationType::Tbs;
|
||||
@@ -30,7 +29,7 @@ bool MetricsLibrary::activateConfiguration(const ConfigurationHandle_1_0 configu
|
||||
validMetricsLibrary && validConfiguration &&
|
||||
(api.ConfigurationActivate(configurationHandle, &activateData) == StatusCode::Success);
|
||||
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -65,8 +65,8 @@ struct MetricContextImp : public MetricContext {
|
||||
zet_metric_group_handle_t *phMetricGroups) override;
|
||||
bool isMetricGroupActivated(const zet_metric_group_handle_t hMetricGroup) override;
|
||||
|
||||
void setUseCcs(const bool useCcs) override;
|
||||
bool isCcsUsed() override;
|
||||
void setUseCompute(const bool useCompute) override;
|
||||
bool isComputeUsed() override;
|
||||
|
||||
protected:
|
||||
ze_result_t initializationState = ZE_RESULT_ERROR_UNINITIALIZED;
|
||||
@@ -75,7 +75,7 @@ struct MetricContextImp : public MetricContext {
|
||||
std::unique_ptr<MetricsLibrary> metricsLibrary = nullptr;
|
||||
MetricGroupDomains metricGroupDomains;
|
||||
MetricTracer *pMetricTracer = nullptr;
|
||||
bool useCcs = false;
|
||||
bool useCompute = false;
|
||||
};
|
||||
|
||||
MetricContextImp::MetricContextImp(Device &deviceInput)
|
||||
@@ -94,11 +94,11 @@ bool MetricContextImp::loadDependencies() {
|
||||
bool result = true;
|
||||
if (metricEnumeration->loadMetricsDiscovery() != ZE_RESULT_SUCCESS) {
|
||||
result = false;
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
}
|
||||
if (result && !metricsLibrary->load()) {
|
||||
result = false;
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
}
|
||||
if (result) {
|
||||
setInitializationState(ZE_RESULT_SUCCESS);
|
||||
@@ -136,12 +136,12 @@ void MetricContextImp::setMetricEnumeration(MetricEnumeration &metricEnumeration
|
||||
this->metricEnumeration.reset(&metricEnumeration);
|
||||
}
|
||||
|
||||
void MetricContextImp::setUseCcs(const bool useCcs) {
|
||||
this->useCcs = useCcs;
|
||||
void MetricContextImp::setUseCompute(const bool useCompute) {
|
||||
this->useCompute = useCompute;
|
||||
}
|
||||
|
||||
bool MetricContextImp::isCcsUsed() {
|
||||
return useCcs;
|
||||
bool MetricContextImp::isComputeUsed() {
|
||||
return useCompute;
|
||||
}
|
||||
|
||||
ze_result_t
|
||||
@@ -228,7 +228,7 @@ ze_result_t MetricGroupDomains::activateDeferred(const uint32_t count,
|
||||
zet_metric_group_handle_t *phMetricGroups) {
|
||||
// For each metric group:
|
||||
for (uint32_t i = 0; i < count; ++i) {
|
||||
UNRECOVERABLE_IF(!phMetricGroups[i]);
|
||||
DEBUG_BREAK_IF(!phMetricGroups[i]);
|
||||
|
||||
// Try to associate it with a domain (oa, ...).
|
||||
if (!activateMetricGroupDeffered(phMetricGroups[i])) {
|
||||
@@ -284,7 +284,7 @@ ze_result_t MetricGroupDomains::activate() {
|
||||
metricGroupActive = activateEventMetricGroup(hMetricGroup);
|
||||
|
||||
if (metricGroupActive == false) {
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return ZE_RESULT_ERROR_UNKNOWN;
|
||||
}
|
||||
}
|
||||
@@ -299,14 +299,14 @@ bool MetricGroupDomains::activateEventMetricGroup(const zet_metric_group_handle_
|
||||
|
||||
// Validate metrics library handle.
|
||||
if (!hConfiguration.IsValid()) {
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Write metric group configuration to gpu.
|
||||
const bool result = metricsLibrary.activateConfiguration(hConfiguration);
|
||||
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -320,9 +320,10 @@ ze_result_t MetricGroupDomains::deactivate() {
|
||||
auto metricGroupEventBased = (metricGroup != nullptr)
|
||||
? MetricGroup::getProperties(hMetricGroup).samplingType == ZET_METRIC_GROUP_SAMPLING_TYPE_EVENT_BASED
|
||||
: false;
|
||||
auto hConfigurationEmpty = ConfigurationHandle_1_0{};
|
||||
auto hConfiguration = metricGroupEventBased
|
||||
? metricsLibrary.getConfiguration(hMetricGroup)
|
||||
: ConfigurationHandle_1_0{nullptr};
|
||||
: hConfigurationEmpty;
|
||||
|
||||
// Deactivate metric group configuration using metrics library.
|
||||
if (hConfiguration.IsValid() && metricGroupActivated) {
|
||||
|
||||
@@ -52,8 +52,8 @@ struct MetricContext {
|
||||
zet_metric_group_handle_t *phMetricGroups) = 0;
|
||||
virtual bool isMetricGroupActivated(const zet_metric_group_handle_t hMetricGroup) = 0;
|
||||
|
||||
virtual void setUseCcs(const bool useCcs) = 0;
|
||||
virtual bool isCcsUsed() = 0;
|
||||
virtual void setUseCompute(const bool useCompute) = 0;
|
||||
virtual bool isComputeUsed() = 0;
|
||||
};
|
||||
|
||||
struct Metric : _zet_metric_handle_t {
|
||||
|
||||
@@ -128,10 +128,10 @@ ze_result_t MetricEnumeration::cleanupMetricsDiscovery() {
|
||||
}
|
||||
|
||||
ze_result_t MetricEnumeration::cacheMetricInformation() {
|
||||
UNRECOVERABLE_IF(pMetricsDevice == nullptr);
|
||||
DEBUG_BREAK_IF(pMetricsDevice == nullptr);
|
||||
|
||||
MetricsDiscovery::TMetricsDeviceParams_1_2 *pMetricsDeviceParams = pMetricsDevice->GetParams();
|
||||
UNRECOVERABLE_IF(pMetricsDeviceParams == nullptr);
|
||||
DEBUG_BREAK_IF(pMetricsDeviceParams == nullptr);
|
||||
|
||||
// Check required Metrics Discovery API version - should be at least 1.5.
|
||||
const bool unsupportedMajorVersion =
|
||||
@@ -149,11 +149,11 @@ ze_result_t MetricEnumeration::cacheMetricInformation() {
|
||||
MetricsDiscovery::IConcurrentGroup_1_5 *pConcurrentGroup = nullptr;
|
||||
for (uint32_t i = 0; i < pMetricsDeviceParams->ConcurrentGroupsCount; ++i) {
|
||||
pConcurrentGroup = pMetricsDevice->GetConcurrentGroup(i);
|
||||
UNRECOVERABLE_IF(pConcurrentGroup == nullptr);
|
||||
DEBUG_BREAK_IF(pConcurrentGroup == nullptr);
|
||||
|
||||
MetricsDiscovery::TConcurrentGroupParams_1_0 *pConcurrentGroupParams =
|
||||
pConcurrentGroup->GetParams();
|
||||
UNRECOVERABLE_IF(pConcurrentGroupParams == nullptr);
|
||||
DEBUG_BREAK_IF(pConcurrentGroupParams == nullptr);
|
||||
|
||||
// 2. Find "OA" concurrent group.
|
||||
if (strcmp(pConcurrentGroupParams->SymbolName, oaConcurrentGroupName) == 0) {
|
||||
@@ -163,7 +163,7 @@ ze_result_t MetricEnumeration::cacheMetricInformation() {
|
||||
// 3. Iterate over metric sets.
|
||||
for (uint32_t j = 0; j < pConcurrentGroupParams->MetricSetsCount; ++j) {
|
||||
MetricsDiscovery::IMetricSet_1_5 *pMetricSet = pConcurrentGroup->GetMetricSet(j);
|
||||
UNRECOVERABLE_IF(pMetricSet == nullptr);
|
||||
DEBUG_BREAK_IF(pMetricSet == nullptr);
|
||||
|
||||
cacheMetricGroup(*pMetricSet, *pConcurrentGroup, i,
|
||||
ZET_METRIC_GROUP_SAMPLING_TYPE_TIME_BASED);
|
||||
@@ -182,7 +182,7 @@ MetricEnumeration::cacheMetricGroup(MetricsDiscovery::IMetricSet_1_5 &metricSet,
|
||||
const uint32_t domain,
|
||||
const zet_metric_group_sampling_type_t samplingType) {
|
||||
MetricsDiscovery::TMetricSetParams_1_4 *pMetricSetParams = metricSet.GetParams();
|
||||
UNRECOVERABLE_IF(pMetricSetParams == nullptr);
|
||||
DEBUG_BREAK_IF(pMetricSetParams == nullptr);
|
||||
|
||||
const uint32_t sourceApiMask = MetricGroupImp::getApiMask(samplingType);
|
||||
|
||||
@@ -208,7 +208,7 @@ MetricEnumeration::cacheMetricGroup(MetricsDiscovery::IMetricSet_1_5 &metricSet,
|
||||
createMetrics(metricSet, metrics);
|
||||
|
||||
auto pMetricGroup = MetricGroup::create(properties, metricSet, concurrentGroup, metrics);
|
||||
UNRECOVERABLE_IF(pMetricGroup == nullptr);
|
||||
DEBUG_BREAK_IF(pMetricGroup == nullptr);
|
||||
|
||||
metricGroups.push_back(pMetricGroup);
|
||||
|
||||
@@ -222,17 +222,17 @@ MetricEnumeration::cacheMetricGroup(MetricsDiscovery::IMetricSet_1_5 &metricSet,
|
||||
ze_result_t MetricEnumeration::createMetrics(MetricsDiscovery::IMetricSet_1_5 &metricSet,
|
||||
std::vector<Metric *> &metrics) {
|
||||
MetricsDiscovery::TMetricSetParams_1_4 *pMetricSetParams = metricSet.GetParams();
|
||||
UNRECOVERABLE_IF(pMetricSetParams == nullptr);
|
||||
DEBUG_BREAK_IF(pMetricSetParams == nullptr);
|
||||
|
||||
metrics.reserve(pMetricSetParams->MetricsCount + pMetricSetParams->InformationCount);
|
||||
|
||||
// Map metrics to level zero format and add them to 'metrics' vector.
|
||||
for (uint32_t i = 0; i < pMetricSetParams->MetricsCount; ++i) {
|
||||
MetricsDiscovery::IMetric_1_0 *pSourceMetric = metricSet.GetMetric(i);
|
||||
UNRECOVERABLE_IF(pSourceMetric == nullptr);
|
||||
DEBUG_BREAK_IF(pSourceMetric == nullptr);
|
||||
|
||||
MetricsDiscovery::TMetricParams_1_0 *pSourceMetricParams = pSourceMetric->GetParams();
|
||||
UNRECOVERABLE_IF(pSourceMetricParams == nullptr);
|
||||
DEBUG_BREAK_IF(pSourceMetricParams == nullptr);
|
||||
|
||||
zet_metric_properties_t properties = {};
|
||||
properties.version = ZET_METRIC_PROPERTIES_VERSION_CURRENT;
|
||||
@@ -257,11 +257,11 @@ ze_result_t MetricEnumeration::createMetrics(MetricsDiscovery::IMetricSet_1_5 &m
|
||||
// Map information to level zero format and add them to 'metrics' vector (as metrics).
|
||||
for (uint32_t i = 0; i < pMetricSetParams->InformationCount; ++i) {
|
||||
MetricsDiscovery::IInformation_1_0 *pSourceInformation = metricSet.GetInformation(i);
|
||||
UNRECOVERABLE_IF(pSourceInformation == nullptr);
|
||||
DEBUG_BREAK_IF(pSourceInformation == nullptr);
|
||||
|
||||
MetricsDiscovery::TInformationParams_1_0 *pSourceInformationParams =
|
||||
pSourceInformation->GetParams();
|
||||
UNRECOVERABLE_IF(pSourceInformationParams == nullptr);
|
||||
DEBUG_BREAK_IF(pSourceInformationParams == nullptr);
|
||||
|
||||
zet_metric_properties_t properties;
|
||||
properties.version = ZET_METRIC_PROPERTIES_VERSION_CURRENT;
|
||||
@@ -323,7 +323,7 @@ MetricEnumeration::getMetricType(const MetricsDiscovery::TMetricType sourceMetri
|
||||
case MetricsDiscovery::METRIC_TYPE_RAW:
|
||||
return ZET_METRIC_TYPE_RAW;
|
||||
default:
|
||||
UNRECOVERABLE_IF(!false);
|
||||
DEBUG_BREAK_IF(!false);
|
||||
return ZET_METRIC_TYPE_RAW;
|
||||
}
|
||||
}
|
||||
@@ -344,7 +344,7 @@ zet_metric_type_t MetricEnumeration::getMetricType(
|
||||
case MetricsDiscovery::INFORMATION_TYPE_TIMESTAMP:
|
||||
return ZET_METRIC_TYPE_TIMESTAMP;
|
||||
default:
|
||||
UNRECOVERABLE_IF(!false);
|
||||
DEBUG_BREAK_IF(!false);
|
||||
return ZET_METRIC_TYPE_RAW;
|
||||
}
|
||||
}
|
||||
@@ -362,7 +362,7 @@ zet_value_type_t MetricEnumeration::getMetricResultType(
|
||||
case MetricsDiscovery::RESULT_FLOAT:
|
||||
return ZET_VALUE_TYPE_FLOAT32;
|
||||
default:
|
||||
UNRECOVERABLE_IF(!false);
|
||||
DEBUG_BREAK_IF(!false);
|
||||
return ZET_VALUE_TYPE_UINT64;
|
||||
}
|
||||
}
|
||||
@@ -377,7 +377,7 @@ MetricGroupImp ::~MetricGroupImp() {
|
||||
};
|
||||
|
||||
ze_result_t MetricGroupImp::getProperties(zet_metric_group_properties_t *pProperties) {
|
||||
UNRECOVERABLE_IF(pProperties->version > ZET_METRIC_GROUP_PROPERTIES_VERSION_CURRENT);
|
||||
DEBUG_BREAK_IF(pProperties->version > ZET_METRIC_GROUP_PROPERTIES_VERSION_CURRENT);
|
||||
copyProperties(properties, *pProperties);
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
@@ -413,14 +413,14 @@ ze_result_t MetricGroupImp::getMetric(uint32_t *pCount, zet_metric_handle_t *phM
|
||||
}
|
||||
|
||||
bool MetricGroupImp::activate() {
|
||||
UNRECOVERABLE_IF(pReferenceMetricSet == nullptr);
|
||||
DEBUG_BREAK_IF(pReferenceMetricSet == nullptr);
|
||||
const bool result = pReferenceMetricSet->Activate() == MetricsDiscovery::CC_OK;
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool MetricGroupImp::deactivate() {
|
||||
UNRECOVERABLE_IF(pReferenceMetricSet == nullptr);
|
||||
DEBUG_BREAK_IF(pReferenceMetricSet == nullptr);
|
||||
const bool result = pReferenceMetricSet->Deactivate() == MetricsDiscovery::CC_OK;
|
||||
return result;
|
||||
}
|
||||
@@ -433,7 +433,7 @@ uint32_t MetricGroupImp::getApiMask(const zet_metric_group_sampling_type_t sampl
|
||||
case ZET_METRIC_GROUP_SAMPLING_TYPE_EVENT_BASED:
|
||||
return MetricsDiscovery::API_TYPE_OCL | MetricsDiscovery::API_TYPE_OGL4_X;
|
||||
default:
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -562,7 +562,7 @@ uint32_t MetricGroupImp::getRawReportSize() {
|
||||
|
||||
void MetricGroupImp::copyProperties(const zet_metric_group_properties_t &source,
|
||||
zet_metric_group_properties_t &destination) {
|
||||
UNRECOVERABLE_IF(source.version < destination.version);
|
||||
DEBUG_BREAK_IF(source.version < destination.version);
|
||||
destination = source;
|
||||
memcpy_s(destination.name, sizeof(destination.name),
|
||||
source.name, sizeof(destination.name));
|
||||
@@ -599,13 +599,13 @@ void MetricGroupImp::copyValue(const MetricsDiscovery::TTypedValue_1_0 &source,
|
||||
default:
|
||||
destination.type = ZET_VALUE_TYPE_UINT64;
|
||||
destination.value.ui64 = 0;
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ze_result_t MetricImp::getProperties(zet_metric_properties_t *pProperties) {
|
||||
UNRECOVERABLE_IF(pProperties->version > ZET_METRIC_PROPERTIES_VERSION_CURRENT);
|
||||
DEBUG_BREAK_IF(pProperties->version > ZET_METRIC_PROPERTIES_VERSION_CURRENT);
|
||||
copyProperties(properties, *pProperties);
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
@@ -617,7 +617,7 @@ ze_result_t MetricImp::initialize(const zet_metric_properties_t &sourcePropertie
|
||||
|
||||
void MetricImp::copyProperties(const zet_metric_properties_t &source,
|
||||
zet_metric_properties_t &destination) {
|
||||
UNRECOVERABLE_IF(source.version < destination.version);
|
||||
DEBUG_BREAK_IF(source.version < destination.version);
|
||||
destination = source;
|
||||
memcpy_s(destination.name, sizeof(destination.name),
|
||||
source.name, sizeof(destination.name));
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
#include "shared/source/command_stream/command_stream_receiver.h"
|
||||
#include "shared/source/device/device.h"
|
||||
#include "shared/source/helpers/engine_node_helper.h"
|
||||
#include "shared/source/memory_manager/allocation_properties.h"
|
||||
#include "shared/source/memory_manager/memory_manager.h"
|
||||
#include "shared/source/os_interface/os_context.h"
|
||||
@@ -27,9 +28,11 @@ MetricsLibrary::MetricsLibrary(MetricContext &metricContextInput)
|
||||
: metricContext(metricContextInput) {}
|
||||
|
||||
MetricsLibrary::~MetricsLibrary() {
|
||||
// Deactivate all metric group configurations.
|
||||
// Delete all metric group configurations.
|
||||
for (auto &configuration : configurations) {
|
||||
deactivateConfiguration(configuration.second);
|
||||
if (configuration.second.IsValid()) {
|
||||
api.ConfigurationDelete(configuration.second);
|
||||
}
|
||||
}
|
||||
|
||||
configurations.clear();
|
||||
@@ -54,7 +57,7 @@ bool MetricsLibrary::createMetricQuery(const uint32_t slotsCount, QueryHandle_1_
|
||||
NEO::GraphicsAllocation *&pAllocation) {
|
||||
// Validate metrics library state.
|
||||
if (!isInitialized()) {
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -70,7 +73,7 @@ bool MetricsLibrary::createMetricQuery(const uint32_t slotsCount, QueryHandle_1_
|
||||
|
||||
// Validate gpu report size.
|
||||
if (!gpuReportSize.ValueUInt32) {
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -82,7 +85,7 @@ bool MetricsLibrary::createMetricQuery(const uint32_t slotsCount, QueryHandle_1_
|
||||
|
||||
// Validate gpu report size.
|
||||
if (!pAllocation) {
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -91,7 +94,7 @@ bool MetricsLibrary::createMetricQuery(const uint32_t slotsCount, QueryHandle_1_
|
||||
|
||||
// Create query pool within metrics library.
|
||||
if (api.QueryCreate(&queryData, &query) != StatusCode::Success) {
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
metricContext.getDevice().getDriverHandle()->getMemoryManager()->freeGraphicsMemory(pAllocation);
|
||||
return false;
|
||||
}
|
||||
@@ -100,10 +103,10 @@ bool MetricsLibrary::createMetricQuery(const uint32_t slotsCount, QueryHandle_1_
|
||||
}
|
||||
|
||||
bool MetricsLibrary::destroyMetricQuery(QueryHandle_1_0 &query) {
|
||||
UNRECOVERABLE_IF(!query.IsValid());
|
||||
DEBUG_BREAK_IF(!query.IsValid());
|
||||
|
||||
const bool result = isInitialized() && (api.QueryDelete(query) == StatusCode::Success);
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -113,7 +116,7 @@ bool MetricsLibrary::getMetricQueryReportSize(size_t &rawDataSize) {
|
||||
|
||||
const bool result = isInitialized() && (api.GetParameter(ParameterType::QueryHwCountersReportApiSize, &valueType, &value) == StatusCode::Success);
|
||||
rawDataSize = static_cast<size_t>(value.ValueUInt32);
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -129,7 +132,7 @@ bool MetricsLibrary::getMetricQueryReport(QueryHandle_1_0 &query, const size_t r
|
||||
report.Query.DataSize = static_cast<uint32_t>(rawDataSize);
|
||||
|
||||
const bool result = isInitialized() && (api.GetData(&report) == StatusCode::Success);
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -137,7 +140,7 @@ void MetricsLibrary::initialize() {
|
||||
auto &metricsEnumeration = metricContext.getMetricEnumeration();
|
||||
|
||||
// Function should be called only once.
|
||||
UNRECOVERABLE_IF(initializationState != ZE_RESULT_ERROR_UNINITIALIZED);
|
||||
DEBUG_BREAK_IF(initializationState != ZE_RESULT_ERROR_UNINITIALIZED);
|
||||
|
||||
// Metrics Enumeration needs to be initialized before Metrics Library
|
||||
const bool validMetricsEnumeration = metricsEnumeration.isInitialized();
|
||||
@@ -145,7 +148,7 @@ void MetricsLibrary::initialize() {
|
||||
|
||||
// Load metrics library and exported functions.
|
||||
initializationState = validMetricsLibrary ? ZE_RESULT_SUCCESS : ZE_RESULT_ERROR_UNKNOWN;
|
||||
UNRECOVERABLE_IF(initializationState != ZE_RESULT_SUCCESS);
|
||||
DEBUG_BREAK_IF(initializationState != ZE_RESULT_SUCCESS);
|
||||
}
|
||||
|
||||
bool MetricsLibrary::load() {
|
||||
@@ -162,7 +165,7 @@ bool MetricsLibrary::load() {
|
||||
|
||||
// Return success if exported functions have been loaded.
|
||||
const bool result = contextCreateFunction && contextDeleteFunction;
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -183,12 +186,12 @@ bool MetricsLibrary::createContext() {
|
||||
const auto &deviceImp = *static_cast<DeviceImp *>(&device);
|
||||
const auto &commandStreamReceiver = *deviceImp.neoDevice->getDefaultEngine().commandStreamReceiver;
|
||||
const auto engineType = commandStreamReceiver.getOsContext().getEngineType();
|
||||
const bool isCcsUsed = engineType >= aub_stream::ENGINE_CCS && engineType <= aub_stream::ENGINE_CCS3;
|
||||
const bool isComputeUsed = NEO::EngineHelpers::isCcs(engineType);
|
||||
|
||||
metricContext.setUseCcs(isCcsUsed);
|
||||
metricContext.setUseCompute(isComputeUsed);
|
||||
|
||||
// Create metrics library context.
|
||||
UNRECOVERABLE_IF(!contextCreateFunction);
|
||||
DEBUG_BREAK_IF(!contextCreateFunction);
|
||||
clientType.Api = ClientApi::OpenCL;
|
||||
clientType.Gen = getGenType(device.getPlatformInfo());
|
||||
|
||||
@@ -206,7 +209,7 @@ bool MetricsLibrary::createContext() {
|
||||
getContextData(device, createData) &&
|
||||
contextCreateFunction(clientType, &createData, &context) == StatusCode::Success;
|
||||
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -226,7 +229,7 @@ uint32_t MetricsLibrary::getGpuCommandsSize(CommandBufferData_1_0 &commandBuffer
|
||||
result = api.CommandBufferGetSize(&commandBuffer, &commandBufferSize) == StatusCode::Success;
|
||||
}
|
||||
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result ? commandBufferSize.GpuMemorySize : 0;
|
||||
}
|
||||
|
||||
@@ -238,7 +241,7 @@ bool MetricsLibrary::getGpuCommands(CommandList &commandList,
|
||||
|
||||
// Validate gpu commands size.
|
||||
if (!commandBuffer.Size) {
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -248,7 +251,7 @@ bool MetricsLibrary::getGpuCommands(CommandList &commandList,
|
||||
|
||||
// Validate command buffer space.
|
||||
if (!buffer) {
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -258,7 +261,7 @@ bool MetricsLibrary::getGpuCommands(CommandList &commandList,
|
||||
// Obtain gpu commands from metrics library.
|
||||
const bool result =
|
||||
isInitialized() && (api.CommandBufferGet(&commandBuffer) == StatusCode::Success);
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -267,7 +270,8 @@ MetricsLibrary::createConfiguration(const zet_metric_group_handle_t metricGroupH
|
||||
const zet_metric_group_properties_t properties) {
|
||||
// Metric group internal data.
|
||||
auto metricGroup = MetricGroup::fromHandle(metricGroupHandle);
|
||||
UNRECOVERABLE_IF(!metricGroup);
|
||||
auto metricGroupDummy = ConfigurationHandle_1_0{};
|
||||
DEBUG_BREAK_IF(!metricGroup);
|
||||
|
||||
// Metrics library configuration creation data.
|
||||
ConfigurationHandle_1_0 handle = {};
|
||||
@@ -292,7 +296,7 @@ MetricsLibrary::createConfiguration(const zet_metric_group_handle_t metricGroupH
|
||||
metricGroup->deactivate();
|
||||
}
|
||||
|
||||
return validActivate ? handle : nullptr;
|
||||
return validActivate ? handle : metricGroupDummy;
|
||||
}
|
||||
|
||||
ConfigurationHandle_1_0 MetricsLibrary::getConfiguration(zet_metric_group_handle_t handle) {
|
||||
@@ -300,13 +304,13 @@ ConfigurationHandle_1_0 MetricsLibrary::getConfiguration(zet_metric_group_handle
|
||||
auto iter = configurations.find(handle);
|
||||
auto configuration = (iter != end(configurations)) ? iter->second : addConfiguration(handle);
|
||||
|
||||
UNRECOVERABLE_IF(!configuration.IsValid());
|
||||
DEBUG_BREAK_IF(!configuration.IsValid());
|
||||
return configuration;
|
||||
}
|
||||
|
||||
ConfigurationHandle_1_0 MetricsLibrary::addConfiguration(zet_metric_group_handle_t handle) {
|
||||
ConfigurationHandle_1_0 libraryHandle = {};
|
||||
UNRECOVERABLE_IF(!handle);
|
||||
DEBUG_BREAK_IF(!handle);
|
||||
|
||||
// Create metrics library configuration.
|
||||
auto metricGroup = MetricGroup::fromHandle(handle);
|
||||
@@ -319,7 +323,7 @@ ConfigurationHandle_1_0 MetricsLibrary::addConfiguration(zet_metric_group_handle
|
||||
configurations[handle] = libraryHandle;
|
||||
}
|
||||
|
||||
UNRECOVERABLE_IF(!libraryHandle.IsValid());
|
||||
DEBUG_BREAK_IF(!libraryHandle.IsValid());
|
||||
return libraryHandle;
|
||||
}
|
||||
|
||||
@@ -359,7 +363,7 @@ bool MetricQueryPoolImp::create() {
|
||||
return createMetricQueryPool();
|
||||
|
||||
default:
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -369,14 +373,14 @@ bool MetricQueryPoolImp::destroy() {
|
||||
|
||||
switch (description.flags) {
|
||||
case ZET_METRIC_QUERY_POOL_FLAG_PERFORMANCE:
|
||||
UNRECOVERABLE_IF(!(pAllocation && query.IsValid()));
|
||||
DEBUG_BREAK_IF(!(pAllocation && query.IsValid()));
|
||||
metricContext.getDevice().getDriverHandle()->getMemoryManager()->freeGraphicsMemory(pAllocation);
|
||||
result = metricsLibrary.destroyMetricQuery(query);
|
||||
delete this;
|
||||
break;
|
||||
|
||||
default:
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -436,7 +440,7 @@ ze_result_t MetricQueryImp::appendBegin(CommandList &commandList) {
|
||||
return writeMetricQuery(commandList, nullptr, true);
|
||||
|
||||
default:
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
}
|
||||
@@ -448,7 +452,7 @@ ze_result_t MetricQueryImp::appendEnd(CommandList &commandList,
|
||||
return writeMetricQuery(commandList, hCompletionEvent, false);
|
||||
|
||||
default:
|
||||
UNRECOVERABLE_IF(true);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
}
|
||||
@@ -486,7 +490,7 @@ ze_result_t MetricQueryImp::writeMetricQuery(CommandList &commandList,
|
||||
commandBuffer.QueryHwCounters.Slot = slot;
|
||||
commandBuffer.Allocation.GpuAddress = pool.pAllocation->getGpuAddress();
|
||||
commandBuffer.Allocation.CpuAddress = pool.pAllocation->getUnderlyingBuffer();
|
||||
commandBuffer.Type = metricContext.isCcsUsed()
|
||||
commandBuffer.Type = metricContext.isComputeUsed()
|
||||
? GpuCommandBufferType::Compute
|
||||
: GpuCommandBufferType::Render;
|
||||
|
||||
@@ -510,7 +514,7 @@ ze_result_t MetricQuery::appendMemoryBarrier(CommandList &commandList) {
|
||||
CommandBufferData_1_0 commandBuffer = {};
|
||||
commandBuffer.CommandsType = ObjectType::OverrideFlushCaches;
|
||||
commandBuffer.Override.Enable = true;
|
||||
commandBuffer.Type = metricContext.isCcsUsed()
|
||||
commandBuffer.Type = metricContext.isComputeUsed()
|
||||
? GpuCommandBufferType::Compute
|
||||
: GpuCommandBufferType::Render;
|
||||
|
||||
@@ -529,7 +533,7 @@ ze_result_t MetricQuery::appendTracerMarker(CommandList &commandList,
|
||||
CommandBufferData_1_0 commandBuffer = {};
|
||||
commandBuffer.CommandsType = ObjectType::MarkerStreamUser;
|
||||
commandBuffer.MarkerStreamUser.Value = value;
|
||||
commandBuffer.Type = metricContext.isCcsUsed()
|
||||
commandBuffer.Type = metricContext.isComputeUsed()
|
||||
? GpuCommandBufferType::Compute
|
||||
: GpuCommandBufferType::Render;
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace L0 {
|
||||
|
||||
ze_result_t MetricTracerImp::readData(uint32_t maxReportCount, size_t *pRawDataSize,
|
||||
uint8_t *pRawData) {
|
||||
UNRECOVERABLE_IF(rawReportSize == 0);
|
||||
DEBUG_BREAK_IF(rawReportSize == 0);
|
||||
|
||||
auto metricGroup = MetricGroup::fromHandle(hMetricGroup);
|
||||
|
||||
@@ -129,7 +129,7 @@ Event::State MetricTracerImp::getNotificationState() {
|
||||
}
|
||||
|
||||
uint32_t MetricTracerImp::getRequiredBufferSize(const uint32_t maxReportCount) const {
|
||||
UNRECOVERABLE_IF(rawReportSize == 0);
|
||||
DEBUG_BREAK_IF(rawReportSize == 0);
|
||||
uint32_t maxOaBufferReportCount = oaBufferSize / rawReportSize;
|
||||
|
||||
// Trim to OA buffer size if needed.
|
||||
|
||||
@@ -49,7 +49,7 @@ bool MetricsLibrary::activateConfiguration(const ConfigurationHandle_1_0 configu
|
||||
const bool result = validMetricsLibrary && validConfiguration &&
|
||||
(api.ConfigurationActivate(configurationHandle, &activateData) == StatusCode::Success);
|
||||
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ bool MetricsLibrary::deactivateConfiguration(const ConfigurationHandle_1_0 confi
|
||||
const bool result = validMetricsLibrary && validConfiguration &&
|
||||
(api.ConfigurationDeactivate(configurationHandle) == StatusCode::Success);
|
||||
|
||||
UNRECOVERABLE_IF(!result);
|
||||
DEBUG_BREAK_IF(!result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user