@@ -42,14 +42,14 @@ template <typename ST, int CS, int TS> struct stream_queue_t {
4242 std::vector<bool > TransferAppliedBarrier;
4343 ur_context_handle_t_ *Context;
4444 ur_device_handle_t_ *Device;
45- std::atomic_uint32_t RefCount;
46- std::atomic_uint32_t EventCount;
47- std::atomic_uint32_t ComputeStreamIndex;
48- std::atomic_uint32_t TransferStreamIndex;
49- unsigned int NumComputeStreams;
50- unsigned int NumTransferStreams;
51- unsigned int LastSyncComputeStreams;
52- unsigned int LastSyncTransferStreams;
45+ std::atomic_uint32_t RefCount{ 1 } ;
46+ std::atomic_uint32_t EventCount{ 0 } ;
47+ std::atomic_uint32_t ComputeStreamIndex{ 0 } ;
48+ std::atomic_uint32_t TransferStreamIndex{ 0 } ;
49+ unsigned int NumComputeStreams{ 0 } ;
50+ unsigned int NumTransferStreams{ 0 } ;
51+ unsigned int LastSyncComputeStreams{ 0 } ;
52+ unsigned int LastSyncTransferStreams{ 0 } ;
5353 unsigned int Flags;
5454 ur_queue_flags_t URFlags;
5555 int Priority;
@@ -62,20 +62,29 @@ template <typename ST, int CS, int TS> struct stream_queue_t {
6262 std::mutex BarrierMutex;
6363 bool HasOwnership;
6464
65- stream_queue_t (std::vector<native_type> &&ComputeStreams,
66- std::vector<native_type> &&TransferStreams,
67- ur_context_handle_t_ *Context, ur_device_handle_t_ *Device,
68- unsigned int Flags, ur_queue_flags_t URFlags, int Priority,
69- bool BackendOwns = true )
70- : ComputeStreams{std::move (ComputeStreams)},
71- TransferStreams{std::move (TransferStreams)},
65+ stream_queue_t (bool IsOutOfOrder, ur_context_handle_t_ *Context,
66+ ur_device_handle_t_ *Device, unsigned int Flags,
67+ ur_queue_flags_t URFlags, int Priority)
68+ : ComputeStreams(IsOutOfOrder ? DefaultNumComputeStreams : 1 ),
69+ TransferStreams (IsOutOfOrder ? DefaultNumTransferStreams : 0 ),
7270 DelayCompute(this ->ComputeStreams.size(), false),
7371 ComputeAppliedBarrier(this ->ComputeStreams.size()),
7472 TransferAppliedBarrier(this ->TransferStreams.size()), Context{Context},
75- Device{Device}, RefCount{1 }, EventCount{0 }, ComputeStreamIndex{0 },
76- TransferStreamIndex{0 }, NumComputeStreams{0 }, NumTransferStreams{0 },
77- LastSyncComputeStreams{0 }, LastSyncTransferStreams{0 }, Flags(Flags),
78- URFlags (URFlags), Priority(Priority), HasOwnership{BackendOwns} {
73+ Device{Device}, Flags(Flags), URFlags(URFlags), Priority(Priority),
74+ HasOwnership{true } {
75+ urContextRetain (Context);
76+ }
77+
78+ // Create a queue from a native handle
79+ stream_queue_t (native_type stream, ur_context_handle_t_ *Context,
80+ ur_device_handle_t_ *Device, unsigned int Flags,
81+ ur_queue_flags_t URFlags, bool BackendOwns)
82+ : ComputeStreams(1 , stream), TransferStreams(0 ),
83+ DelayCompute (this ->ComputeStreams.size(), false),
84+ ComputeAppliedBarrier(this ->ComputeStreams.size()),
85+ TransferAppliedBarrier(this ->TransferStreams.size()), Context{Context},
86+ Device{Device}, NumComputeStreams{1 }, Flags(Flags), URFlags(URFlags),
87+ Priority (0 ), HasOwnership{BackendOwns} {
7988 urContextRetain (Context);
8089 }
8190
0 commit comments