Skip to content

Commit d4be314

Browse files
Revert "[SYCL] Use image pointer as a unique identifier for cache (#7113)"
This reverts commit a0254c9.
1 parent fceaf94 commit d4be314

File tree

3 files changed

+8
-14
lines changed

3 files changed

+8
-14
lines changed

sycl/source/detail/kernel_program_cache.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class KernelProgramCache {
6868
using PiProgramT = std::remove_pointer<RT::PiProgram>::type;
6969
using PiProgramPtrT = std::atomic<PiProgramT *>;
7070
using ProgramWithBuildStateT = BuildResult<PiProgramT>;
71-
using ProgramCacheKeyT = std::pair<std::pair<SerializedObj, std::uintptr_t>,
71+
using ProgramCacheKeyT = std::pair<std::pair<SerializedObj, KernelSetId>,
7272
std::pair<RT::PiDevice, std::string>>;
7373
using ProgramCacheT = std::map<ProgramCacheKeyT, ProgramWithBuildStateT>;
7474
using ContextPtr = context_impl *;

sycl/source/detail/program_manager/program_manager.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -640,10 +640,9 @@ RT::PiProgram ProgramManager::getBuiltPIProgram(
640640

641641
const RT::PiDevice PiDevice = Dev->getHandleRef();
642642

643-
std::uintptr_t ImgId = reinterpret_cast<uintptr_t>(&Img);
644643
auto BuildResult = getOrBuild<PiProgramT, compile_program_error>(
645644
Cache,
646-
std::make_pair(std::make_pair(std::move(SpecConsts), ImgId),
645+
std::make_pair(std::make_pair(std::move(SpecConsts), KSId),
647646
std::make_pair(PiDevice, CompileOpts + LinkOpts)),
648647
AcquireF, GetF, BuildF);
649648
// getOrBuild is not supposed to return nullptr
@@ -1994,12 +1993,11 @@ device_image_plain ProgramManager::build(const device_image_plain &DeviceImage,
19941993
return BuiltProgram.release();
19951994
};
19961995

1997-
std::uintptr_t ImgId = reinterpret_cast<uintptr_t>(ImgPtr);
19981996
const RT::PiDevice PiDevice = getRawSyclObjImpl(Devs[0])->getHandleRef();
19991997
// TODO: Throw SYCL2020 style exception
20001998
auto BuildResult = getOrBuild<PiProgramT, compile_program_error>(
20011999
Cache,
2002-
std::make_pair(std::make_pair(std::move(SpecConsts), ImgId),
2000+
std::make_pair(std::make_pair(std::move(SpecConsts), (size_t)ImgPtr),
20032001
std::make_pair(PiDevice, CompileOpts + LinkOpts)),
20042002
AcquireF, GetF, BuildF);
20052003
// getOrBuild is not supposed to return nullptr
@@ -2024,7 +2022,7 @@ device_image_plain ProgramManager::build(const device_image_plain &DeviceImage,
20242022

20252023
getOrBuild<PiProgramT, compile_program_error>(
20262024
Cache,
2027-
std::make_pair(std::make_pair(std::move(SpecConsts), ImgId),
2025+
std::make_pair(std::make_pair(std::move(SpecConsts), (size_t)ImgPtr),
20282026
std::make_pair(PiDeviceAdd, CompileOpts + LinkOpts)),
20292027
AcquireF, GetF, CacheOtherDevices);
20302028
// getOrBuild is not supposed to return nullptr

sycl/unittests/kernel-and-program/MultipleDevsCache.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -162,17 +162,13 @@ TEST_F(MultipleDeviceCacheTest, ProgramRetain) {
162162
detail::KernelProgramCache::KernelCacheT &KernelCache =
163163
CtxImpl->getKernelProgramCache().acquireKernelsPerProgramCache().get();
164164

165-
EXPECT_EQ(KernelCache.size(), (size_t)1)
166-
<< "Expect 1 program in kernel cache";
167-
for (auto &KernelProgIt : KernelCache)
168-
EXPECT_EQ(KernelProgIt.second.size(), (size_t)1)
169-
<< "Expect 1 kernel cache";
165+
EXPECT_EQ(KernelCache.size(), (size_t)2) << "Expect 2 kernels in cache";
170166
}
171-
// The kernel creating is called in handler::single_task().
167+
// First kernel creating is called in handler::single_task().
172168
// kernel_bundle::get_kernel() creates a kernel and shares it with created
173169
// programs. Also the kernel is retained in kernel_bundle::get_kernel(). A
174170
// kernel is removed from cache if piKernelRelease was called for it, so it
175171
// will not be removed twice for the other programs. As a result we must
176-
// expect 2 piKernelRelease calls.
177-
EXPECT_EQ(KernelReleaseCounter, 2) << "Expect 2 piKernelRelease calls";
172+
// expect 3 piKernelRelease calls.
173+
EXPECT_EQ(KernelReleaseCounter, 3) << "Expect 3 piKernelRelease calls";
178174
}

0 commit comments

Comments
 (0)