checkGna2Status(status1);
const auto status2 = Gna2RequestEnqueue(requestConfigId, &reqId);
checkGna2Status(status2);
+
+ unwaitedRequestIds.push_back(reqId);
+
return reqId;
}
return false;
}
checkGna2Status(status);
+ unwaitedRequestIds.erase(std::remove(unwaitedRequestIds.begin(), unwaitedRequestIds.end(), reqId));
#else
if (isPerformanceMeasuring) {
nGNAStatus = GNAWaitPerfRes(nGNAHandle, millisTimeout, reqId, &nGNAPerfResults);
GNADeviceClose(nGNAHandle);
nGNAHandle = 0;
#else
+ auto requestsToClose = unwaitedRequestIds;
+ for (auto requestId : requestsToClose) {
+ try {
+ wait(requestId);
+ } catch (...) {
+ gnawarn() << "Request with Id " << requestId << " was not awaited successfully";
+ }
+ }
const auto status = Gna2DeviceClose(nGnaDeviceIndex);
checkGna2Status(status);
#endif
#include <memory>
#include <string>
#include <map>
+#include <vector>
#include <thread>
#include <ie_common.h>
uint64_t instrumentationResults[TotalGna2InstrumentationPoints] = {};
uint64_t instrumentationTotal[TotalGna2InstrumentationPoints] = {};
uint32_t instrumentationConfigId = 0;
-
+ std::vector<uint32_t> unwaitedRequestIds;
#define MAX_TIMEOUT 500000
#endif
bool isPerformanceMeasuring = false;