Skip to content

Commit dc52dce

Browse files
committed
Add to L0v2 and fix compile errors.
1 parent b3fbf72 commit dc52dce

21 files changed

+71
-41
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
@@ -237,15 +237,15 @@ urCommandBufferCreateExp(ur_context_handle_t context, ur_device_handle_t device,
237237

238238
ur_result_t
239239
urCommandBufferRetainExp(ur_exp_command_buffer_handle_t hCommandBuffer) try {
240-
hCommandBuffer->RefCount.increment();
240+
hCommandBuffer->getRefCounter().increment();
241241
return UR_RESULT_SUCCESS;
242242
} catch (...) {
243243
return exceptionToResult(std::current_exception());
244244
}
245245

246246
ur_result_t
247247
urCommandBufferReleaseExp(ur_exp_command_buffer_handle_t hCommandBuffer) try {
248-
if (!hCommandBuffer->RefCount.decrementAndTest())
248+
if (!hCommandBuffer->getRefCounter().decrement() == 0)
249249
return UR_RESULT_SUCCESS;
250250

251251
delete hCommandBuffer;
@@ -683,7 +683,7 @@ urCommandBufferGetInfoExp(ur_exp_command_buffer_handle_t hCommandBuffer,
683683

684684
switch (propName) {
685685
case UR_EXP_COMMAND_BUFFER_INFO_REFERENCE_COUNT:
686-
return ReturnValue(uint32_t{hCommandBuffer->RefCount.load()});
686+
return ReturnValue(uint32_t{hCommandBuffer->getRefCounter().getCount()});
687687
case UR_EXP_COMMAND_BUFFER_INFO_DESCRIPTOR: {
688688
ur_exp_command_buffer_desc_t Descriptor{};
689689
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"
@@ -59,6 +60,8 @@ struct ur_exp_command_buffer_handle_t_ : public ur_object {
5960
const ur_exp_command_buffer_sync_point_t *pSyncPointWaitList,
6061
uint32_t numSyncPointsInWaitList);
6162

63+
UR_ReferenceCounter &getRefCounter() noexcept { return RefCounter; }
64+
6265
private:
6366
// Stores all sync points that are created by the command buffer.
6467
std::vector<ur_event_handle_t> syncPoints;
@@ -77,4 +80,6 @@ struct ur_exp_command_buffer_handle_t_ : public ur_object {
7780
bool isFinalized = false;
7881

7982
ur_event_handle_t currentExecution = nullptr;
83+
84+
UR_ReferenceCounter RefCounter;
8085
};

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;
@@ -191,7 +191,7 @@ ur_result_t urContextGetInfo(ur_context_handle_t hContext,
191191
case UR_CONTEXT_INFO_NUM_DEVICES:
192192
return ReturnValue(uint32_t(hContext->getDevices().size()));
193193
case UR_CONTEXT_INFO_REFERENCE_COUNT:
194-
return ReturnValue(uint32_t{hContext->RefCount.load()});
194+
return ReturnValue(uint32_t{hContext->getRefCounter().getCount()});
195195
case UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT:
196196
// TODO: this is currently not implemented
197197
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

@@ -53,6 +55,8 @@ struct ur_context_handle_t_ : ur_object {
5355
// For that the Device or its root devices need to be in the context.
5456
bool isValidDevice(ur_device_handle_t Device) const;
5557

58+
UR_ReferenceCounter &getRefCounter() noexcept { return RefCounter; }
59+
5660
private:
5761
const v2::raii::ze_context_handle_t hContext;
5862
const std::vector<ur_device_handle_t> hDevices;
@@ -69,4 +73,6 @@ struct ur_context_handle_t_ : ur_object {
6973

7074
ur_usm_pool_handle_t_ defaultUSMPool;
7175
ur_usm_pool_handle_t_ asyncPool;
76+
77+
UR_ReferenceCounter RefCounter;
7278
};

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

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

160160
ur_result_t ur_event_handle_t_::retain() {
161-
RefCount.increment();
161+
RefCounter.increment();
162162
return UR_RESULT_SUCCESS;
163163
}
164164

165165
ur_result_t ur_event_handle_t_::release() {
166-
if (!RefCount.decrementAndTest())
166+
if (!RefCounter.decrement() == 0)
167167
return UR_RESULT_SUCCESS;
168168

169169
if (event_pool) {
@@ -256,7 +256,7 @@ ur_result_t urEventGetInfo(ur_event_handle_t hEvent, ur_event_info_t propName,
256256
}
257257
}
258258
case UR_EVENT_INFO_REFERENCE_COUNT: {
259-
return returnValue(hEvent->RefCount.load());
259+
return returnValue(hEvent->getRefCounter().increment());
260260
}
261261
case UR_EVENT_INFO_COMMAND_QUEUE: {
262262
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 {
@@ -111,10 +112,14 @@ struct ur_event_handle_t_ : ur_object {
111112
uint64_t getEventStartTimestmap() const;
112113
uint64_t getEventEndTimestamp();
113114

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

121+
UR_ReferenceCounter RefCounter;
122+
118123
protected:
119124
ur_context_handle_t hContext;
120125

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

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

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

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

0 commit comments

Comments
 (0)