mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-26 07:00:17 +08:00
Add support for ze_kernel_preferred_group_size_properties_t
Signed-off-by: Jaime Arteaga <jaime.a.arteaga.molina@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
2b0f8cbdce
commit
ef07bbd041
@@ -682,6 +682,23 @@ ze_result_t KernelImp::getProperties(ze_kernel_properties_t *pKernelProperties)
|
||||
uint32_t maxKernelWorkGroupSize = static_cast<uint32_t>(this->module->getDevice()->getNEODevice()->getDeviceInfo().maxWorkGroupSize);
|
||||
pKernelProperties->maxNumSubgroups = maxKernelWorkGroupSize / kernelDescriptor.kernelAttributes.simdSize;
|
||||
|
||||
void *pNext = pKernelProperties->pNext;
|
||||
while (pNext) {
|
||||
ze_base_desc_t *extendedProperties = reinterpret_cast<ze_base_desc_t *>(pKernelProperties->pNext);
|
||||
if (extendedProperties->stype == ZE_STRUCTURE_TYPE_KERNEL_PREFERRED_GROUP_SIZE_PROPERTIES) {
|
||||
ze_kernel_preferred_group_size_properties_t *preferredGroupSizeProperties =
|
||||
reinterpret_cast<ze_kernel_preferred_group_size_properties_t *>(extendedProperties);
|
||||
|
||||
preferredGroupSizeProperties->preferredMultiple = this->kernelImmData->getKernelInfo()->getMaxSimdSize();
|
||||
|
||||
auto &hwHelper = NEO::HwHelper::get(this->module->getDevice()->getHwInfo().platform.eRenderCoreFamily);
|
||||
if (hwHelper.isFusedEuDispatchEnabled(this->module->getDevice()->getHwInfo())) {
|
||||
preferredGroupSizeProperties->preferredMultiple *= 2;
|
||||
}
|
||||
}
|
||||
pNext = const_cast<void *>(extendedProperties->pNext);
|
||||
}
|
||||
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -757,6 +757,44 @@ HWTEST_F(KernelPropertiesTests, givenValidKernelThenPropertiesAreRetrieved) {
|
||||
sizeof(kernelProperties.uuid.mid)));
|
||||
}
|
||||
|
||||
HWTEST_F(KernelPropertiesTests, whenPassingPreferredGroupSizeStructToGetPropertiesThenPreferredMultipleIsReturned) {
|
||||
ze_kernel_properties_t kernelProperties = {};
|
||||
kernelProperties.stype = ZE_STRUCTURE_TYPE_KERNEL_PROPERTIES;
|
||||
|
||||
ze_kernel_preferred_group_size_properties_t preferredGroupProperties = {};
|
||||
preferredGroupProperties.stype = ZE_STRUCTURE_TYPE_KERNEL_PREFERRED_GROUP_SIZE_PROPERTIES;
|
||||
|
||||
kernelProperties.pNext = &preferredGroupProperties;
|
||||
|
||||
ze_result_t res = kernel->getProperties(&kernelProperties);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
|
||||
|
||||
auto &hwHelper = NEO::HwHelper::get(module->getDevice()->getHwInfo().platform.eRenderCoreFamily);
|
||||
if (hwHelper.isFusedEuDispatchEnabled(module->getDevice()->getHwInfo())) {
|
||||
EXPECT_EQ(preferredGroupProperties.preferredMultiple, static_cast<uint32_t>(kernel->getImmutableData()->getKernelInfo()->getMaxSimdSize()) * 2);
|
||||
} else {
|
||||
EXPECT_EQ(preferredGroupProperties.preferredMultiple, static_cast<uint32_t>(kernel->getImmutableData()->getKernelInfo()->getMaxSimdSize()));
|
||||
}
|
||||
}
|
||||
|
||||
HWTEST_F(KernelPropertiesTests, whenPassingPreferredGroupSizeStructWithWrongStypeSuccessIsReturnedAndNoFieldsInPreferredGroupSizeStructAreSet) {
|
||||
ze_kernel_properties_t kernelProperties = {};
|
||||
kernelProperties.stype = ZE_STRUCTURE_TYPE_KERNEL_PROPERTIES;
|
||||
|
||||
ze_kernel_preferred_group_size_properties_t preferredGroupProperties = {};
|
||||
preferredGroupProperties.stype = ZE_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMPORT_WIN32;
|
||||
|
||||
kernelProperties.pNext = &preferredGroupProperties;
|
||||
|
||||
uint32_t dummyPreferredMultiple = 101;
|
||||
preferredGroupProperties.preferredMultiple = dummyPreferredMultiple;
|
||||
|
||||
ze_result_t res = kernel->getProperties(&kernelProperties);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
|
||||
|
||||
EXPECT_EQ(preferredGroupProperties.preferredMultiple, dummyPreferredMultiple);
|
||||
}
|
||||
|
||||
HWTEST_F(KernelPropertiesTests, givenValidKernelThenProfilePropertiesAreRetrieved) {
|
||||
zet_profile_properties_t kernelProfileProperties = {};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user