Skip to content

Commit d6bdf63

Browse files
committed
[SYCL] Store the Adapter as weak_ptr in build results
1 parent e690537 commit d6bdf63

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

sycl/source/detail/kernel_program_cache.hpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,20 +111,21 @@ class KernelProgramCache {
111111
};
112112

113113
struct ProgramBuildResult : public BuildResult<ur_program_handle_t> {
114-
AdapterPtr Adapter;
115-
ProgramBuildResult(const AdapterPtr &Adapter) : Adapter(Adapter) {
114+
std::weak_ptr<Adapter> AdapterWeakPtr;
115+
ProgramBuildResult(const AdapterPtr &Adapter) : AdapterWeakPtr(Adapter) {
116116
Val = nullptr;
117117
}
118118
ProgramBuildResult(const AdapterPtr &Adapter, BuildState InitialState)
119-
: Adapter(Adapter) {
119+
: AdapterWeakPtr(Adapter) {
120120
Val = nullptr;
121121
this->State.store(InitialState);
122122
}
123123
~ProgramBuildResult() {
124124
try {
125125
if (Val) {
126+
AdapterPtr AdapterSharedPtr = AdapterWeakPtr.lock();
126127
ur_result_t Err =
127-
Adapter->call_nocheck<UrApiKind::urProgramRelease>(Val);
128+
AdapterSharedPtr->call_nocheck<UrApiKind::urProgramRelease>(Val);
128129
__SYCL_CHECK_UR_CODE_NO_EXC(Err);
129130
}
130131
} catch (std::exception &e) {
@@ -197,15 +198,16 @@ class KernelProgramCache {
197198
using KernelArgMaskPairT =
198199
std::pair<ur_kernel_handle_t, const KernelArgMask *>;
199200
struct KernelBuildResult : public BuildResult<KernelArgMaskPairT> {
200-
AdapterPtr Adapter;
201-
KernelBuildResult(const AdapterPtr &Adapter) : Adapter(Adapter) {
201+
std::weak_ptr<Adapter> AdapterWeakPtr;
202+
KernelBuildResult(const AdapterPtr &Adapter) : AdapterWeakPtr(Adapter) {
202203
Val.first = nullptr;
203204
}
204205
~KernelBuildResult() {
205206
try {
206207
if (Val.first) {
208+
AdapterPtr AdapterSharedPtr = AdapterWeakPtr.lock();
207209
ur_result_t Err =
208-
Adapter->call_nocheck<UrApiKind::urKernelRelease>(Val.first);
210+
AdapterSharedPtr->call_nocheck<UrApiKind::urKernelRelease>(Val.first);
209211
__SYCL_CHECK_UR_CODE_NO_EXC(Err);
210212
}
211213
} catch (std::exception &e) {

0 commit comments

Comments
 (0)