mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Abort if SLM size larger than local mem size
Signed-off-by: Jaime Arteaga <jaime.a.arteaga.molina@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
6f75d67406
commit
4192fc7d86
@ -163,6 +163,7 @@ void WorkSizeInfo::setMinWorkGroupSize(const HardwareInfo *hwInfo) {
|
||||
minWorkGroupSize = numThreadsPerSubSlice * simdSize / maxBarriersPerHSlice;
|
||||
}
|
||||
if (slmTotalSize > 0) {
|
||||
UNRECOVERABLE_IF(localMemSize < slmTotalSize);
|
||||
minWorkGroupSize = std::max(maxWorkGroupSize / ((localMemSize / slmTotalSize)), minWorkGroupSize);
|
||||
}
|
||||
|
||||
|
@ -16,8 +16,17 @@
|
||||
using namespace NEO;
|
||||
|
||||
TEST(localWorkSizeTest, given3DimWorkGroupAndSimdEqual8AndBarriersWhenComputeCalledThenLocalGroupComputedCorrectly) {
|
||||
//wsInfo maxWorkGroupSize, hasBariers, simdSize, slmTotalSize, hardwareInfo, numThreadsPerSubSlice, localMemorySize, imgUsed, yTiledSurface
|
||||
WorkSizeInfo wsInfo(256, 1u, 8, 0u, defaultHwInfo.get(), 32u, 0u, false, false);
|
||||
WorkSizeInfo wsInfo(256, // maxWorkGroupSize
|
||||
1u, // hasBariers
|
||||
8, // simdSize
|
||||
0u, // slmTotalSize
|
||||
defaultHwInfo.get(), // hardwareInfo
|
||||
32u, // numThreadsPerSubSlice
|
||||
0u, // localMemorySize
|
||||
false, // imgUsed
|
||||
false // yTiledSurface
|
||||
);
|
||||
|
||||
uint32_t workDim = 3;
|
||||
size_t workGroup[3] = {10000, 10000, 10000};
|
||||
size_t workGroupSize[3];
|
||||
@ -36,6 +45,20 @@ TEST(localWorkSizeTest, given3DimWorkGroupAndSimdEqual8AndBarriersWhenComputeCal
|
||||
EXPECT_EQ(workGroupSize[2], 1u);
|
||||
}
|
||||
|
||||
TEST(localWorkSizeTest, givenSmallerLocalMemSizeThanSlmTotalSizeThenExceptionIsThrown) {
|
||||
EXPECT_THROW(WorkSizeInfo wsInfo(256, // maxWorkGroupSize
|
||||
1u, // hasBariers
|
||||
8, // simdSize
|
||||
128u, // slmTotalSize
|
||||
defaultHwInfo.get(), // hardwareInfo
|
||||
32u, // numThreadsPerSubSlice
|
||||
64u, // localMemorySize
|
||||
false, // imgUsed
|
||||
false // yTiledSurface
|
||||
),
|
||||
std::exception);
|
||||
}
|
||||
|
||||
TEST(localWorkSizeTest, given2DimWorkGroupAndSimdEqual8AndNoBarriersWhenComputeCalledThenLocalGroupComputedCorrectly) {
|
||||
DebugManagerStateRestore dbgRestore;
|
||||
DebugManager.flags.EnableComputeWorkSizeSquared.set(true);
|
||||
|
Reference in New Issue
Block a user