mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Don't rebuild non built-in program when RebuildPrecompiledKernels is set
Related-To: NEO-5224 Change-Id: I8956900473732245961289ac6681d25b4684381e Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:

committed by
sys_ocldev

parent
7367b581f3
commit
609f97d752
@ -186,8 +186,8 @@ cl_int Program::createProgramFromBinary(
|
||||
this->debugData = makeCopy(reinterpret_cast<const char *>(singleDeviceBinary.debugData.begin()), singleDeviceBinary.debugData.size());
|
||||
this->debugDataSize = singleDeviceBinary.debugData.size();
|
||||
}
|
||||
|
||||
if ((false == singleDeviceBinary.deviceBinary.empty()) && (false == DebugManager.flags.RebuildPrecompiledKernels.get())) {
|
||||
bool forceRebuildBuiltInFromIr = isBuiltIn && DebugManager.flags.RebuildPrecompiledKernels.get();
|
||||
if ((false == singleDeviceBinary.deviceBinary.empty()) && (false == forceRebuildBuiltInFromIr)) {
|
||||
this->buildInfos[rootDeviceIndex].unpackedDeviceBinary = makeCopy<char>(reinterpret_cast<const char *>(singleDeviceBinary.deviceBinary.begin()), singleDeviceBinary.deviceBinary.size());
|
||||
this->buildInfos[rootDeviceIndex].unpackedDeviceBinarySize = singleDeviceBinary.deviceBinary.size();
|
||||
this->buildInfos[rootDeviceIndex].packedDeviceBinary = makeCopy<char>(reinterpret_cast<const char *>(archive.begin()), archive.size());
|
||||
|
@ -2723,7 +2723,7 @@ TEST_F(ProgramTests, givenProgramWhenBuiltThenAdditionalOptionsAreApplied) {
|
||||
EXPECT_EQ(1u, program.applyAdditionalOptionsCalled);
|
||||
}
|
||||
|
||||
TEST(CreateProgramFromBinaryTests, givenBinaryProgramWhenKernelRebulildIsForcedThenDeviceBinaryIsNotUsed) {
|
||||
TEST(CreateProgramFromBinaryTests, givenBinaryProgramBuiltInWhenKernelRebulildIsForcedThenDeviceBinaryIsNotUsed) {
|
||||
DebugManagerStateRestore dbgRestorer;
|
||||
DebugManager.flags.RebuildPrecompiledKernels.set(true);
|
||||
cl_int retVal = CL_INVALID_BINARY;
|
||||
@ -2732,7 +2732,6 @@ TEST(CreateProgramFromBinaryTests, givenBinaryProgramWhenKernelRebulildIsForcedT
|
||||
|
||||
auto clDevice = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr));
|
||||
std::unique_ptr<MockProgram> pProgram(Program::createBuiltInFromGenBinary<MockProgram>(nullptr, toClDeviceVector(*clDevice), programTokens.storage.data(), programTokens.storage.size(), &retVal));
|
||||
pProgram->pDevice = &clDevice->getDevice();
|
||||
ASSERT_NE(nullptr, pProgram.get());
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
@ -2744,6 +2743,31 @@ TEST(CreateProgramFromBinaryTests, givenBinaryProgramWhenKernelRebulildIsForcedT
|
||||
EXPECT_EQ(nullptr, pProgram->buildInfos[rootDeviceIndex].packedDeviceBinary);
|
||||
EXPECT_EQ(0U, pProgram->buildInfos[rootDeviceIndex].packedDeviceBinarySize);
|
||||
}
|
||||
TEST(CreateProgramFromBinaryTests, givenBinaryProgramNotBuiltInWhenBuiltInKernelRebulildIsForcedThenDeviceBinaryIsUsed) {
|
||||
DebugManagerStateRestore dbgRestorer;
|
||||
DebugManager.flags.RebuildPrecompiledKernels.set(true);
|
||||
cl_int retVal = CL_INVALID_BINARY;
|
||||
|
||||
PatchTokensTestData::ValidEmptyProgram programTokens;
|
||||
const unsigned char *binaries[] = {programTokens.storage.data()};
|
||||
size_t lengths[] = {programTokens.storage.size()};
|
||||
auto clDevice = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr));
|
||||
std::unique_ptr<MockProgram> pProgram(Program::create<MockProgram>(
|
||||
nullptr,
|
||||
toClDeviceVector(*clDevice),
|
||||
lengths,
|
||||
binaries,
|
||||
nullptr,
|
||||
retVal));
|
||||
ASSERT_NE(nullptr, pProgram.get());
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
auto rootDeviceIndex = clDevice->getRootDeviceIndex();
|
||||
EXPECT_NE(nullptr, pProgram->buildInfos[rootDeviceIndex].unpackedDeviceBinary.get());
|
||||
EXPECT_LT(0U, pProgram->buildInfos[rootDeviceIndex].unpackedDeviceBinarySize);
|
||||
EXPECT_NE(nullptr, pProgram->buildInfos[rootDeviceIndex].packedDeviceBinary);
|
||||
EXPECT_LT(0U, pProgram->buildInfos[rootDeviceIndex].packedDeviceBinarySize);
|
||||
}
|
||||
|
||||
TEST(CreateProgramFromBinaryTests, givenBinaryProgramWhenKernelRebulildIsNotForcedThenDeviceBinaryIsUsed) {
|
||||
cl_int retVal = CL_INVALID_BINARY;
|
||||
|
Reference in New Issue
Block a user