Skip to content

Commit aa98c92

Browse files
Jaime ArteagaCompute-Runtime-Automation
authored andcommitted
Add support for ze_kernel_preferred_group_size_properties_t
Related-To: LOCI-2313 Signed-off-by: Jaime Arteaga <[email protected]>
1 parent 78aeef8 commit aa98c92

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

level_zero/core/source/kernel/kernel_imp.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,24 @@ ze_result_t KernelImp::getProperties(ze_kernel_properties_t *pKernelProperties)
683683
uint32_t maxKernelWorkGroupSize = static_cast<uint32_t>(this->module->getDevice()->getNEODevice()->getDeviceInfo().maxWorkGroupSize);
684684
pKernelProperties->maxNumSubgroups = maxKernelWorkGroupSize / kernelDescriptor.kernelAttributes.simdSize;
685685

686+
void *pNext = pKernelProperties->pNext;
687+
while (pNext) {
688+
ze_base_desc_t *extendedProperties = reinterpret_cast<ze_base_desc_t *>(pKernelProperties->pNext);
689+
if (extendedProperties->stype == ZE_STRUCTURE_TYPE_KERNEL_PREFERRED_GROUP_SIZE_PROPERTIES) {
690+
ze_kernel_preferred_group_size_properties_t *preferredGroupSizeProperties =
691+
reinterpret_cast<ze_kernel_preferred_group_size_properties_t *>(extendedProperties);
692+
693+
preferredGroupSizeProperties->preferredMultiple = this->kernelImmData->getKernelInfo()->getMaxSimdSize();
694+
695+
auto &hwHelper = NEO::HwHelper::get(this->module->getDevice()->getHwInfo().platform.eRenderCoreFamily);
696+
if (hwHelper.isFusedEuDispatchEnabled(this->module->getDevice()->getHwInfo())) {
697+
preferredGroupSizeProperties->preferredMultiple *= 2;
698+
}
699+
}
700+
701+
pNext = const_cast<void *>(extendedProperties->pNext);
702+
}
703+
686704
return ZE_RESULT_SUCCESS;
687705
}
688706

level_zero/core/test/unit_tests/sources/kernel/test_kernel.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -838,6 +838,44 @@ HWTEST_F(KernelPropertiesTests, givenValidKernelThenPropertiesAreRetrieved) {
838838
sizeof(kernelProperties.uuid.mid)));
839839
}
840840

841+
HWTEST_F(KernelPropertiesTests, whenPassingPreferredGroupSizeStructToGetPropertiesThenPreferredMultipleIsReturned) {
842+
ze_kernel_properties_t kernelProperties = {};
843+
kernelProperties.stype = ZE_STRUCTURE_TYPE_KERNEL_PROPERTIES;
844+
845+
ze_kernel_preferred_group_size_properties_t preferredGroupProperties = {};
846+
preferredGroupProperties.stype = ZE_STRUCTURE_TYPE_KERNEL_PREFERRED_GROUP_SIZE_PROPERTIES;
847+
848+
kernelProperties.pNext = &preferredGroupProperties;
849+
850+
ze_result_t res = kernel->getProperties(&kernelProperties);
851+
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
852+
853+
auto &hwHelper = NEO::HwHelper::get(module->getDevice()->getHwInfo().platform.eRenderCoreFamily);
854+
if (hwHelper.isFusedEuDispatchEnabled(module->getDevice()->getHwInfo())) {
855+
EXPECT_EQ(preferredGroupProperties.preferredMultiple, static_cast<uint32_t>(kernel->getImmutableData()->getKernelInfo()->getMaxSimdSize()) * 2);
856+
} else {
857+
EXPECT_EQ(preferredGroupProperties.preferredMultiple, static_cast<uint32_t>(kernel->getImmutableData()->getKernelInfo()->getMaxSimdSize()));
858+
}
859+
}
860+
861+
HWTEST_F(KernelPropertiesTests, whenPassingPreferredGroupSizeStructWithWrongStypeSuccessIsReturnedAndNoFieldsInPreferredGroupSizeStructAreSet) {
862+
ze_kernel_properties_t kernelProperties = {};
863+
kernelProperties.stype = ZE_STRUCTURE_TYPE_KERNEL_PROPERTIES;
864+
865+
ze_kernel_preferred_group_size_properties_t preferredGroupProperties = {};
866+
preferredGroupProperties.stype = ZE_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMPORT_WIN32;
867+
868+
kernelProperties.pNext = &preferredGroupProperties;
869+
870+
uint32_t dummyPreferredMultiple = 101;
871+
preferredGroupProperties.preferredMultiple = dummyPreferredMultiple;
872+
873+
ze_result_t res = kernel->getProperties(&kernelProperties);
874+
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
875+
876+
EXPECT_EQ(preferredGroupProperties.preferredMultiple, dummyPreferredMultiple);
877+
}
878+
841879
HWTEST_F(KernelPropertiesTests, givenValidKernelThenProfilePropertiesAreRetrieved) {
842880
zet_profile_properties_t kernelProfileProperties = {};
843881

0 commit comments

Comments
 (0)