Skip to content

Commit fc7a473

Browse files
authored
Merge pull request #2025 from igchor/fix_program_kernel_v2
[L0 v2] Remove ur_shared_handle
2 parents c9999a7 + 1853f8c commit fc7a473

File tree

5 files changed

+17
-90
lines changed

5 files changed

+17
-90
lines changed

source/adapters/level_zero/v2/common.hpp

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -85,70 +85,6 @@ struct ze_handle_wrapper {
8585
bool ownZeHandle;
8686
};
8787

88-
template <typename URHandle, ur_result_t (*retain)(URHandle),
89-
ur_result_t (*release)(URHandle)>
90-
struct ur_shared_handle {
91-
using handle_t = URHandle;
92-
93-
ur_shared_handle() : handle(nullptr) {}
94-
explicit ur_shared_handle(handle_t handle) : handle(handle) {}
95-
~ur_shared_handle() {
96-
try {
97-
reset();
98-
} catch (...) {
99-
}
100-
}
101-
102-
ur_shared_handle(const ur_shared_handle &other) : handle(other.handle) {
103-
retain(handle);
104-
}
105-
ur_shared_handle(ur_shared_handle &&other) : handle(other.handle) {
106-
other.handle = nullptr;
107-
}
108-
ur_shared_handle(std::nullptr_t) : handle(nullptr) {}
109-
110-
void reset() {
111-
if (!handle) {
112-
return;
113-
}
114-
115-
UR_CALL_THROWS(release(handle));
116-
handle = nullptr;
117-
}
118-
119-
ur_shared_handle &operator=(const ur_shared_handle &other) {
120-
if (handle) {
121-
release(handle);
122-
}
123-
handle = other.handle;
124-
retain(handle);
125-
return *this;
126-
}
127-
ur_shared_handle &operator=(ur_shared_handle &&other) {
128-
if (handle) {
129-
release(handle);
130-
}
131-
handle = other.handle;
132-
other.handle = nullptr;
133-
return *this;
134-
}
135-
ur_shared_handle &operator=(std::nullptr_t) {
136-
if (handle) {
137-
release(handle);
138-
}
139-
new (this) ur_shared_handle(nullptr);
140-
return *this;
141-
}
142-
143-
handle_t *ptr() { return &handle; }
144-
handle_t get() const { return handle; }
145-
handle_t operator->() { return handle; }
146-
operator handle_t() { return handle; }
147-
148-
private:
149-
handle_t handle;
150-
};
151-
15288
using ze_kernel_handle_t =
15389
ze_handle_wrapper<::ze_kernel_handle_t, zeKernelDestroy>;
15490

@@ -158,11 +94,5 @@ using ze_event_handle_t =
15894
using ze_event_pool_handle_t =
15995
ze_handle_wrapper<::ze_event_pool_handle_t, zeEventPoolDestroy>;
16096

161-
using ur_queue_shared_handle_t =
162-
ur_shared_handle<ur_queue_handle_t, urQueueRetain, urQueueRelease>;
163-
164-
using ur_kernel_shared_handle_t =
165-
ur_shared_handle<ur_kernel_handle_t, urKernelRetain, urKernelRelease>;
166-
16797
} // namespace raii
16898
} // namespace v2

source/adapters/level_zero/v2/kernel.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,12 @@ ur_result_t ur_single_device_kernel_t::release() {
3232
return UR_RESULT_SUCCESS;
3333
}
3434

35-
ur_kernel_handle_t_::ur_kernel_handle_t_(ur_program_shared_handle_t hProgram,
35+
ur_kernel_handle_t_::ur_kernel_handle_t_(ur_program_handle_t hProgram,
3636
const char *kernelName)
3737
: hProgram(hProgram),
3838
deviceKernels(hProgram->Context->getPlatform()->getNumDevices()) {
39+
urProgramRetain(hProgram);
40+
3941
for (auto [zeDevice, zeModule] : hProgram->ZeModuleMap) {
4042
ZeStruct<ze_kernel_desc_t> zeKernelDesc;
4143
zeKernelDesc.pKernelName = kernelName;
@@ -78,7 +80,8 @@ ur_result_t ur_kernel_handle_t_::release() {
7880
singleDeviceKernelOpt.value().hKernel.reset();
7981
}
8082
}
81-
hProgram.reset();
83+
84+
UR_CALL_THROWS(urProgramRelease(hProgram));
8285

8386
return UR_RESULT_SUCCESS;
8487
}
@@ -190,14 +193,13 @@ ur_result_t ur_kernel_handle_t_::setArgPointer(
190193
}
191194

192195
ur_program_handle_t ur_kernel_handle_t_::getProgramHandle() const {
193-
return hProgram.get();
196+
return hProgram;
194197
}
195198

196199
UR_APIEXPORT ur_result_t UR_APICALL
197200
urKernelCreate(ur_program_handle_t hProgram, const char *pKernelName,
198201
ur_kernel_handle_t *phKernel) {
199-
*phKernel = new ur_kernel_handle_t_(
200-
ur_kernel_handle_t_::ur_program_shared_handle_t(hProgram), pKernelName);
202+
*phKernel = new ur_kernel_handle_t_(hProgram, pKernelName);
201203
return UR_RESULT_SUCCESS;
202204
}
203205

source/adapters/level_zero/v2/kernel.hpp

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,8 @@ struct ur_single_device_kernel_t {
2626

2727
struct ur_kernel_handle_t_ : _ur_object {
2828
private:
29-
static inline ur_result_t
30-
internalProgramRelease(ur_program_handle_t hProgram) {
31-
// do a release on the program this kernel was part of without delete of the
32-
// program handle.
33-
hProgram->ur_release_program_resources(false);
34-
return UR_RESULT_SUCCESS;
35-
}
36-
3729
public:
38-
using ur_program_shared_handle_t =
39-
v2::raii::ur_shared_handle<ur_program_handle_t, urProgramRetain,
40-
internalProgramRelease>;
41-
42-
ur_kernel_handle_t_(ur_program_shared_handle_t hProgram,
43-
const char *kernelName);
30+
ur_kernel_handle_t_(ur_program_handle_t hProgram, const char *kernelName);
4431

4532
// From native handle
4633
ur_kernel_handle_t_(ur_native_handle_t hNativeKernel,
@@ -75,7 +62,7 @@ struct ur_kernel_handle_t_ : _ur_object {
7562

7663
private:
7764
// Keep the program of the kernel.
78-
ur_program_shared_handle_t hProgram;
65+
ur_program_handle_t hProgram;
7966

8067
// Vector of ur_single_device_kernel_t indexed by device->Id
8168
std::vector<std::optional<ur_single_device_kernel_t>> deviceKernels;

test/conformance/kernel/kernel_adapter_native_cpu.match

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ urKernelGetSubGroupInfoTest.InvalidEnumeration/SYCL_NATIVE_CPU___SYCL_Native_CPU
104104
urKernelGetSubGroupInfoTest.InvalidEnumeration/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}__UR_KERNEL_SUB_GROUP_INFO_SUB_GROUP_SIZE_INTEL
105105
urKernelGetSubGroupInfoSingleTest.CompileNumSubgroupsIsZero/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
106106
urKernelReleaseTest.Success/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
107+
urKernelReleaseTest.KernelReleaseAfterProgramRelease/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
107108
urKernelReleaseTest.InvalidNullHandleKernel/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
108109
urKernelRetainTest.Success/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
109110
urKernelRetainTest.InvalidNullHandleKernel/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}

test/conformance/kernel/urKernelRelease.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ TEST_P(urKernelReleaseTest, Success) {
1313
ASSERT_SUCCESS(urKernelRelease(kernel));
1414
}
1515

16+
TEST_P(urKernelReleaseTest, KernelReleaseAfterProgramRelease) {
17+
ASSERT_SUCCESS(urKernelRetain(kernel));
18+
ASSERT_SUCCESS(urProgramRelease(program));
19+
program = nullptr;
20+
ASSERT_SUCCESS(urKernelRelease(kernel));
21+
}
22+
1623
TEST_P(urKernelReleaseTest, InvalidNullHandleKernel) {
1724
ASSERT_EQ_RESULT(UR_RESULT_ERROR_INVALID_NULL_HANDLE,
1825
urKernelRelease(nullptr));

0 commit comments

Comments
 (0)