refactor: determine hp copy engine once after gfx core helper is created

- do not determine engine on every call to getDefaultHpCopyEngine()

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
Mateusz Hoppe
2024-09-09 15:31:19 +00:00
committed by Compute-Runtime-Automation
parent 712ca48cef
commit a6bf424417
4 changed files with 32 additions and 26 deletions

View File

@@ -166,6 +166,7 @@ void RootDeviceEnvironment::initHelpers() {
void RootDeviceEnvironment::initGfxCoreHelper() {
if (gfxCoreHelper == nullptr) {
gfxCoreHelper = GfxCoreHelper::create(this->getHardwareInfo()->platform.eRenderCoreFamily);
gfxCoreHelper->initializeDefaultHpCopyEngine(*this->getHardwareInfo());
}
}

View File

@@ -181,6 +181,7 @@ class GfxCoreHelper {
virtual uint32_t getContextGroupContextsCount() const = 0;
virtual uint32_t getContextGroupHpContextsCount(EngineGroupType type, bool hpEngineAvailable) const = 0;
virtual aub_stream::EngineType getDefaultHpCopyEngine(const HardwareInfo &hwInfo) const = 0;
virtual void initializeDefaultHpCopyEngine(const HardwareInfo &hwInfo) = 0;
virtual bool is48ResourceNeededForCmdBuffer() const = 0;
virtual uint32_t getKernelPrivateMemSize(const KernelDescriptor &kernelDescriptor) const = 0;
@@ -415,6 +416,7 @@ class GfxCoreHelperHw : public GfxCoreHelper {
uint32_t getContextGroupContextsCount() const override;
uint32_t getContextGroupHpContextsCount(EngineGroupType type, bool hpEngineAvailable) const override;
aub_stream::EngineType getDefaultHpCopyEngine(const HardwareInfo &hwInfo) const override;
void initializeDefaultHpCopyEngine(const HardwareInfo &hwInfo) override;
bool is48ResourceNeededForCmdBuffer() const override;
@@ -438,6 +440,8 @@ class GfxCoreHelperHw : public GfxCoreHelper {
~GfxCoreHelperHw() override = default;
protected:
aub_stream::EngineType hpCopyEngineType = aub_stream::EngineType::NUM_ENGINES;
static const AuxTranslationMode defaultAuxTranslationMode;
GfxCoreHelperHw() = default;
};

View File

@@ -741,8 +741,12 @@ uint32_t GfxCoreHelperHw<GfxFamily>::getContextGroupHpContextsCount(EngineGroupT
template <typename GfxFamily>
aub_stream::EngineType GfxCoreHelperHw<GfxFamily>::getDefaultHpCopyEngine(const HardwareInfo &hwInfo) const {
return hpCopyEngineType;
}
return aub_stream::EngineType::NUM_ENGINES;
template <typename GfxFamily>
void GfxCoreHelperHw<GfxFamily>::initializeDefaultHpCopyEngine(const HardwareInfo &hwInfo) {
hpCopyEngineType = aub_stream::EngineType::NUM_ENGINES;
}
template <typename GfxFamily>

View File

@@ -326,23 +326,22 @@ HWTEST2_F(EngineNodeHelperTestsXeHPAndLater, givenHpCopyEngineWhenSelectLinkCopy
DebugManagerStateRestore restore;
debugManager.flags.ContextGroupSize.set(8);
DeviceBitfield deviceBitfield = 0b1;
hardwareInfo.featureTable.ftrBcsInfo = 0b10010;
auto &rootDeviceEnvironment = pDevice->getRootDeviceEnvironment();
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
hwInfo.featureTable.ftrBcsInfo = 0b10010;
std::unique_ptr<Device> device(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hardwareInfo, rootDeviceIndex));
const auto &gfxCoreHelper = pDevice->getGfxCoreHelper();
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hwInfo);
const auto &gfxCoreHelper = device->getGfxCoreHelper();
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hardwareInfo);
if (hpEngine == aub_stream::EngineType::NUM_ENGINES) {
GTEST_SKIP();
}
auto &selectorCopyEngine = pDevice->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
auto &selectorCopyEngine = device->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
auto engineType = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
auto engineType = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
EXPECT_NE(hpEngine, engineType);
auto engineType2 = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
auto engineType2 = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
EXPECT_NE(hpEngine, engineType2);
}
@@ -351,25 +350,24 @@ HWTEST2_F(EngineNodeHelperTestsXeHPAndLater, givenHpCopyEngineAndBcs0And1And2Reg
debugManager.flags.ContextGroupSize.set(8);
DeviceBitfield deviceBitfield = 0b1;
auto &rootDeviceEnvironment = pDevice->getRootDeviceEnvironment();
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
hwInfo.featureTable.ftrBcsInfo = 0b10111;
hardwareInfo.featureTable.ftrBcsInfo = 0b10111;
std::unique_ptr<Device> device(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hardwareInfo, rootDeviceIndex));
const auto &gfxCoreHelper = pDevice->getGfxCoreHelper();
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hwInfo);
const auto &gfxCoreHelper = device->getGfxCoreHelper();
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hardwareInfo);
if (hpEngine == aub_stream::EngineType::NUM_ENGINES) {
GTEST_SKIP();
}
auto &selectorCopyEngine = pDevice->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
auto &selectorCopyEngine = device->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
auto engineType = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
auto engineType = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
EXPECT_NE(hpEngine, engineType);
auto engineType2 = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
auto engineType2 = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
EXPECT_NE(hpEngine, engineType2);
auto &productHelper = rootDeviceEnvironment.getProductHelper();
auto &productHelper = device->getRootDeviceEnvironment().getProductHelper();
if (aub_stream::ENGINE_BCS1 != productHelper.getDefaultCopyEngine()) {
EXPECT_NE(engineType, engineType2);
@@ -384,23 +382,22 @@ HWTEST2_F(EngineNodeHelperTestsXeHPAndLater, givenBcs2HpCopyEngineAndBcs0And1Reg
DebugManagerStateRestore restore;
debugManager.flags.ContextGroupSize.set(8);
DeviceBitfield deviceBitfield = 0b1;
hardwareInfo.featureTable.ftrBcsInfo = 0b00111;
auto &rootDeviceEnvironment = pDevice->getRootDeviceEnvironment();
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
hwInfo.featureTable.ftrBcsInfo = 0b00111;
std::unique_ptr<Device> device(MockDevice::createWithNewExecutionEnvironment<MockDevice>(&hardwareInfo, rootDeviceIndex));
const auto &gfxCoreHelper = pDevice->getGfxCoreHelper();
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hwInfo);
const auto &gfxCoreHelper = device->getGfxCoreHelper();
auto hpEngine = gfxCoreHelper.getDefaultHpCopyEngine(hardwareInfo);
if (hpEngine == aub_stream::EngineType::NUM_ENGINES) {
GTEST_SKIP();
}
auto &selectorCopyEngine = pDevice->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
auto &selectorCopyEngine = device->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
auto engineType = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
auto engineType = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
EXPECT_NE(hpEngine, engineType);
auto engineType2 = EngineHelpers::selectLinkCopyEngine(pDevice->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
auto engineType2 = EngineHelpers::selectLinkCopyEngine(device->getRootDeviceEnvironment(), deviceBitfield, selectorCopyEngine.selector);
EXPECT_NE(hpEngine, engineType2);
EXPECT_EQ(engineType, engineType2);