Repository navigation
Commit 83567f0
committed
GPU Metal: run the work of a stream in order
Consecutive command buffers of one Metal queue are only ordered as far as
the hazard tracking of the bound buffers sees, and the kernels reach most
memory through addresses stored in constant memory. A kernel could thus
start before the one before it on the same stream had finished: on a
5-event pp time frame the cluster finder found no clusters, and between
12,125 and 12,142 instead of 19,009 with every kernel synchronised.
Make each command buffer of a stream wait on a per-stream event that the
previous one signals, which gives a CUDA stream's in-order semantics
without blocking the host.1 parent 6f7877a commit 83567f0
2 files changed
Lines changed: 12 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
105 | 105 | | |
106 | 106 | | |
107 | 107 | | |
| 108 | + | |
| 109 | + | |
108 | 110 | | |
109 | 111 | | |
110 | 112 | | |
| |||
179 | 181 | | |
180 | 182 | | |
181 | 183 | | |
| 184 | + | |
182 | 185 | | |
183 | 186 | | |
184 | 187 | | |
| |||
323 | 326 | | |
324 | 327 | | |
325 | 328 | | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
326 | 334 | | |
327 | 335 | | |
328 | 336 | | |
329 | 337 | | |
330 | 338 | | |
| 339 | + | |
331 | 340 | | |
332 | 341 | | |
333 | 342 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
62 | 65 | | |
63 | 66 | | |
64 | 67 | | |
| |||
0 commit comments