@@ -42,14 +42,14 @@ template <typename ST, int CS, int TS> struct stream_queue_t {
42
42
std::vector<bool > TransferAppliedBarrier;
43
43
ur_context_handle_t_ *Context;
44
44
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 } ;
53
53
unsigned int Flags;
54
54
ur_queue_flags_t URFlags;
55
55
int Priority;
@@ -62,20 +62,29 @@ template <typename ST, int CS, int TS> struct stream_queue_t {
62
62
std::mutex BarrierMutex;
63
63
bool HasOwnership;
64
64
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 ),
72
70
DelayCompute(this ->ComputeStreams.size(), false),
73
71
ComputeAppliedBarrier(this ->ComputeStreams.size()),
74
72
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} {
79
88
urContextRetain (Context);
80
89
}
81
90
0 commit comments