Add isMatrixMultiplyAccumulateSupported query to HwInfoConfig
Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
parent
b821027ddf
commit
d7420f1786
|
@ -228,7 +228,7 @@ void ClDevice::initializeCaps() {
|
|||
deviceExtensions += "cl_khr_pci_bus_info ";
|
||||
}
|
||||
|
||||
deviceExtensions += hwHelper.getExtensions();
|
||||
deviceExtensions += hwHelper.getExtensions(hwInfo);
|
||||
deviceInfo.deviceExtensions = deviceExtensions.c_str();
|
||||
|
||||
std::vector<std::string> exposedBuiltinKernelsVector;
|
||||
|
|
|
@ -9,8 +9,10 @@
|
|||
#include "shared/source/os_interface/hw_info_config.h"
|
||||
#include "shared/test/common/helpers/hw_helper_tests.h"
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
|
||||
#include "opencl/test/unit_test/fixtures/cl_device_fixture.h"
|
||||
#include "opencl/test/unit_test/mocks/ult_cl_device_factory.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
|
@ -75,3 +77,13 @@ DG2TEST_F(Dg2UsDeviceIdTest, givenRevisionEnumThenProperMaxThreadsForWorkgroupIs
|
|||
uint32_t numThreadsPerEU = hardwareInfo.gtSystemInfo.ThreadCount / hardwareInfo.gtSystemInfo.EUCount;
|
||||
EXPECT_EQ(64u * numThreadsPerEU, hwInfoConfig.getMaxThreadsForWorkgroupInDSSOrSS(hardwareInfo, 64u, 64u));
|
||||
}
|
||||
|
||||
using Dg2DeviceCapsTest = ::testing::Test;
|
||||
DG2TEST_F(Dg2DeviceCapsTest, whenCheckingExtensionThenCorrectExtensionsAreReported) {
|
||||
UltClDeviceFactory deviceFactory{1, 0};
|
||||
auto &extensions = deviceFactory.rootDevices[0]->deviceExtensions;
|
||||
|
||||
EXPECT_TRUE(hasSubstr(extensions, std::string("cl_intel_bfloat16_conversions")));
|
||||
EXPECT_TRUE(hasSubstr(extensions, std::string("cl_intel_subgroup_matrix_multiply_accumulate")));
|
||||
EXPECT_TRUE(hasSubstr(extensions, std::string("cl_intel_subgroup_split_matrix_multiply_accumulate")));
|
||||
}
|
||||
|
|
|
@ -44,8 +44,10 @@ XE_HPG_CORETEST_F(XeHpgCoreDeviceCaps, giveDeviceExtensionsWhenDeviceCapsInitial
|
|||
EXPECT_TRUE(hasSubstr(caps.deviceExtensions, std::string("cl_intel_create_buffer_with_properties")));
|
||||
EXPECT_TRUE(hasSubstr(caps.deviceExtensions, std::string("cl_intel_dot_accumulate")));
|
||||
EXPECT_TRUE(hasSubstr(caps.deviceExtensions, std::string("cl_intel_subgroup_local_block_io")));
|
||||
EXPECT_TRUE(hasSubstr(caps.deviceExtensions, std::string("cl_intel_subgroup_matrix_multiply_accumulate")));
|
||||
EXPECT_TRUE(hasSubstr(caps.deviceExtensions, std::string("cl_intel_subgroup_split_matrix_multiply_accumulate")));
|
||||
|
||||
bool expectMatrixMultiplyAccumulateExtensions = hwInfoConfig.isMatrixMultiplyAccumulateSupported(pClDevice->getHardwareInfo());
|
||||
EXPECT_EQ(expectMatrixMultiplyAccumulateExtensions, hasSubstr(caps.deviceExtensions, std::string("cl_intel_subgroup_matrix_multiply_accumulate")));
|
||||
EXPECT_EQ(expectMatrixMultiplyAccumulateExtensions, hasSubstr(caps.deviceExtensions, std::string("cl_intel_subgroup_split_matrix_multiply_accumulate")));
|
||||
|
||||
bool expectBFloat16ConversionsExtension = hwInfoConfig.isBFloat16ConversionSupported(pClDevice->getHardwareInfo());
|
||||
EXPECT_EQ(expectBFloat16ConversionsExtension, hasSubstr(caps.deviceExtensions, std::string("cl_intel_bfloat16_conversions")));
|
||||
|
|
|
@ -21,7 +21,7 @@ uint32_t HwHelperHw<Family>::getComputeUnitsUsedForScratch(const HardwareInfo *p
|
|||
}
|
||||
|
||||
template <>
|
||||
std::string HwHelperHw<Family>::getExtensions() const {
|
||||
std::string HwHelperHw<Family>::getExtensions(const HardwareInfo &hwInfo) const {
|
||||
return "cl_intel_subgroup_local_block_io ";
|
||||
}
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@ EngineGroupType HwHelperHw<Family>::getEngineGroupType(aub_stream::EngineType en
|
|||
}
|
||||
|
||||
template <>
|
||||
std::string HwHelperHw<Family>::getExtensions() const {
|
||||
std::string HwHelperHw<Family>::getExtensions(const HardwareInfo &hwInfo) const {
|
||||
std::string extensions;
|
||||
extensions += "cl_intel_subgroup_local_block_io ";
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ class HwHelper {
|
|||
virtual const StackVec<size_t, 3> getDeviceSubGroupSizes() const = 0;
|
||||
virtual const StackVec<uint32_t, 6> getThreadsPerEUConfigs() const = 0;
|
||||
virtual bool getEnableLocalMemory(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual std::string getExtensions() const = 0;
|
||||
virtual std::string getExtensions(const HardwareInfo &hwInfo) const = 0;
|
||||
static uint32_t getMaxThreadsForVfe(const HardwareInfo &hwInfo);
|
||||
virtual uint32_t getMetricsLibraryGenId() const = 0;
|
||||
virtual uint32_t getMocsIndex(const GmmHelper &gmmHelper, bool l3enabled, bool l1enabled) const = 0;
|
||||
|
@ -281,7 +281,7 @@ class HwHelperHw : public HwHelper {
|
|||
|
||||
bool getEnableLocalMemory(const HardwareInfo &hwInfo) const override;
|
||||
|
||||
std::string getExtensions() const override;
|
||||
std::string getExtensions(const HardwareInfo &hwInfo) const override;
|
||||
|
||||
uint32_t getMetricsLibraryGenId() const override;
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ EngineGroupType HwHelperHw<GfxFamily>::getEngineGroupType(aub_stream::EngineType
|
|||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
std::string HwHelperHw<GfxFamily>::getExtensions() const {
|
||||
std::string HwHelperHw<GfxFamily>::getExtensions(const HardwareInfo &hwInfo) const {
|
||||
return "";
|
||||
}
|
||||
|
||||
|
|
|
@ -101,6 +101,7 @@ class HwInfoConfig {
|
|||
virtual bool isComputeDispatchAllWalkerEnableInCfeStateRequired(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isVmBindPatIndexProgrammingSupported() const = 0;
|
||||
virtual bool isBFloat16ConversionSupported(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isMatrixMultiplyAccumulateSupported(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool useChannelRedForUnusedShaderChannels() const = 0;
|
||||
virtual bool isIpSamplingSupported(const NEO::HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isGrfNumReportedWithScm() const = 0;
|
||||
|
@ -195,6 +196,7 @@ class HwInfoConfigHw : public HwInfoConfig {
|
|||
bool isComputeDispatchAllWalkerEnableInCfeStateRequired(const HardwareInfo &hwInfo) const override;
|
||||
bool isVmBindPatIndexProgrammingSupported() const override;
|
||||
bool isBFloat16ConversionSupported(const HardwareInfo &hwInfo) const override;
|
||||
bool isMatrixMultiplyAccumulateSupported(const HardwareInfo &hwInfo) const override;
|
||||
bool useChannelRedForUnusedShaderChannels() const override;
|
||||
bool isIpSamplingSupported(const NEO::HardwareInfo &hwInfo) const override;
|
||||
bool isGrfNumReportedWithScm() const override;
|
||||
|
|
|
@ -412,4 +412,10 @@ template <PRODUCT_FAMILY gfxProduct>
|
|||
bool HwInfoConfigHw<gfxProduct>::isImplicitScalingSupported(const HardwareInfo &hwInfo) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
bool HwInfoConfigHw<gfxProduct>::isMatrixMultiplyAccumulateSupported(const HardwareInfo &hwInfo) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
|
|
@ -91,7 +91,7 @@ const StackVec<uint32_t, 6> HwHelperHw<Family>::getThreadsPerEUConfigs() const {
|
|||
}
|
||||
|
||||
template <>
|
||||
std::string HwHelperHw<Family>::getExtensions() const {
|
||||
std::string HwHelperHw<Family>::getExtensions(const HardwareInfo &hwInfo) const {
|
||||
std::string extensions;
|
||||
extensions += "cl_intel_dot_accumulate ";
|
||||
extensions += "cl_intel_subgroup_local_block_io ";
|
||||
|
|
|
@ -280,7 +280,7 @@ uint32_t HwHelperHw<Family>::getNumCacheRegions() const {
|
|||
}
|
||||
|
||||
template <>
|
||||
std::string HwHelperHw<Family>::getExtensions() const {
|
||||
std::string HwHelperHw<Family>::getExtensions(const HardwareInfo &hwInfo) const {
|
||||
std::string extensions;
|
||||
|
||||
extensions += "cl_intel_create_buffer_with_properties ";
|
||||
|
|
|
@ -180,3 +180,8 @@ template <>
|
|||
bool HwInfoConfigHw<gfxProduct>::isTimestampWaitSupportedForEvents() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
template <>
|
||||
bool HwInfoConfigHw<gfxProduct>::isMatrixMultiplyAccumulateSupported(const HardwareInfo &hwInfo) const {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -83,13 +83,17 @@ const StackVec<uint32_t, 6> HwHelperHw<Family>::getThreadsPerEUConfigs() const {
|
|||
}
|
||||
|
||||
template <>
|
||||
std::string HwHelperHw<Family>::getExtensions() const {
|
||||
std::string HwHelperHw<Family>::getExtensions(const HardwareInfo &hwInfo) const {
|
||||
std::string extensions;
|
||||
extensions += "cl_intel_create_buffer_with_properties ";
|
||||
extensions += "cl_intel_dot_accumulate ";
|
||||
extensions += "cl_intel_subgroup_local_block_io ";
|
||||
extensions += "cl_intel_subgroup_matrix_multiply_accumulate ";
|
||||
extensions += "cl_intel_subgroup_split_matrix_multiply_accumulate ";
|
||||
|
||||
auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily);
|
||||
if (hwInfoConfig.isMatrixMultiplyAccumulateSupported(hwInfo)) {
|
||||
extensions += "cl_intel_subgroup_matrix_multiply_accumulate ";
|
||||
extensions += "cl_intel_subgroup_split_matrix_multiply_accumulate ";
|
||||
}
|
||||
|
||||
return extensions;
|
||||
}
|
||||
|
|
|
@ -8,9 +8,10 @@ if(TESTS_DG2)
|
|||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/compute_mode_tests_dg2.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/device_binary_format_ar_tests_dg2.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_helper_tests_dg2.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_tests_dg2.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}product_config_tests_dg2.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/device_binary_format_ar_tests_dg2.cpp
|
||||
)
|
||||
add_subdirectories()
|
||||
endif()
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* Copyright (C) 2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/helpers/hw_helper.h"
|
||||
#include "shared/test/common/helpers/default_hw_info.h"
|
||||
#include "shared/test/common/mocks/ult_device_factory.h"
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
using HwHelperTestDg2 = ::testing::Test;
|
||||
|
||||
DG2TEST_F(HwHelperTestDg2, whenGetExtensionsIsCalledThenMatrixMultiplyAccumulateExtensionsAreReturned) {
|
||||
auto &hwHelper = HwHelper::get(defaultHwInfo->platform.eRenderCoreFamily);
|
||||
auto extensions = hwHelper.getExtensions(*defaultHwInfo);
|
||||
|
||||
EXPECT_TRUE(hasSubstr(extensions, std::string("cl_intel_subgroup_matrix_multiply_accumulate")));
|
||||
EXPECT_TRUE(hasSubstr(extensions, std::string("cl_intel_subgroup_split_matrix_multiply_accumulate")));
|
||||
}
|
Loading…
Reference in New Issue