mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 23:03:02 +08:00
Disable EUFusion for odd work groups with DPAS on DG2
Related-To: NEO-7495, HSD-14017007475 Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
ac63175a0f
commit
017d66a469
@@ -1459,3 +1459,7 @@ HWTEST_F(ProductHelperCommonTest, givenPatIndexAndAllocationTypeWhenCallOverride
|
||||
patIndex = 3u;
|
||||
EXPECT_EQ(patIndex, gfxCoreHelper.overridePatIndex(allocationType, patIndex));
|
||||
}
|
||||
HWTEST_F(ProductHelperCommonTest, givenHwHelperWhenIsFusedEuDisabledForDpasCalledThenFalseReturned) {
|
||||
auto &gfxCoreHelper = getHelper<ProductHelper>();
|
||||
EXPECT_FALSE(gfxCoreHelper.isFusedEuDisabledForDpas(true, nullptr, nullptr));
|
||||
}
|
||||
@@ -33,3 +33,4 @@ HWTEST_EXCLUDE_PRODUCT(XeHpgSbaTest, givenSpecificProductFamilyWhenAppendingSbaT
|
||||
HWTEST_EXCLUDE_PRODUCT(GfxCoreHelperTest, GivenZeroSlmSizeWhenComputeSlmSizeIsCalledThenCorrectValueIsReturned, IGFX_DG2);
|
||||
HWTEST_EXCLUDE_PRODUCT(ProductHelperTestXeHpgCore, givenProductHelperWhenCheckTimestampWaitSupportForEventsThenReturnFalse, IGFX_DG2);
|
||||
HWTEST_EXCLUDE_PRODUCT(CommandEncodeStatesTestDg2AndLater, GivenVariousSlmTotalSizesAndSettingRevIDToDifferentValuesWhenSetAdditionalInfoIsCalledThenCorrectValuesAreSet_IsXeHpgCore, IGFX_DG2);
|
||||
HWTEST_EXCLUDE_PRODUCT(ProductHelperCommonTest, givenHwHelperWhenIsFusedEuDisabledForDpasCalledThenFalseReturned, IGFX_DG2);
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
*/
|
||||
|
||||
#include "shared/source/helpers/product_config_helper.h"
|
||||
#include "shared/source/os_interface/hw_info_config.h"
|
||||
#include "shared/source/xe_hpg_core/hw_cmds_dg2.h"
|
||||
#include "shared/test/common/fixtures/device_fixture.h"
|
||||
#include "shared/test/common/test_macros/header/per_product_test_definitions.h"
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
|
||||
@@ -14,6 +16,7 @@
|
||||
|
||||
using namespace NEO;
|
||||
using ProductConfigHelperDg2Tests = ::testing::Test;
|
||||
using ProductHelperTests = Test<DeviceFixture>;
|
||||
|
||||
DG2TEST_F(ProductConfigHelperDg2Tests, givenVariousVariantsOfXeHpgAcronymsWhenGetReleaseThenCorrectValueIsReturned) {
|
||||
std::vector<std::string> acronymsVariants = {"xe_hpg_core", "xe_hpg", "xehpg", "XeHpg"};
|
||||
@@ -29,3 +32,55 @@ DG2TEST_F(ProductConfigHelperDg2Tests, givenXeHpgReleaseWhenSearchForDeviceAcron
|
||||
auto aotInfos = productConfigHelper->getDeviceAotInfo();
|
||||
EXPECT_TRUE(std::any_of(aotInfos.begin(), aotInfos.end(), ProductConfigHelper::findDeviceAcronymForRelease(AOT::XE_HPG_RELEASE)));
|
||||
}
|
||||
DG2TEST_F(ProductHelperTests, givenNoDpasInstructionInKernelHelperWhenCheckingIfEuFusionShouldBeDisabledThenFalseReturned) {
|
||||
auto &gfxCoreHelper = getHelper<ProductHelper>();
|
||||
const uint32_t lws[3] = {1, 1, 1};
|
||||
const uint32_t groupCount[3] = {5, 3, 1};
|
||||
bool dpasInstruction = false;
|
||||
EXPECT_FALSE(gfxCoreHelper.isFusedEuDisabledForDpas(dpasInstruction, lws, groupCount));
|
||||
}
|
||||
DG2TEST_F(ProductHelperTests, givenDpasInstructionLwsAndGroupCountIsNullPtrInKernelHelperWhenCheckingIfEuFusionShouldBeDisabledThenTrueReturned) {
|
||||
auto &gfxCoreHelper = getHelper<ProductHelper>();
|
||||
bool dpasInstruction = true;
|
||||
EXPECT_TRUE(gfxCoreHelper.isFusedEuDisabledForDpas(dpasInstruction, nullptr, nullptr));
|
||||
}
|
||||
DG2TEST_F(ProductHelperTests, givenDpasInstructionLwsIsNullPtrInKernelHelperWhenCheckingIfEuFusionShouldBeDisabledThenTrueReturned) {
|
||||
auto &gfxCoreHelper = getHelper<ProductHelper>();
|
||||
bool dpasInstruction = true;
|
||||
const uint32_t groupCount[3] = {5, 3, 1};
|
||||
EXPECT_TRUE(gfxCoreHelper.isFusedEuDisabledForDpas(dpasInstruction, nullptr, groupCount));
|
||||
}
|
||||
DG2TEST_F(ProductHelperTests, givenDpasInstructionGroupCountIsNullPtrInKernelHelperWhenCheckingIfEuFusionShouldBeDisabledThenTrueReturned) {
|
||||
auto &gfxCoreHelper = getHelper<ProductHelper>();
|
||||
bool dpasInstruction = true;
|
||||
const uint32_t lws[3] = {1, 1, 1};
|
||||
EXPECT_TRUE(gfxCoreHelper.isFusedEuDisabledForDpas(dpasInstruction, lws, nullptr));
|
||||
}
|
||||
DG2TEST_F(ProductHelperTests, givenDpasInstructionLwsAndLwsIsOddWhenCheckingIfEuFusionShouldBeDisabledThenTrueReturned) {
|
||||
auto &gfxCoreHelper = getHelper<ProductHelper>();
|
||||
const uint32_t lws[3] = {7, 3, 1};
|
||||
const uint32_t groupCount[3] = {2, 1, 1};
|
||||
bool dpasInstruction = true;
|
||||
EXPECT_TRUE(gfxCoreHelper.isFusedEuDisabledForDpas(dpasInstruction, lws, groupCount));
|
||||
}
|
||||
DG2TEST_F(ProductHelperTests, givenDpasInstructionLwsAndLwsIsNoOddWhenCheckingIfEuFusionShouldBeDisabledThenFalseReturned) {
|
||||
auto &gfxCoreHelper = getHelper<ProductHelper>();
|
||||
const uint32_t lws[3] = {8, 3, 1};
|
||||
const uint32_t groupCount[3] = {2, 1, 1};
|
||||
bool dpasInstruction = true;
|
||||
EXPECT_FALSE(gfxCoreHelper.isFusedEuDisabledForDpas(dpasInstruction, lws, groupCount));
|
||||
}
|
||||
DG2TEST_F(ProductHelperTests, givenDpasInstructionLwsAndLwsIsOneAndXGroupCountIsOddWhenCheckingIfEuFusionShouldBeDisabledThenFalseReturned) {
|
||||
auto &gfxCoreHelper = getHelper<ProductHelper>();
|
||||
const uint32_t lws[3] = {1, 1, 1};
|
||||
const uint32_t groupCount[3] = {5, 1, 1};
|
||||
bool dpasInstruction = true;
|
||||
EXPECT_TRUE(gfxCoreHelper.isFusedEuDisabledForDpas(dpasInstruction, lws, groupCount));
|
||||
}
|
||||
DG2TEST_F(ProductHelperTests, givenDpasInstructionLwsAndLwsIsOneAndXGroupCountIsNoOddWhenCheckingIfEuFusionShouldBeDisabledThenFalseReturned) {
|
||||
auto &gfxCoreHelper = getHelper<ProductHelper>();
|
||||
const uint32_t lws[3] = {1, 1, 1};
|
||||
const uint32_t groupCount[3] = {4, 1, 1};
|
||||
bool dpasInstruction = true;
|
||||
EXPECT_FALSE(gfxCoreHelper.isFusedEuDisabledForDpas(dpasInstruction, lws, groupCount));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user