feature: Enable support for cl_intel_subgroup_2d_block_io

This change enables support for cl_intel_subgroup_2d_block_io extension for
PVC and later.

Related-To: GSD-7825
Signed-off-by: Ratajewski, Andrzej <andrzej.ratajewski@intel.com>
This commit is contained in:
Ratajewski, Andrzej
2024-05-10 12:38:23 +02:00
committed by Compute-Runtime-Automation
parent 014720fc29
commit 0b0f7bd4cd
6 changed files with 30 additions and 2 deletions

View File

@@ -64,6 +64,7 @@ class CompilerProductHelper {
virtual bool isCreateBufferWithPropertiesSupported() const = 0;
virtual bool isSubgroupNamedBarrierSupported() const = 0;
virtual bool isSubgroupExtendedBlockReadSupported() const = 0;
virtual bool isSubgroup2DBlockIOSupported() const = 0;
virtual bool isForceToStatelessRequired() const = 0;
virtual bool failBuildProgramWithStatefulAccessPreference() const = 0;
virtual bool isDotIntegerProductExtensionSupported() const = 0;
@@ -111,6 +112,7 @@ class CompilerProductHelperHw : public CompilerProductHelper {
bool isCreateBufferWithPropertiesSupported() const override;
bool isSubgroupNamedBarrierSupported() const override;
bool isSubgroupExtendedBlockReadSupported() const override;
bool isSubgroup2DBlockIOSupported() const override;
bool isForceToStatelessRequired() const override;
bool failBuildProgramWithStatefulAccessPreference() const override;
bool isDotIntegerProductExtensionSupported() const override;

View File

@@ -192,6 +192,9 @@ std::string CompilerProductHelperHw<gfxProduct>::getDeviceExtensions(const Hardw
if (isSubgroupExtendedBlockReadSupported()) {
extensions += "cl_intel_subgroup_extended_block_read ";
}
if (isSubgroup2DBlockIOSupported()) {
extensions += "cl_intel_subgroup_2d_block_io ";
}
if (isDotIntegerProductExtensionSupported()) {
extensions += "cl_khr_integer_dot_product ";
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2022-2023 Intel Corporation
* Copyright (C) 2022-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -26,4 +26,9 @@ bool CompilerProductHelperHw<gfxProduct>::isSubgroupExtendedBlockReadSupported()
return false;
}
template <PRODUCT_FAMILY gfxProduct>
bool CompilerProductHelperHw<gfxProduct>::isSubgroup2DBlockIOSupported() const {
return false;
}
} // namespace NEO

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2022-2023 Intel Corporation
* Copyright (C) 2022-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -30,4 +30,9 @@ bool CompilerProductHelperHw<gfxProduct>::isSubgroupExtendedBlockReadSupported()
return true;
}
template <PRODUCT_FAMILY gfxProduct>
bool CompilerProductHelperHw<gfxProduct>::isSubgroup2DBlockIOSupported() const {
return true;
}
} // namespace NEO

View File

@@ -114,6 +114,18 @@ HWTEST2_F(CompilerProductHelperFixture, GivenPreXeHpcThenSubgroupExtendedBlockRe
EXPECT_FALSE(compilerProductHelper.isSubgroupExtendedBlockReadSupported());
}
HWTEST2_F(CompilerProductHelperFixture, GivenXeHpcAndLaterThenSubgroup2DBlockIOIsSupported, IsAtLeastXeHpcCore) {
auto &compilerProductHelper = pDevice->getCompilerProductHelper();
EXPECT_TRUE(compilerProductHelper.isSubgroup2DBlockIOSupported());
}
HWTEST2_F(CompilerProductHelperFixture, GivenPreXeHpcThenSubgroup2DBlockIOIsNotSupported, IsAtMostXeHpgCore) {
auto &compilerProductHelper = pDevice->getCompilerProductHelper();
EXPECT_FALSE(compilerProductHelper.isSubgroup2DBlockIOSupported());
}
HWTEST2_F(CompilerProductHelperFixture, GivenCompilerProductHelperThenBFloat16ConversionIsSupportedBasedOnReleaseHelper, IsNotXeHpcCore) {
auto &compilerProductHelper = pDevice->getCompilerProductHelper();
auto releaseHelper = pDevice->getReleaseHelper();