Skip to content

Commit 406cc32

Browse files
Add dependent events support for barrier
1 parent d624fe1 commit 406cc32

4 files changed

Lines changed: 17 additions & 6 deletions

File tree

oneapi-rs-sys/include/queue.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ std::unique_ptr<Event> memset(
2727
std::uint8_t * ptr,
2828
int value,
2929
std::size_t num_bytes,
30-
rust::Vec<EventPtr> dep_events
30+
rust::Vec<EventPtr>
3131
);
32-
std::unique_ptr<Event> barrier(std::unique_ptr<Queue> &);
32+
std::unique_ptr<Event> barrier(std::unique_ptr<Queue> &, rust::Vec<EventPtr>);
3333
void wait(std::unique_ptr<Queue> &);
3434
} // namespace sycl_shims::queue

oneapi-rs-sys/src/queue-sys.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pub mod ffi {
3535
num_bytes: usize,
3636
dep_events: Vec<EventPtr>
3737
) -> UniquePtr<Event>;
38-
fn barrier(queue: &mut UniquePtr<Queue>) -> UniquePtr<Event>;
38+
fn barrier(queue: &mut UniquePtr<Queue>, dep_events: Vec<EventPtr>) -> UniquePtr<Event>;
3939
fn wait(queue: &mut UniquePtr<Queue>);
4040
}
4141
}

oneapi-rs-sys/src/queue.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,11 @@ std::unique_ptr<Event> memset(
4242
deps.push_back(std::move(*e.ptr.release()));
4343
return std::make_unique<Event>(queue->memset(ptr, value, num_bytes, deps));
4444
}
45-
std::unique_ptr<Event> barrier(std::unique_ptr<Queue> & queue) {
46-
return std::make_unique<Event>(queue->ext_oneapi_submit_barrier());
45+
std::unique_ptr<Event> barrier(std::unique_ptr<Queue> & queue, rust::Vec<EventPtr> dep_events) {
46+
std::vector<sycl::event> deps;
47+
for (auto&& e: dep_events)
48+
deps.push_back(std::move(*e.ptr.release()));
49+
return std::make_unique<Event>(queue->ext_oneapi_submit_barrier(deps));
4750
}
4851
void wait(std::unique_ptr<Queue> & queue) {
4952
queue->wait();

oneapi-rs/src/queue.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,15 @@ impl Queue {
7979
}
8080

8181
pub fn barrier(&mut self) -> Event {
82-
ffi::barrier(&mut self.0).into()
82+
self.barrier_with_deps(&[])
83+
}
84+
85+
pub fn barrier_with_deps(&mut self, dep_events: &[&Event]) -> Event {
86+
let dep_events = dep_events
87+
.iter()
88+
.map(|e| EventPtr { ptr: (*e).clone().0 })
89+
.collect::<Vec<_>>();
90+
ffi::barrier(&mut self.0, dep_events).into()
8391
}
8492

8593
pub fn wait(&mut self) {

0 commit comments

Comments
 (0)