Skip to content

Commit 6b0b5ef

Browse files
Jaime ArteagaCompute-Runtime-Automation
authored andcommitted
Add support for ze_kernel_preferred_group_size_properties_t
Signed-off-by: Jaime Arteaga <[email protected]>
1 parent 8f21e46 commit 6b0b5ef

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
@@ -682,6 +682,24 @@ ze_result_t KernelImp::getProperties(ze_kernel_properties_t *pKernelProperties)
682682
uint32_t maxKernelWorkGroupSize = static_cast<uint32_t>(this->module->getDevice()->getNEODevice()->getDeviceInfo().maxWorkGroupSize);
683683
pKernelProperties->maxNumSubgroups = maxKernelWorkGroupSize / kernelDescriptor.kernelAttributes.simdSize;
684684

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

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
@@ -837,6 +837,44 @@ HWTEST_F(KernelPropertiesTests, givenValidKernelThenPropertiesAreRetrieved) {
837837
sizeof(kernelProperties.uuid.mid)));
838838
}
839839

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

0 commit comments

Comments
 (0)