Repository navigation
Commit 8a18d96
committed
GPU Metal: optionally fail when a kernel ran on an unmapped memory pool
A pool the GPU cannot see is read as zeros, so the kernels return without an
error and the chain goes on with results they did not produce. With
GPUCA_METAL_CANARY=1, a one-thread kernel after each dispatch reads, through
the pool's address like the kernels do, a word the host wrote past the end of
the device pool, and counts a read that does not return it in a buffer bound
directly; the drain then fails the run, as it does for a failed command buffer.
Without the previous commit, the pbpb30 reproducer (1.5 s host sleep before
TrackFit) ends with "14 kernels ran while the memory pool was not mapped for
the GPU" and a GPU Backend Failure instead of 22,250 tracks. It is opt-in
because the extra dispatch costs 1021-1038 ms/event against 979-989 at pbpb30
(3 rounds of 10 events).1 parent a31a726 commit 8a18d96
4 files changed
Lines changed: 49 additions & 1 deletion
File tree
- GPU/GPUTracking/Base/metal
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
85 | 94 | | |
86 | 95 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
185 | 185 | | |
186 | 186 | | |
187 | 187 | | |
188 | | - | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
189 | 194 | | |
190 | 195 | | |
191 | 196 | | |
| |||
233 | 238 | | |
234 | 239 | | |
235 | 240 | | |
| 241 | + | |
236 | 242 | | |
237 | 243 | | |
238 | 244 | | |
| |||
252 | 258 | | |
253 | 259 | | |
254 | 260 | | |
| 261 | + | |
255 | 262 | | |
256 | 263 | | |
257 | 264 | | |
| |||
476 | 483 | | |
477 | 484 | | |
478 | 485 | | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
479 | 490 | | |
480 | 491 | | |
481 | 492 | | |
| |||
612 | 623 | | |
613 | 624 | | |
614 | 625 | | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
615 | 635 | | |
616 | 636 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
99 | 105 | | |
100 | 106 | | |
101 | 107 | | |
| |||
156 | 162 | | |
157 | 163 | | |
158 | 164 | | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
159 | 175 | | |
160 | 176 | | |
161 | 177 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
68 | 71 | | |
69 | 72 | | |
70 | 73 | | |
| |||
0 commit comments