mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-29 00:58:39 +08:00
feature: adjust required engines count for aggregated split
Related-To: NEO-14557 Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
fa7d69209c
commit
8156c9d5aa
@@ -20,7 +20,7 @@ namespace L0 {
|
||||
|
||||
bool BcsSplit::setupDevice(uint32_t productFamily, bool internalUsage, const ze_command_queue_desc_t *desc, NEO::CommandStreamReceiver *csr) {
|
||||
auto &productHelper = this->device.getProductHelper();
|
||||
auto bcsSplitSettings = productHelper.getBcsSplitSettings();
|
||||
auto bcsSplitSettings = productHelper.getBcsSplitSettings(this->device.getHwInfo());
|
||||
|
||||
if (NEO::debugManager.flags.SplitBcsRequiredTileCount.get() != -1) {
|
||||
bcsSplitSettings.requiredTileCount = static_cast<uint32_t>(NEO::debugManager.flags.SplitBcsRequiredTileCount.get());
|
||||
@@ -70,6 +70,10 @@ bool BcsSplit::setupQueues(const NEO::BcsSplitSettings &settings, uint32_t produ
|
||||
csrs.push_back(engine->commandStreamReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
if (csrs.size() >= settings.minRequiredTotalCsrCount) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1090,6 +1090,19 @@ struct AggregatedBcsSplitTests : public ::testing::Test {
|
||||
uint32_t expectedNumRootDevices = 1;
|
||||
};
|
||||
|
||||
HWTEST2_F(AggregatedBcsSplitTests, givenLimitedEnginesCountWhenCreatingBcsSplitThenCreateCorrectQueues, IsAtLeastXeHpcCore) {
|
||||
expectedEnginesCount = 2;
|
||||
debugManager.flags.SplitBcsRequiredEnginesCount.set(expectedEnginesCount);
|
||||
|
||||
BcsSplit bcsSplit(static_cast<L0::DeviceImp &>(*device));
|
||||
|
||||
bcsSplit.setupDevice(device->getHwInfo().platform.eProductFamily, false, nullptr, cmdList->getCsr(false));
|
||||
|
||||
EXPECT_EQ(expectedEnginesCount, bcsSplit.cmdQs.size());
|
||||
|
||||
bcsSplit.releaseResources();
|
||||
}
|
||||
|
||||
HWTEST_F(AggregatedBcsSplitTests, givenTransferDirectionWhenAskingIfSplitIsNeededThenReturnCorrectValue) {
|
||||
debugManager.flags.SplitBcsTransferDirectionMask.set(-1);
|
||||
|
||||
|
||||
@@ -693,7 +693,7 @@ uint64_t Device::getProfilingTimerClock() {
|
||||
|
||||
bool Device::isBcsSplitSupported() {
|
||||
auto &productHelper = getProductHelper();
|
||||
auto bcsSplit = productHelper.getBcsSplitSettings().enabled && Device::isBlitSplitEnabled();
|
||||
auto bcsSplit = productHelper.getBcsSplitSettings(getHardwareInfo()).enabled && Device::isBlitSplitEnabled();
|
||||
|
||||
if (debugManager.flags.SplitBcsCopy.get() != -1) {
|
||||
bcsSplit = debugManager.flags.SplitBcsCopy.get();
|
||||
|
||||
@@ -156,7 +156,7 @@ class ProductHelper {
|
||||
virtual bool isTilePlacementResourceWaRequired(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool allowMemoryPrefetch(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isBcsReportWaRequired(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual BcsSplitSettings getBcsSplitSettings() const = 0;
|
||||
virtual BcsSplitSettings getBcsSplitSettings(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isBlitCopyRequiredForLocalMemory(const RootDeviceEnvironment &rootDeviceEnvironment, const GraphicsAllocation &allocation) const = 0;
|
||||
virtual bool isInitDeviceWithFirstSubmissionRequired(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isImplicitScalingSupported(const HardwareInfo &hwInfo) const = 0;
|
||||
|
||||
@@ -561,7 +561,7 @@ bool ProductHelperHw<gfxProduct>::isBcsReportWaRequired(const HardwareInfo &hwIn
|
||||
}
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
BcsSplitSettings ProductHelperHw<gfxProduct>::getBcsSplitSettings() const {
|
||||
BcsSplitSettings ProductHelperHw<gfxProduct>::getBcsSplitSettings(const HardwareInfo &hwInfo) const {
|
||||
return {};
|
||||
}
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ class ProductHelperHw : public ProductHelper {
|
||||
bool isCooperativeEngineSupported(const HardwareInfo &hwInfo) const override;
|
||||
bool isTimestampWaitSupportedForEvents() const override;
|
||||
bool isTilePlacementResourceWaRequired(const HardwareInfo &hwInfo) const override;
|
||||
BcsSplitSettings getBcsSplitSettings() const override;
|
||||
BcsSplitSettings getBcsSplitSettings(const HardwareInfo &hwInfo) const override;
|
||||
bool isInitDeviceWithFirstSubmissionRequired(const HardwareInfo &hwInfo) const override;
|
||||
bool allowMemoryPrefetch(const HardwareInfo &hwInfo) const override;
|
||||
bool isBcsReportWaRequired(const HardwareInfo &hwInfo) const override;
|
||||
|
||||
@@ -175,7 +175,7 @@ bool ProductHelperHw<gfxProduct>::isTlbFlushRequired() const {
|
||||
}
|
||||
|
||||
template <>
|
||||
BcsSplitSettings ProductHelperHw<gfxProduct>::getBcsSplitSettings() const {
|
||||
BcsSplitSettings ProductHelperHw<gfxProduct>::getBcsSplitSettings(const HardwareInfo &hwInfo) const {
|
||||
constexpr BcsInfoMask oddLinkedCopyEnginesMask = NEO::EngineHelpers::oddLinkedCopyEnginesMask;
|
||||
|
||||
return {
|
||||
|
||||
@@ -100,7 +100,7 @@ HWTEST_F(ProductHelperTest, givenProductHelperWhenGettingSharedSystemMemCapabili
|
||||
|
||||
HWTEST_F(ProductHelperTest, givenProductHelperWhenAskedIfIsBlitSplitEnqueueWARequiredThenReturnFalse) {
|
||||
|
||||
EXPECT_FALSE(productHelper->getBcsSplitSettings().enabled);
|
||||
EXPECT_FALSE(productHelper->getBcsSplitSettings(pInHwInfo).enabled);
|
||||
}
|
||||
|
||||
HWTEST_F(ProductHelperTest, givenProductHelperWhenGettingMemoryCapabilitiesThenCorrectValueIsReturned) {
|
||||
|
||||
@@ -96,7 +96,7 @@ PVCTEST_F(PvcProductHelperLinux, givenOsInterfaceIsNullWhenGetDeviceMemoryPhysic
|
||||
}
|
||||
|
||||
PVCTEST_F(PvcProductHelperLinux, givenProductHelperWhenAskedIsBlitSplitEnqueueWARequiredThenReturnTrue) {
|
||||
auto bcsSplitSettings = productHelper->getBcsSplitSettings();
|
||||
auto bcsSplitSettings = productHelper->getBcsSplitSettings(pInHwInfo);
|
||||
|
||||
EXPECT_TRUE(bcsSplitSettings.enabled);
|
||||
EXPECT_EQ(NEO::EngineHelpers::oddLinkedCopyEnginesMask, bcsSplitSettings.allEngines.to_ulong());
|
||||
|
||||
Reference in New Issue
Block a user