fix: use required walk order

Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>

Related-To: NEO-10014
This commit is contained in:
Maciej Plewka
2024-01-15 12:34:43 +00:00
committed by Compute-Runtime-Automation
parent 9309d7d865
commit b348eaf29f
2 changed files with 17 additions and 1 deletions

View File

@@ -786,8 +786,9 @@ void populateKernelSourceAttributes(NEO::KernelDescriptor &dst, const KernelAttr
appendAttributeIfSet(languageAttributes, AttributeTags::workgroupSizeHint, attributes.workgroupSizeHint); appendAttributeIfSet(languageAttributes, AttributeTags::workgroupSizeHint, attributes.workgroupSizeHint);
appendAttributeIfSet(languageAttributes, AttributeTags::vecTypeHint, attributes.vecTypeHint); appendAttributeIfSet(languageAttributes, AttributeTags::vecTypeHint, attributes.vecTypeHint);
appendAttributeIfSet(languageAttributes, AttributeTags::invalidKernel, attributes.invalidKernel); appendAttributeIfSet(languageAttributes, AttributeTags::invalidKernel, attributes.invalidKernel);
dst.kernelAttributes.flags.isInvalid = attributes.invalidKernel.has_value();
dst.kernelAttributes.flags.isInvalid = attributes.invalidKernel.has_value();
dst.kernelAttributes.flags.requiresWorkgroupWalkOrder = attributes.intelReqdWorkgroupWalkOrder.has_value();
dst.kernelMetadata.requiredSubGroupSize = static_cast<uint8_t>(attributes.intelReqdSubgroupSize.value_or(0U)); dst.kernelMetadata.requiredSubGroupSize = static_cast<uint8_t>(attributes.intelReqdSubgroupSize.value_or(0U));
} }

View File

@@ -2263,6 +2263,21 @@ TEST(PopulateKernelSourceAttributes, GivenInvalidKernelAttributeWhenPopulatingKe
EXPECT_STREQ("invalid_kernel(reason)", kd.kernelMetadata.kernelLanguageAttributes.c_str()); EXPECT_STREQ("invalid_kernel(reason)", kd.kernelMetadata.kernelLanguageAttributes.c_str());
} }
TEST(PopulateKernelSourceAttributes, GivenAttributesWithoutRequiredWalkOrderWhenPopulatingKernelSourceAttributesThenKernelNotRequireWalkOrder) {
NEO::KernelDescriptor kd;
NEO::Zebin::ZeInfo::KernelAttributesBaseT attributes;
NEO::Zebin::ZeInfo::populateKernelSourceAttributes(kd, attributes);
EXPECT_FALSE(kd.kernelAttributes.flags.requiresWorkgroupWalkOrder);
}
TEST(PopulateKernelSourceAttributes, GivenRequiredWalkOrderAttributeWhenPopulatingKernelSourceAttributesThenKernelRequireWalkOrder) {
NEO::KernelDescriptor kd;
NEO::Zebin::ZeInfo::KernelAttributesBaseT attributes;
attributes.intelReqdWorkgroupWalkOrder = {0, 2, 1};
NEO::Zebin::ZeInfo::populateKernelSourceAttributes(kd, attributes);
EXPECT_TRUE(kd.kernelAttributes.flags.requiresWorkgroupWalkOrder);
}
TEST_F(decodeZeInfoKernelEntryTest, GivenUnknownAttributeWhenPopulatingKernelDescriptorThenErrorIsReturned) { TEST_F(decodeZeInfoKernelEntryTest, GivenUnknownAttributeWhenPopulatingKernelDescriptorThenErrorIsReturned) {
ConstStringRef zeinfo = R"===(--- ConstStringRef zeinfo = R"===(---
kernels: kernels: