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