mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-07 21:27:04 +08:00
Fix generating localIDs in zebin
This commit fixes generating localIDs in zebin. With thix fix, Emit Local in compute walker will be set accordingly with the size of local_id argtype (currently, Emit Local is set to Emit None, which prevents generating local IDs). Related-To: NEO-6089 Signed-off-by: Kacper Nowak <kacper.nowak@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
b84b0015d5
commit
441fe1f589
@@ -687,6 +687,9 @@ NEO::DecodeError populateArgDescriptor(const NEO::Elf::ZebinKernelMetadata::Type
|
||||
dst.kernelAttributes.numLocalIdChannels = static_cast<uint8_t>(tupleSize);
|
||||
break;
|
||||
}
|
||||
dst.kernelAttributes.localId[0] = tupleSize > 0;
|
||||
dst.kernelAttributes.localId[1] = tupleSize > 1;
|
||||
dst.kernelAttributes.localId[2] = tupleSize > 2;
|
||||
dst.kernelAttributes.perThreadDataSize = dst.kernelAttributes.simdSize;
|
||||
dst.kernelAttributes.perThreadDataSize *= sizeof(LocalIdT);
|
||||
dst.kernelAttributes.perThreadDataSize = alignUp(dst.kernelAttributes.perThreadDataSize, grfSize);
|
||||
@@ -711,6 +714,9 @@ NEO::DecodeError populateArgDescriptor(const NEO::Elf::ZebinKernelMetadata::Type
|
||||
dst.kernelAttributes.numLocalIdChannels = static_cast<uint8_t>(tupleSize);
|
||||
break;
|
||||
}
|
||||
dst.kernelAttributes.localId[0] = tupleSize > 0;
|
||||
dst.kernelAttributes.localId[1] = tupleSize > 1;
|
||||
dst.kernelAttributes.localId[2] = tupleSize > 2;
|
||||
dst.kernelAttributes.simdSize = 1;
|
||||
dst.kernelAttributes.perThreadDataSize = dst.kernelAttributes.simdSize;
|
||||
dst.kernelAttributes.perThreadDataSize *= dst.kernelAttributes.numLocalIdChannels;
|
||||
|
||||
@@ -3808,7 +3808,7 @@ kernels:
|
||||
EXPECT_TRUE(warnings.empty()) << warnings;
|
||||
}
|
||||
|
||||
TEST(PopulateArgDescriptorPerThreadPayload, GivenArgTypeLocalIdWhenSizeIsValidThenCalculateNumChannelAccordingly) {
|
||||
TEST(PopulateArgDescriptorPerThreadPayload, GivenArgTypeLocalIdWhenSizeIsValidThenCalculateNumChannelAndSetEmitLocalIdAccordingly) {
|
||||
uint32_t simdSizes[] = {8, 16, 32};
|
||||
uint32_t numChannelsOpts[] = {1, 2, 3};
|
||||
|
||||
@@ -3849,6 +3849,11 @@ TEST(PopulateArgDescriptorPerThreadPayload, GivenArgTypeLocalIdWhenSizeIsValidTh
|
||||
ASSERT_EQ(1U, programInfo.kernelInfos.size());
|
||||
EXPECT_EQ(numChannels, programInfo.kernelInfos[0]->kernelDescriptor.kernelAttributes.numLocalIdChannels) << warnings << "simd : " << simdSize << ", num channels : " << numChannels;
|
||||
EXPECT_EQ(simdSize, programInfo.kernelInfos[0]->kernelDescriptor.kernelAttributes.simdSize) << warnings << "simd : " << simdSize << ", num channels : " << numChannels;
|
||||
|
||||
const auto &emitLocalId = programInfo.kernelInfos[0]->kernelDescriptor.kernelAttributes.localId;
|
||||
EXPECT_EQ(static_cast<uint8_t>(numChannels > 0), emitLocalId[0]);
|
||||
EXPECT_EQ(static_cast<uint8_t>(numChannels > 1), emitLocalId[1]);
|
||||
EXPECT_EQ(static_cast<uint8_t>(numChannels > 2), emitLocalId[2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3919,7 +3924,7 @@ kernels:
|
||||
EXPECT_TRUE(warnings.empty()) << warnings;
|
||||
}
|
||||
|
||||
TEST(PopulateArgDescriptorPerThreadPayload, GivenArgTypePackedLocalIdWhenSizeIsValidThenCalculateNumChannelAccordingly) {
|
||||
TEST(PopulateArgDescriptorPerThreadPayload, GivenArgTypePackedLocalIdWhenSizeIsValidThenCalculateNumChannelAndSetEmitLocalIdAccordingly) {
|
||||
uint32_t simdSizes[] = {1};
|
||||
uint32_t numChannelsOpts[] = {1, 2, 3};
|
||||
|
||||
@@ -3960,6 +3965,11 @@ TEST(PopulateArgDescriptorPerThreadPayload, GivenArgTypePackedLocalIdWhenSizeIsV
|
||||
ASSERT_EQ(1U, programInfo.kernelInfos.size());
|
||||
EXPECT_EQ(numChannels, programInfo.kernelInfos[0]->kernelDescriptor.kernelAttributes.numLocalIdChannels) << warnings << "simd : " << simdSize << ", num channels : " << numChannels;
|
||||
EXPECT_EQ(simdSize, programInfo.kernelInfos[0]->kernelDescriptor.kernelAttributes.simdSize) << warnings << "simd : " << simdSize << ", num channels : " << numChannels;
|
||||
|
||||
const auto &emitLocalId = programInfo.kernelInfos[0]->kernelDescriptor.kernelAttributes.localId;
|
||||
EXPECT_EQ(static_cast<uint8_t>(numChannels > 0), emitLocalId[0]);
|
||||
EXPECT_EQ(static_cast<uint8_t>(numChannels > 1), emitLocalId[1]);
|
||||
EXPECT_EQ(static_cast<uint8_t>(numChannels > 2), emitLocalId[2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5099,4 +5109,4 @@ TEST_F(IntelGTNotesFixture, WhenValidatingTargetDeviceGivenValidTargetDeviceAndI
|
||||
ASSERT_TRUE(outErrReason.empty());
|
||||
|
||||
EXPECT_FALSE(validateTargetDevice(elf, targetDevice));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user