Improve scratch allocation size calculation

Change-Id: I627bea89ce31e7110976cb88f9e9266e08af590a
This commit is contained in:
Dunajski, Bartosz
2018-06-06 08:45:45 +02:00
committed by sys_ocldev
parent e6a9d30951
commit bd16f4bf2b
7 changed files with 44 additions and 38 deletions

View File

@ -134,12 +134,6 @@ TEST(Device_GetCaps, validate) {
EXPECT_GE((4 * GB) - (8 * KB), caps.maxMemAllocSize);
EXPECT_LE(65536u, caps.imageMaxBufferSize);
if (sysInfo.EUCount > 0) {
auto expected = sysInfo.MaxSubSlicesSupported * sysInfo.MaxEuPerSubSlice *
sysInfo.ThreadCount / sysInfo.EUCount;
EXPECT_EQ(expected, caps.computeUnitsUsedForScratch);
}
EXPECT_GT(caps.maxWorkGroupSize, 0u);
EXPECT_EQ(caps.maxWorkItemSizes[0], caps.maxWorkGroupSize);
EXPECT_EQ(caps.maxWorkItemSizes[1], caps.maxWorkGroupSize);
@ -218,20 +212,6 @@ TEST(Device_GetCaps, validateImage3DDimensions) {
EXPECT_EQ(2048u, caps.image3DMaxDepth);
}
TEST(DeviceGetCapsSimple, givenDeviceWhenEUCountIsZeroThenmaxWgsIsDefault) {
auto hardwareInfo = hardwareInfoTable[productFamily];
GT_SYSTEM_INFO sysInfo = *hardwareInfo->pSysInfo;
sysInfo.EUCount = 0;
HardwareInfo hwInfo = {hardwareInfo->pPlatform, hardwareInfo->pSkuTable, hardwareInfo->pWaTable, &sysInfo, hardwareInfo->capabilityTable};
auto device = std::unique_ptr<Device>(DeviceHelper<>::create(&hwInfo));
const auto &caps = device->getDeviceInfo();
//default value
uint32_t expected = 128u;
EXPECT_EQ(expected, caps.maxWorkGroupSize);
}
TEST(Device_GetCaps, givenDontForcePreemptionModeDebugVariableWhenCreateDeviceThenSetDefaultHwPreemptionMode) {
DebugManagerStateRestore dbgRestorer;
{

View File

@ -20,6 +20,7 @@
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include "runtime/helpers/hw_helper.h"
#include "unit_tests/fixtures/device_fixture.h"
#include "test.h"
@ -80,6 +81,17 @@ BDWTEST_F(Gen8DeviceCaps, BdwProfilingTimerResolution) {
EXPECT_EQ(80u, caps.outProfilingTimerResolution);
}
BDWTEST_F(Gen8DeviceCaps, givenHwInfoWhenRequestedComputeUnitsUsedForScratchThenReturnValidValue) {
const auto &hwInfo = pDevice->getHardwareInfo();
auto &hwHelper = HwHelper::get(hwInfo.pPlatform->eRenderCoreFamily);
uint32_t expectedValue = hwInfo.pSysInfo->MaxSubSlicesSupported * hwInfo.pSysInfo->MaxEuPerSubSlice *
hwInfo.pSysInfo->ThreadCount / hwInfo.pSysInfo->EUCount;
EXPECT_EQ(expectedValue, hwHelper.getComputeUnitsUsedForScratch(&hwInfo));
EXPECT_EQ(expectedValue, pDevice->getDeviceInfo().computeUnitsUsedForScratch);
}
typedef Test<DeviceFixture> BdwUsDeviceIdTest;
BDWTEST_F(BdwUsDeviceIdTest, isSimulationCap) {

View File

@ -20,6 +20,7 @@
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include "runtime/helpers/hw_helper.h"
#include "unit_tests/fixtures/device_fixture.h"
#include "test.h"
@ -57,3 +58,14 @@ GEN9TEST_F(Gen9DeviceCaps, whitelistedRegisters) {
GEN9TEST_F(Gen9DeviceCaps, compression) {
EXPECT_FALSE(pDevice->getHardwareInfo().capabilityTable.ftrCompression);
}
GEN9TEST_F(Gen9DeviceCaps, givenHwInfoWhenRequestedComputeUnitsUsedForScratchThenReturnValidValue) {
const auto &hwInfo = pDevice->getHardwareInfo();
auto &hwHelper = HwHelper::get(hwInfo.pPlatform->eRenderCoreFamily);
uint32_t expectedValue = hwInfo.pSysInfo->MaxSubSlicesSupported * hwInfo.pSysInfo->MaxEuPerSubSlice *
hwInfo.pSysInfo->ThreadCount / hwInfo.pSysInfo->EUCount;
EXPECT_EQ(expectedValue, hwHelper.getComputeUnitsUsedForScratch(&hwInfo));
EXPECT_EQ(expectedValue, pDevice->getDeviceInfo().computeUnitsUsedForScratch);
}