Print GNA Lib function name when error code obtained (#3129)
This commit is contained in:
parent
ea52dd2642
commit
93e270169c
@ -19,12 +19,12 @@ void * ExportSueLegacyUsingGnaApi2(
|
||||
|
||||
uint32_t exportConfig;
|
||||
auto status = Gna2ModelExportConfigCreate(gnaUserAllocatorAlignedPage, &exportConfig);
|
||||
GNADeviceHelper::checkGna2Status(status);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2ModelExportConfigCreate");
|
||||
|
||||
status = Gna2ModelExportConfigSetSource(exportConfig, 0, modelId);
|
||||
GNADeviceHelper::checkGna2Status(status);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2ModelExportConfigSetSource");
|
||||
status = Gna2ModelExportConfigSetTarget(exportConfig, Gna2DeviceVersionEmbedded1_0);
|
||||
GNADeviceHelper::checkGna2Status(status);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2ModelExportConfigSetTarget");
|
||||
|
||||
void * bufferSueCreekHeader;
|
||||
uint32_t bufferSueCreekHeaderSize;
|
||||
@ -32,7 +32,7 @@ void * ExportSueLegacyUsingGnaApi2(
|
||||
status = Gna2ModelExport(exportConfig,
|
||||
Gna2ModelExportComponentLegacySueCreekHeader,
|
||||
&bufferSueCreekHeader, &bufferSueCreekHeaderSize);
|
||||
GNADeviceHelper::checkGna2Status(status);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2ModelExport(LegacySueCreekHeader)");
|
||||
|
||||
(*modelHeader) = *(reinterpret_cast<Gna2ModelSueCreekHeader*>(bufferSueCreekHeader));
|
||||
|
||||
@ -42,10 +42,10 @@ void * ExportSueLegacyUsingGnaApi2(
|
||||
Gna2ModelExportComponentLegacySueCreekDump,
|
||||
&bufferDump,
|
||||
&bufferDumpSize);
|
||||
GNADeviceHelper::checkGna2Status(status);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2ModelExport(LegacySueCreekDump)");
|
||||
|
||||
status = Gna2ModelExportConfigRelease(exportConfig);
|
||||
GNADeviceHelper::checkGna2Status(status);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2ModelExportConfigRelease");
|
||||
|
||||
gnaUserFree(bufferSueCreekHeader);
|
||||
return bufferDump;
|
||||
@ -59,12 +59,12 @@ void ExportLdForDeviceVersion(
|
||||
|
||||
uint32_t exportConfig;
|
||||
auto status = Gna2ModelExportConfigCreate(gnaUserAllocatorAlignedPage, &exportConfig);
|
||||
GNADeviceHelper::checkGna2Status(status);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2ModelExportConfigCreate");
|
||||
|
||||
status = Gna2ModelExportConfigSetSource(exportConfig, 0, modelId);
|
||||
GNADeviceHelper::checkGna2Status(status);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2ModelExportConfigSetSource");
|
||||
status = Gna2ModelExportConfigSetTarget(exportConfig, deviceVersionToExport);
|
||||
GNADeviceHelper::checkGna2Status(status);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2ModelExportConfigSetTarget");
|
||||
|
||||
void * ldDump;
|
||||
uint32_t ldDumpSize;
|
||||
@ -72,12 +72,12 @@ void ExportLdForDeviceVersion(
|
||||
status = Gna2ModelExport(exportConfig,
|
||||
Gna2ModelExportComponentLayerDescriptors,
|
||||
&ldDump, &ldDumpSize);
|
||||
GNADeviceHelper::checkGna2Status(status);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2ModelExport(LayerDescriptors)");
|
||||
|
||||
outStream.write(static_cast<char*>(ldDump), ldDumpSize);
|
||||
|
||||
status = Gna2ModelExportConfigRelease(exportConfig);
|
||||
GNADeviceHelper::checkGna2Status(status);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2ModelExportConfigRelease");
|
||||
|
||||
gnaUserFree(ldDump);
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ uint8_t* GNADeviceHelper::alloc(uint32_t size_requested, uint32_t *size_granted)
|
||||
memPtr = GNAAlloc(nGNAHandle, size_requested, size_granted);
|
||||
#else
|
||||
const auto status = Gna2MemoryAlloc(size_requested, size_granted, &memPtr);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2MemoryAlloc");
|
||||
#endif
|
||||
if (memPtr == nullptr) {
|
||||
THROW_GNA_EXCEPTION << "GNAAlloc failed to allocate memory. Requested: " << size_requested << " Granted: " << *(size_granted);
|
||||
@ -48,7 +48,7 @@ void GNADeviceHelper::free(void * ptr) {
|
||||
GNAFree(nGNAHandle);
|
||||
#else
|
||||
const auto status = Gna2MemoryFree(ptr);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2MemoryFree");
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@ uint32_t GNADeviceHelper::propagate(const intel_nnet_type_t *pNeuralNetwork,
|
||||
|
||||
void GNADeviceHelper::setUpActiveList(const uint32_t requestConfigId, uint32_t layerIndex, uint32_t* ptr_active_indices, uint32_t num_active_indices) {
|
||||
const auto status = Gna2RequestConfigEnableActiveList(requestConfigId, layerIndex, num_active_indices, ptr_active_indices);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2RequestConfigEnableActiveList");
|
||||
}
|
||||
void GNADeviceHelper::propagateSync(const uint32_t requestConfigId, Gna2AccelerationMode gna2AccelerationMode) {
|
||||
wait(propagate(requestConfigId, gna2AccelerationMode));
|
||||
@ -81,9 +81,9 @@ uint32_t GNADeviceHelper::propagate(const uint32_t requestConfigId, Gna2Accelera
|
||||
gnawarn() << "GNA Device not detected, consider using other mode of acceleration";
|
||||
}
|
||||
const auto status1 = Gna2RequestConfigSetAccelerationMode(requestConfigId, gna2AccelerationMode);
|
||||
checkGna2Status(status1);
|
||||
checkGna2Status(status1, "Gna2RequestConfigSetAccelerationMode");
|
||||
const auto status2 = Gna2RequestEnqueue(requestConfigId, &reqId);
|
||||
checkGna2Status(status2);
|
||||
checkGna2Status(status2, "Gna2RequestEnqueue");
|
||||
|
||||
unwaitedRequestIds.push_back(reqId);
|
||||
|
||||
@ -114,20 +114,20 @@ uint32_t GNADeviceHelper::createModel(Gna2Model& gnaModel) const {
|
||||
|
||||
void GNADeviceHelper::releaseModel(const uint32_t model_id) {
|
||||
const auto status = Gna2ModelRelease(model_id);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2ModelRelease");
|
||||
}
|
||||
|
||||
uint32_t GNADeviceHelper::createRequestConfig(const uint32_t model_id) {
|
||||
uint32_t reqConfId;
|
||||
auto status = Gna2RequestConfigCreate(model_id, &reqConfId);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2RequestConfigCreate");
|
||||
if (gna2HwConsistency != Gna2DeviceVersionSoftwareEmulation) {
|
||||
status = Gna2RequestConfigEnableHardwareConsistency(reqConfId,
|
||||
isUpTo20GnaDevice() ? gna2HwConsistency : detectedGnaDevVersion);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2RequestConfigEnableHardwareConsistency");
|
||||
}
|
||||
status = Gna2InstrumentationConfigAssignToRequestConfig(instrumentationConfigId, reqConfId);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2InstrumentationConfigAssignToRequestConfig");
|
||||
|
||||
return reqConfId;
|
||||
}
|
||||
@ -136,7 +136,7 @@ uint32_t GNADeviceHelper::getNumberOfGnaDevices() {
|
||||
std::unique_lock<std::mutex> lockGnaCalls{ acrossPluginsSync };
|
||||
uint32_t numberOfGnaDevices = 0;
|
||||
auto status = Gna2DeviceGetCount(&numberOfGnaDevices);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2DeviceGetCount");
|
||||
return numberOfGnaDevices;
|
||||
}
|
||||
|
||||
@ -162,9 +162,7 @@ void GNADeviceHelper::checkGna2Status(Gna2Status status, const Gna2Model& gnaMod
|
||||
|
||||
Gna2ModelError error;
|
||||
auto getLastErrorStatus = Gna2ModelGetLastError(&error);
|
||||
if (!Gna2StatusIsSuccessful(getLastErrorStatus)) {
|
||||
THROW_GNA_EXCEPTION << "\nUnsuccessful Gna2Status: (" << status << ") " << gna2StatusBuffer.data();
|
||||
}
|
||||
checkGna2Status(getLastErrorStatus, "Gna2ModelGetLastError");
|
||||
|
||||
std::stringstream ss;
|
||||
ss << "\n GNA Library Error:\n";
|
||||
@ -203,18 +201,20 @@ void GNADeviceHelper::checkGna2Status(Gna2Status status, const Gna2Model& gnaMod
|
||||
}
|
||||
}
|
||||
|
||||
void GNADeviceHelper::checkGna2Status(Gna2Status status) {
|
||||
void GNADeviceHelper::checkGna2Status(Gna2Status status, const std::string& from) {
|
||||
if (!Gna2StatusIsSuccessful(status)) {
|
||||
std::vector<char> gna2StatusBuffer(1024);
|
||||
const auto prefix = "Unsuccessful " + from + " call, Gna2Status: (";
|
||||
const auto s = Gna2StatusGetMessage(status, gna2StatusBuffer.data(), gna2StatusBuffer.size());
|
||||
if (!Gna2StatusIsSuccessful(s))
|
||||
snprintf(gna2StatusBuffer.data(), gna2StatusBuffer.size(), "Gna2StatusGetMessage(%d) returned (%d)",
|
||||
static_cast<int>(status), static_cast<int>(s));
|
||||
std::string suffix;
|
||||
if (status == Gna2StatusDeviceIngoingCommunicationError ||
|
||||
status == Gna2StatusDeviceOutgoingCommunicationError) {
|
||||
THROW_GNA_EXCEPTION << "Unsuccessful Gna2Status: (" << status << ") " << gna2StatusBuffer.data() << ", consider updating the GNA driver";
|
||||
suffix = ", consider updating the GNA driver";
|
||||
}
|
||||
THROW_GNA_EXCEPTION << "Unsuccessful Gna2Status: (" << status << ") " << gna2StatusBuffer.data();
|
||||
THROW_GNA_EXCEPTION << prefix << status << ") " << gna2StatusBuffer.data() << suffix;
|
||||
}
|
||||
}
|
||||
|
||||
@ -316,7 +316,7 @@ GnaWaitStatus GNADeviceHelper::wait(uint32_t reqId, int64_t millisTimeout) {
|
||||
if (status == Gna2StatusWarningDeviceBusy) {
|
||||
return GNA_REQUEST_PENDING;
|
||||
}
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2RequestWait");
|
||||
unwaitedRequestIds.erase(std::remove(unwaitedRequestIds.begin(), unwaitedRequestIds.end(), reqId));
|
||||
#else
|
||||
if (isPerformanceMeasuring) {
|
||||
@ -404,9 +404,9 @@ void GNADeviceHelper::open(uint8_t n_threads) {
|
||||
checkStatus();
|
||||
#else
|
||||
auto status = Gna2DeviceGetVersion(nGnaDeviceIndex, &detectedGnaDevVersion);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2DeviceGetVersion");
|
||||
status = Gna2DeviceOpen(nGnaDeviceIndex);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2DeviceOpen");
|
||||
// TODO: GNA2: uncomment when scratchpad repaired
|
||||
// status = Gna2DeviceSetNumberOfThreads(nGnaDeviceIndex, n_threads);
|
||||
// checkGna2Status(status);
|
||||
@ -429,7 +429,7 @@ void GNADeviceHelper::close() {
|
||||
}
|
||||
}
|
||||
const auto status = Gna2DeviceClose(nGnaDeviceIndex);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2DeviceClose");
|
||||
#endif
|
||||
deviceOpened = false;
|
||||
}
|
||||
@ -440,7 +440,7 @@ void GNADeviceHelper::setOMPThreads(uint8_t const n_threads) {
|
||||
gmmSetThreads(n_threads);
|
||||
#else
|
||||
const auto status = Gna2DeviceSetNumberOfThreads(nGnaDeviceIndex, n_threads);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2DeviceSetNumberOfThreads");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,7 @@ public:
|
||||
bool isUpTo20GnaDevice() const {
|
||||
return detectedGnaDevVersion <= Gna2DeviceVersion2_0;
|
||||
}
|
||||
static void checkGna2Status(Gna2Status status);
|
||||
static void checkGna2Status(Gna2Status status, const std::string& from);
|
||||
static void checkGna2Status(Gna2Status status, const Gna2Model& gnaModel);
|
||||
#endif
|
||||
GnaWaitStatus wait(uint32_t id, int64_t millisTimeout = MAX_TIMEOUT);
|
||||
@ -187,7 +187,7 @@ public:
|
||||
gna2InstrumentationPoints,
|
||||
instrumentationResults,
|
||||
&instrumentationConfigId);
|
||||
checkGna2Status(status);
|
||||
checkGna2Status(status, "Gna2InstrumentationConfigCreate");
|
||||
#endif
|
||||
}
|
||||
}; // NOLINT
|
||||
|
Loading…
Reference in New Issue
Block a user