Skip to content

[SYCL][L0][UR]Remove the direct use of std::mutex in L0v2 #19100

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ static constexpr size_t EVENTS_BURST = 64;
ur_event_handle_t event_pool::allocate() {
TRACK_SCOPE_LATENCY("event_pool::allocate");

std::unique_lock<std::mutex> lock(*mutex);
std::unique_lock<ur_mutex> lock(mutex);

if (freelist.empty()) {
auto start = events.size();
Expand All @@ -46,7 +46,7 @@ ur_event_handle_t event_pool::allocate() {
void event_pool::free(ur_event_handle_t event) {
TRACK_SCOPE_LATENCY("event_pool::free");

std::unique_lock<std::mutex> lock(*mutex);
std::unique_lock<ur_mutex> lock(mutex);

event->reset();
freelist.push_back(event);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,10 @@ class event_pool {
// store weak reference to the queue as event_pool is part of the queue
event_pool(ur_context_handle_t hContext,
std::unique_ptr<event_provider> Provider)
: hContext(hContext), provider(std::move(Provider)),
mutex(std::make_unique<std::mutex>()) {};
: hContext(hContext), provider(std::move(Provider)) {};

event_pool(event_pool &&other) = default;
event_pool &operator=(event_pool &&other) = default;
event_pool(event_pool &&other) = delete;
event_pool &operator=(event_pool &&other) = delete;

event_pool(const event_pool &) = delete;
event_pool &operator=(const event_pool &) = delete;
Expand All @@ -58,7 +57,7 @@ class event_pool {
std::deque<ur_event_handle_t_> events;
std::vector<ur_event_handle_t> freelist;

std::unique_ptr<std::mutex> mutex;
ur_mutex mutex;
};

} // namespace v2
6 changes: 3 additions & 3 deletions unified-runtime/source/adapters/level_zero/v2/lockable.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@

template <typename T> struct locked {
public:
locked(T *object, std::unique_lock<std::mutex> &&lock)
locked(T *object, std::unique_lock<ur_mutex> &&lock)
: lock_(std::move(lock)) {
object_ = object;
}
T *operator->() { return object_; }

private:
std::unique_lock<std::mutex> lock_;
std::unique_lock<ur_mutex> lock_;
T *object_;
};

Expand Down Expand Up @@ -54,5 +54,5 @@ template <typename T> struct lockable {

private:
T object_;
std::mutex mut_;
ur_mutex mut_;
};
1 change: 0 additions & 1 deletion unified-runtime/source/adapters/level_zero/v2/memory.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
#include "../image_common.hpp"
#include "command_list_manager.hpp"
#include "common.hpp"
#include "lockable.hpp"

using usm_unique_ptr_t = std::unique_ptr<void, std::function<void(void *)>>;

Expand Down
Loading