Skip to content

Commit d3b67a2

Browse files
Add immediate queue binding
1 parent 80cf30f commit d3b67a2

4 files changed

Lines changed: 17 additions & 1 deletion

File tree

oneapi-rs-sys/include/queue.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
namespace sycl_shims::queue {
1717
std::unique_ptr<Queue> new_queue();
18+
std::unique_ptr<Queue> new_queue_immediate();
1819
std::unique_ptr<Queue> new_queue_from_device(Device const &);
1920
std::unique_ptr<Queue> clone(Queue const &);
2021
std::unique_ptr<Event> memset(std::unique_ptr<Queue> &, std::uint8_t * ptr, int value, std::size_t num_bytes);

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ pub mod ffi {
1919
type Event = crate::types::ffi::Event;
2020

2121
fn new_queue() -> UniquePtr<Queue>;
22+
fn new_queue_immediate() -> UniquePtr<Queue>;
2223
fn new_queue_from_device(device: &Device) -> UniquePtr<Queue>;
2324
fn clone(queue: &Queue) -> UniquePtr<Queue>;
2425
unsafe fn memset(queue: &mut UniquePtr<Queue>, ptr: *mut u8, value: i32, num_bytes: usize) -> UniquePtr<Event>;

oneapi-rs-sys/src/queue.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,19 @@
1010
#include "oneapi-rs-sys/src/queue-sys.rs.h"
1111

1212
using sycl::property::queue::in_order;
13+
using sycl::ext::intel::property::queue::immediate_command_list;
1314

1415
namespace sycl_shims::queue {
1516
std::unique_ptr<Queue> new_queue() {
16-
return std::make_unique<Queue>(sycl::queue({in_order()}));
17+
return std::make_unique<Queue>(sycl::queue({
18+
in_order()
19+
}));
20+
}
21+
std::unique_ptr<Queue> new_queue_immediate() {
22+
return std::make_unique<Queue>(sycl::queue({
23+
in_order(),
24+
immediate_command_list()
25+
}));
1726
}
1827
std::unique_ptr<Queue> new_queue_from_device(Device const & device) {
1928
return std::make_unique<Queue>(sycl::queue(device, {in_order()}));

oneapi-rs/src/queue.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ impl Queue {
2222
Self(ffi::new_queue())
2323
}
2424

25+
/// Construct an immediate `Queue` based on the device returned from the default selector.
26+
pub fn new_immediate() -> Self {
27+
Self(ffi::new_queue_immediate())
28+
}
29+
2530
/// Allocates zeroed memory and creates a host-side [`Buffer`] that can store an array of T.
2631
pub fn alloc_host<T: Pod>(&mut self, len: usize) -> BufferInProgress<T, UsmAllocator<HostAllocator>> {
2732
unsafe {

0 commit comments

Comments
 (0)