[GNA] Plugin transition to the library v3.0 (#7241)
* GNA Plugin transition to the library v3.0 * Remove Gna2RequestConfigEnableHardwareConsistency calls Co-authored-by: Krzysztof Bruniecki <krzysztof.bruniecki@intel.com>
This commit is contained in:
committed by
GitHub
parent
0702b44174
commit
1a656f4e44
@@ -261,8 +261,8 @@ if (ENABLE_GNA)
|
||||
set(GNA_HASH "cc954e67525006bf8bd353a6682e38bf208f6d74e973e0fc292850e721f17452")
|
||||
endif()
|
||||
if(GNA_LIBRARY_VERSION STREQUAL "GNA2")
|
||||
set(GNA_VERSION "02.00.00.1226")
|
||||
set(GNA_HASH "d5450af15c993e264c25ac4591a7dab44722e10d15fca4f222a1b84429d4e5b6")
|
||||
set(GNA_VERSION "03.00.00.1377")
|
||||
set(GNA_HASH "d45fb48994d8c2803a16e88e29ae48851066325b97c1c6c4a5bf4f4573d55c65")
|
||||
endif()
|
||||
|
||||
set(FILES_TO_EXTRACT_LIST gna_${GNA_VERSION}/include)
|
||||
|
||||
@@ -173,10 +173,6 @@ bool GNADeviceHelper::enforceLegacyCnnNeeded() const {
|
||||
return (isGnaLibVersion3_0 || isGnaLibVersion2_1) && isUpTo20HwGnaDevice(compileTargetDevice);
|
||||
}
|
||||
|
||||
namespace {
|
||||
const volatile auto Gna2DeviceVersion3_0 = static_cast<Gna2DeviceVersion>(0x30);
|
||||
} // namespace
|
||||
|
||||
Gna2DeviceVersion GNADeviceHelper::parseDeclaredTarget(std::string target, const bool execTarget) const {
|
||||
auto parsed = Gna2DeviceVersion2_0;
|
||||
auto throwUnsupportedGnaTarget = [&](std::string extraSuffix) {
|
||||
@@ -213,14 +209,6 @@ uint32_t GNADeviceHelper::createRequestConfig(const uint32_t model_id) {
|
||||
auto status = Gna2RequestConfigCreate(model_id, &reqConfId);
|
||||
checkGna2Status(status, "Gna2RequestConfigCreate");
|
||||
|
||||
// When the GNA_SW_EXACT mode is chosen inference results should be computed exactly the same way
|
||||
// (bit exactly) as on the selected GNA execution target generation.
|
||||
// See the GNA Plugin's GNA_EXEC_TARGET config option description.
|
||||
if (swExactMode) {
|
||||
const auto consistentDevice = getTargetDevice(true);
|
||||
status = Gna2RequestConfigEnableHardwareConsistency(reqConfId, consistentDevice);
|
||||
checkGna2Status(status, "Gna2RequestConfigEnableHardwareConsistency(" + std::to_string(static_cast<long>(consistentDevice)) + ")");
|
||||
}
|
||||
status = Gna2InstrumentationConfigAssignToRequestConfig(instrumentationConfigId, reqConfId);
|
||||
checkGna2Status(status, "Gna2InstrumentationConfigAssignToRequestConfig");
|
||||
|
||||
@@ -507,8 +495,14 @@ void GNADeviceHelper::open(uint8_t n_threads) {
|
||||
auto status = Gna2DeviceGetVersion(nGnaDeviceIndex, &detectedGnaDevVersion);
|
||||
checkGna2Status(status, "Gna2DeviceGetVersion");
|
||||
|
||||
status = Gna2DeviceOpen(nGnaDeviceIndex);
|
||||
checkGna2Status(status, "Gna2DeviceOpen");
|
||||
if (useDeviceEmbeddedExport) {
|
||||
status = Gna2DeviceCreateForExport(exportGeneration, &nGnaDeviceIndex);
|
||||
GNADeviceHelper::checkGna2Status(status, "Gna2DeviceCreateForExport");
|
||||
} else {
|
||||
status = Gna2DeviceOpen(nGnaDeviceIndex);
|
||||
checkGna2Status(status, "Gna2DeviceOpen");
|
||||
}
|
||||
|
||||
// TODO: GNA2: uncomment when scratchpad repaired
|
||||
// status = Gna2DeviceSetNumberOfThreads(nGnaDeviceIndex, n_threads);
|
||||
// checkGna2Status(status);
|
||||
|
||||
@@ -55,6 +55,8 @@ class GNADeviceHelper {
|
||||
Gna2DeviceVersion detectedGnaDevVersion = Gna2DeviceVersionSoftwareEmulation;
|
||||
std::string executionTarget;
|
||||
std::string compileTarget;
|
||||
bool useDeviceEmbeddedExport = false;
|
||||
Gna2DeviceVersion exportGeneration = Gna2DeviceVersionEmbedded1_0;
|
||||
bool isGnaLibVersion2_1 = false;
|
||||
bool isGnaLibVersion3_0 = false;
|
||||
|
||||
@@ -83,12 +85,16 @@ public:
|
||||
bool swExactModeIn = false,
|
||||
uint8_t lib_async_n_threads = 1,
|
||||
bool use_openmp = false,
|
||||
bool isPerformanceMeasuring = false) :
|
||||
bool isPerformanceMeasuring = false,
|
||||
bool deviceEmbedded = false,
|
||||
int deviceVersionParsed = 0) :
|
||||
swExactMode(swExactModeIn),
|
||||
executionTarget(executionTargetIn),
|
||||
compileTarget(compileTargetIn),
|
||||
isPerformanceMeasuring(isPerformanceMeasuring),
|
||||
nGnaDeviceIndex{selectGnaDevice()} {
|
||||
nGnaDeviceIndex{selectGnaDevice()},
|
||||
useDeviceEmbeddedExport(deviceEmbedded),
|
||||
exportGeneration(static_cast<Gna2DeviceVersion>(deviceVersionParsed)) {
|
||||
#endif
|
||||
open(lib_async_n_threads);
|
||||
initGnaPerfCounters();
|
||||
|
||||
@@ -412,7 +412,9 @@ void GNAPlugin::InitGNADevice() {
|
||||
config.swExactMode,
|
||||
gnaFlags->gna_lib_async_threads_num,
|
||||
gnaFlags->gna_openmp_multithreading,
|
||||
gnaFlags->performance_counting);
|
||||
gnaFlags->performance_counting,
|
||||
!config.dumpXNNPath.empty(),
|
||||
GetDeviceVersionFromString(config.dumpXNNGeneration));
|
||||
#endif
|
||||
size_t page_size_bytes = 4096;
|
||||
gnamem = std::make_shared<gna_memory_type>(memory::make_polymorph<memory::GNAAllocator>(gnadevice), page_size_bytes);
|
||||
|
||||
@@ -45,6 +45,12 @@ GNA2_API enum Gna2Status Gna2MemoryAlloc(
|
||||
return Gna2StatusSuccess;
|
||||
}
|
||||
|
||||
GNA2_API enum Gna2Status Gna2DeviceCreateForExport(
|
||||
Gna2DeviceVersion targetDeviceVersion,
|
||||
uint32_t * deviceIndex) {
|
||||
*deviceIndex = 1;
|
||||
return Gna2StatusSuccess;
|
||||
}
|
||||
GNA2_API enum Gna2Status Gna2DeviceOpen(
|
||||
uint32_t deviceIndex) {
|
||||
return Gna2StatusSuccess;
|
||||
@@ -109,12 +115,6 @@ GNA2_API enum Gna2Status Gna2RequestConfigEnableActiveList(
|
||||
return Gna2StatusSuccess;
|
||||
}
|
||||
|
||||
GNA2_API enum Gna2Status Gna2RequestConfigEnableHardwareConsistency(
|
||||
uint32_t requestConfigId,
|
||||
enum Gna2DeviceVersion deviceVersion) {
|
||||
return Gna2StatusSuccess;
|
||||
}
|
||||
|
||||
GNA2_API enum Gna2Status Gna2RequestConfigSetAccelerationMode(
|
||||
uint32_t requestConfigId,
|
||||
enum Gna2AccelerationMode accelerationMode) {
|
||||
|
||||
@@ -44,6 +44,13 @@ GNA2_API enum Gna2Status Gna2MemoryAlloc(
|
||||
return Gna2StatusSuccess;
|
||||
}
|
||||
|
||||
GNA2_API enum Gna2Status Gna2DeviceCreateForExport(
|
||||
Gna2DeviceVersion targetDeviceVersion,
|
||||
uint32_t * deviceIndex) {
|
||||
*deviceIndex = 1;
|
||||
return Gna2StatusSuccess;
|
||||
}
|
||||
|
||||
GNA2_API enum Gna2Status Gna2DeviceOpen(
|
||||
uint32_t deviceIndex) {
|
||||
if (current != nullptr) {
|
||||
@@ -139,15 +146,6 @@ GNA2_API enum Gna2Status Gna2RequestConfigEnableActiveList(
|
||||
return Gna2StatusSuccess;
|
||||
}
|
||||
|
||||
GNA2_API enum Gna2Status Gna2RequestConfigEnableHardwareConsistency(
|
||||
uint32_t requestConfigId,
|
||||
enum Gna2DeviceVersion deviceVersion) {
|
||||
if (current != nullptr) {
|
||||
return current->Gna2RequestConfigEnableHardwareConsistency(requestConfigId, deviceVersion);
|
||||
}
|
||||
return Gna2StatusSuccess;
|
||||
}
|
||||
|
||||
GNA2_API enum Gna2Status Gna2RequestConfigSetAccelerationMode(
|
||||
uint32_t requestConfigId,
|
||||
enum Gna2AccelerationMode accelerationMode) {
|
||||
|
||||
@@ -66,7 +66,7 @@ public:
|
||||
}
|
||||
};
|
||||
#if GNA_LIB_VER == 2
|
||||
void expect_enqueue_calls(GNACppApi &mockApi, bool enableHardwareConsistency = true){
|
||||
void expect_enqueue_calls(GNACppApi &mockApi){
|
||||
EXPECT_CALL(mockApi, Gna2ModelCreate(_,_,_)).Times(AtLeast(1)).WillRepeatedly(Invoke([](
|
||||
uint32_t deviceIndex,
|
||||
struct Gna2Model const * model,
|
||||
@@ -82,10 +82,6 @@ void expect_enqueue_calls(GNACppApi &mockApi, bool enableHardwareConsistency = t
|
||||
return Gna2StatusSuccess;
|
||||
}));
|
||||
|
||||
if (enableHardwareConsistency) {
|
||||
EXPECT_CALL(mockApi, Gna2RequestConfigEnableHardwareConsistency(_,_)).Times(AtLeast(1)).WillRepeatedly(Return(Gna2StatusSuccess));
|
||||
}
|
||||
|
||||
EXPECT_CALL(mockApi, Gna2RequestConfigSetAccelerationMode(_,_)).Times(AtLeast(1)).WillRepeatedly(Return(Gna2StatusSuccess));
|
||||
|
||||
EXPECT_CALL(mockApi, Gna2InstrumentationConfigAssignToRequestConfig(_,_)).Times(AtLeast(1)).WillRepeatedly(Return(Gna2StatusSuccess));
|
||||
@@ -353,11 +349,7 @@ void GNAPropagateMatcher :: match() {
|
||||
EXPECT_CALL(mockApi, GNAPropagateForward(_, _, _, _, _, Eq(_env.proc_type)))
|
||||
.WillOnce(Return(GNA_NOERROR));
|
||||
#elif GNA_LIB_VER == 2
|
||||
if(_env.proc_type == (GNA_SOFTWARE & GNA_HARDWARE)) {
|
||||
expect_enqueue_calls(mockApi);
|
||||
} else {
|
||||
expect_enqueue_calls(mockApi, false);
|
||||
}
|
||||
expect_enqueue_calls(mockApi);
|
||||
#endif
|
||||
break;
|
||||
case GnaPluginTestEnvironment::matchPwlInserted :
|
||||
@@ -575,8 +567,6 @@ void GNAPluginAOTMatcher :: match() {
|
||||
return Gna2StatusSuccess;
|
||||
}));
|
||||
|
||||
EXPECT_CALL(mockApi, Gna2RequestConfigEnableHardwareConsistency(_,_)).Times(AtLeast(1)).WillRepeatedly(Return(Gna2StatusSuccess));
|
||||
|
||||
EXPECT_CALL(mockApi, Gna2InstrumentationConfigAssignToRequestConfig(_,_)).Times(AtLeast(1)).WillRepeatedly(Return(Gna2StatusSuccess));
|
||||
#else
|
||||
#error "Not supported GNA_LIB_VER"
|
||||
@@ -704,8 +694,6 @@ void GNADumpXNNMatcher::match() {
|
||||
|
||||
ON_CALL(mockApi, Gna2RequestConfigSetAccelerationMode(_,_)).WillByDefault(Return(Gna2StatusSuccess));
|
||||
|
||||
ON_CALL(mockApi, Gna2RequestConfigEnableHardwareConsistency(_,_)).WillByDefault(Return(Gna2StatusSuccess));
|
||||
|
||||
ON_CALL(mockApi, Gna2InstrumentationConfigAssignToRequestConfig(_,_)).WillByDefault(Return(Gna2StatusSuccess));
|
||||
}
|
||||
#else
|
||||
@@ -809,8 +797,6 @@ void GNAQueryStateMatcher :: match() {
|
||||
return Gna2StatusSuccess;
|
||||
}));
|
||||
|
||||
EXPECT_CALL(mockApi, Gna2RequestConfigEnableHardwareConsistency(_,_)).Times(AtLeast(1)).WillRepeatedly(Return(Gna2StatusSuccess));
|
||||
|
||||
EXPECT_CALL(mockApi, Gna2InstrumentationConfigAssignToRequestConfig(_,_)).Times(AtLeast(1)).WillRepeatedly(Return(Gna2StatusSuccess));
|
||||
#endif
|
||||
IE_SUPPRESS_DEPRECATED_START
|
||||
|
||||
Reference in New Issue
Block a user