Skip to content

Commit bea539d

Browse files
committed
Add to L0v2 and fix compile errors.
1 parent 585ec4b commit bea539d

26 files changed

+86
-48
lines changed

unified-runtime/source/adapters/hip/adapter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urAdapterGet(
6969
}
7070

7171
UR_APIEXPORT ur_result_t UR_APICALL urAdapterRelease(ur_adapter_handle_t) {
72-
if (--ur::hip::adapter->getRefCounter().decrement() == 0) {
72+
if (ur::hip::adapter->getRefCounter().decrement() == 0) {
7373
delete ur::hip::adapter;
7474
}
7575

unified-runtime/source/adapters/hip/memory.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ checkSupportedImageChannelType(ur_image_channel_type_t ImageChannelType) {
6363
UR_APIEXPORT ur_result_t UR_APICALL urMemRelease(ur_mem_handle_t hMem) {
6464
try {
6565
// Do nothing if there are other references
66-
if (hMem->decrementReferenceCount() > 0) {
66+
if (hMem->getRefCounter().decrement() > 0) {
6767
return UR_RESULT_SUCCESS;
6868
}
6969

@@ -259,7 +259,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urMemGetInfo(ur_mem_handle_t hMemory,
259259
return ReturnValue(hMemory->getContext());
260260
}
261261
case UR_MEM_INFO_REFERENCE_COUNT: {
262-
return ReturnValue(hMemory->getReferenceCount());
262+
return ReturnValue(hMemory->getRefCounter().getCount());
263263
}
264264

265265
default:
@@ -439,8 +439,9 @@ UR_APIEXPORT ur_result_t UR_APICALL urMemImageGetInfo(ur_mem_handle_t hMemory,
439439
}
440440

441441
UR_APIEXPORT ur_result_t UR_APICALL urMemRetain(ur_mem_handle_t hMem) {
442-
UR_ASSERT(hMem->getReferenceCount() > 0, UR_RESULT_ERROR_INVALID_MEM_OBJECT);
443-
hMem->incrementReferenceCount();
442+
UR_ASSERT(hMem->getRefCounter().getCount() > 0,
443+
UR_RESULT_ERROR_INVALID_MEM_OBJECT);
444+
hMem->getRefCounter().increment();
444445
return UR_RESULT_SUCCESS;
445446
}
446447

unified-runtime/source/adapters/hip/program.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ urProgramGetInfo(ur_program_handle_t hProgram, ur_program_info_t propName,
385385

386386
switch (propName) {
387387
case UR_PROGRAM_INFO_REFERENCE_COUNT:
388-
return ReturnValue(hProgram-- > getRefCounter().getCount());
388+
return ReturnValue(hProgram->getRefCounter().getCount());
389389
case UR_PROGRAM_INFO_CONTEXT:
390390
return ReturnValue(hProgram->Context);
391391
case UR_PROGRAM_INFO_NUM_DEVICES:

unified-runtime/source/adapters/level_zero/v2/command_buffer.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,15 +261,15 @@ urCommandBufferCreateExp(ur_context_handle_t context, ur_device_handle_t device,
261261

262262
ur_result_t
263263
urCommandBufferRetainExp(ur_exp_command_buffer_handle_t hCommandBuffer) try {
264-
hCommandBuffer->RefCount.increment();
264+
hCommandBuffer->getRefCounter().increment();
265265
return UR_RESULT_SUCCESS;
266266
} catch (...) {
267267
return exceptionToResult(std::current_exception());
268268
}
269269

270270
ur_result_t
271271
urCommandBufferReleaseExp(ur_exp_command_buffer_handle_t hCommandBuffer) try {
272-
if (!hCommandBuffer->RefCount.decrementAndTest())
272+
if (!hCommandBuffer->getRefCounter().decrement() == 0)
273273
return UR_RESULT_SUCCESS;
274274

275275
if (auto executionEvent = hCommandBuffer->getExecutionEventUnlocked()) {
@@ -633,7 +633,7 @@ urCommandBufferGetInfoExp(ur_exp_command_buffer_handle_t hCommandBuffer,
633633

634634
switch (propName) {
635635
case UR_EXP_COMMAND_BUFFER_INFO_REFERENCE_COUNT:
636-
return ReturnValue(uint32_t{hCommandBuffer->RefCount.load()});
636+
return ReturnValue(uint32_t{hCommandBuffer->getRefCounter().getCount()});
637637
case UR_EXP_COMMAND_BUFFER_INFO_DESCRIPTOR: {
638638
ur_exp_command_buffer_desc_t Descriptor{};
639639
Descriptor.stype = UR_STRUCTURE_TYPE_EXP_COMMAND_BUFFER_DESC;

unified-runtime/source/adapters/level_zero/v2/command_buffer.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "../helpers/mutable_helpers.hpp"
1313
#include "command_list_manager.hpp"
1414
#include "common.hpp"
15+
#include "common/ur_ref_counter.hpp"
1516
#include "context.hpp"
1617
#include "kernel.hpp"
1718
#include "lockable.hpp"
@@ -53,6 +54,8 @@ struct ur_exp_command_buffer_handle_t_ : public ur_object {
5354
ur_event_handle_t
5455
createEventIfRequested(ur_exp_command_buffer_sync_point_t *retSyncPoint);
5556

57+
UR_ReferenceCounter &getRefCounter() noexcept { return RefCounter; }
58+
5659
private:
5760
v2::raii::cache_borrowed_event_pool eventPool;
5861

@@ -86,4 +89,6 @@ struct ur_exp_command_buffer_handle_t_ : public ur_object {
8689
const bool isProfilingEnabled = false;
8790

8891
lockable<ur_command_list_manager> commandListManager;
92+
93+
UR_ReferenceCounter RefCounter;
8994
};

unified-runtime/source/adapters/level_zero/v2/context.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,12 @@ ur_context_handle_t_::ur_context_handle_t_(ze_context_handle_t hContext,
8080
defaultUSMPool(this, nullptr), asyncPool(this, nullptr) {}
8181

8282
ur_result_t ur_context_handle_t_::retain() {
83-
RefCount.increment();
83+
RefCounter.increment();
8484
return UR_RESULT_SUCCESS;
8585
}
8686

8787
ur_result_t ur_context_handle_t_::release() {
88-
if (!RefCount.decrementAndTest())
88+
if (!RefCounter.decrement() == 0)
8989
return UR_RESULT_SUCCESS;
9090

9191
delete this;
@@ -201,7 +201,7 @@ ur_result_t urContextGetInfo(ur_context_handle_t hContext,
201201
case UR_CONTEXT_INFO_NUM_DEVICES:
202202
return ReturnValue(uint32_t(hContext->getDevices().size()));
203203
case UR_CONTEXT_INFO_REFERENCE_COUNT:
204-
return ReturnValue(uint32_t{hContext->RefCount.load()});
204+
return ReturnValue(uint32_t{hContext->getRefCounter().getCount()});
205205
case UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT:
206206
// TODO: this is currently not implemented
207207
return ReturnValue(uint8_t{false});

unified-runtime/source/adapters/level_zero/v2/context.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
#include "command_list_cache.hpp"
1616
#include "common.hpp"
17+
#include "common/ur_ref_counter.hpp"
18+
1719
#include "event_pool_cache.hpp"
1820
#include "usm.hpp"
1921

@@ -64,6 +66,8 @@ struct ur_context_handle_t_ : ur_object {
6466
// For that the Device or its root devices need to be in the context.
6567
bool isValidDevice(ur_device_handle_t Device) const;
6668

69+
UR_ReferenceCounter &getRefCounter() noexcept { return RefCounter; }
70+
6771
private:
6872
const v2::raii::ze_context_handle_t hContext;
6973
const std::vector<ur_device_handle_t> hDevices;
@@ -81,4 +85,6 @@ struct ur_context_handle_t_ : ur_object {
8185
ur_usm_pool_handle_t_ defaultUSMPool;
8286
ur_usm_pool_handle_t_ asyncPool;
8387
std::list<ur_usm_pool_handle_t> usmPoolHandles;
88+
89+
UR_ReferenceCounter RefCounter;
8490
};

unified-runtime/source/adapters/level_zero/v2/event.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,12 @@ ze_event_handle_t ur_event_handle_t_::getZeEvent() const {
160160
}
161161

162162
ur_result_t ur_event_handle_t_::retain() {
163-
RefCount.increment();
163+
RefCounter.increment();
164164
return UR_RESULT_SUCCESS;
165165
}
166166

167167
ur_result_t ur_event_handle_t_::release() {
168-
if (!RefCount.decrementAndTest())
168+
if (!RefCounter.decrement() == 0)
169169
return UR_RESULT_SUCCESS;
170170

171171
if (event_pool) {
@@ -258,7 +258,7 @@ ur_result_t urEventGetInfo(ur_event_handle_t hEvent, ur_event_info_t propName,
258258
}
259259
}
260260
case UR_EVENT_INFO_REFERENCE_COUNT: {
261-
return returnValue(hEvent->RefCount.load());
261+
return returnValue(hEvent->getRefCounter().increment());
262262
}
263263
case UR_EVENT_INFO_COMMAND_QUEUE: {
264264
auto urQueueHandle = reinterpret_cast<uintptr_t>(hEvent->getQueue()) -

unified-runtime/source/adapters/level_zero/v2/event.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include "adapters/level_zero/v2/queue_api.hpp"
1919
#include "common.hpp"
20+
#include "common/ur_ref_counter.hpp"
2021
#include "event_provider.hpp"
2122

2223
namespace v2 {
@@ -112,10 +113,14 @@ struct ur_event_handle_t_ : ur_object {
112113
uint64_t getEventStartTimestmap() const;
113114
uint64_t getEventEndTimestamp();
114115

116+
UR_ReferenceCounter &getRefCounter() noexcept { return RefCounter; }
117+
115118
private:
116119
ur_event_handle_t_(ur_context_handle_t hContext, event_variant hZeEvent,
117120
v2::event_flags_t flags, v2::event_pool *pool);
118121

122+
UR_ReferenceCounter RefCounter;
123+
119124
protected:
120125
ur_context_handle_t hContext;
121126

unified-runtime/source/adapters/level_zero/v2/event_pool.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ void event_pool::free(ur_event_handle_t event) {
5252
freelist.push_back(event);
5353

5454
// The event is still in the pool, so we need to increment the refcount
55-
assert(event->RefCount.load() == 0);
56-
event->RefCount.increment();
55+
assert(event->getRefCounter().getCount() == 0);
56+
event->getRefCounter().increment();
5757
}
5858

5959
event_provider *event_pool::getProvider() const { return provider.get(); }

0 commit comments

Comments
 (0)