Commit 44f8bce
Get the hipTENSOR tests passing
The plan is the main fix: unlike cuTENSOR, hipTENSOR 2.2 does not copy the
objects a plan is built from, it keeps pointers to the operation descriptor,
the plan preference, the tensor descriptors and the mode arrays and
dereferences them on every execution. Destroying or garbage collecting any of
them gave anything from a NOT_SUPPORTED to a segfault, so the plan now owns
them all and releases them, in order, when it is freed itself.
Work around two more hipTENSOR quirks:
- its elementwise and reduction kernels ignore the mode labels and walk each
tensor in the order its modes were declared, silently producing garbage
once those orders differ. Permuting the lengths and strides in each
operand's descriptor puts them all in the output's mode order, which costs
nothing and makes arbitrary mode orders work.
- it has the two binary operators of an elementwise trinary operation the
wrong way round, so swap them to get the documented semantics.
Complex operands need a complex compute descriptor (a real one fails plan
creation with EXECUTION_FAILED), and the compute type tables are trimmed to the
combinations the library actually implements, with an error message that lists
them instead of a bare KeyError.
On the test side, contractions.jl never imported hipTENSOR and called a
compute descriptor conversion that does not exist, the type lists are cut down
to the supported combinations, and the sub-tests that were commented out are
restored. Two limitations we cannot work around are recorded there: hipTENSOR
silently ignores OP_CONJ on a contraction's inputs (@test_broken, so we notice
when that is fixed), and it rounds the elementwise α/β/γ scalars to single
precision even for a double precision compute descriptor.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent a238ec2 commit 44f8bce
10 files changed
Lines changed: 341 additions & 296 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
| 6 | + | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | | - | |
37 | | - | |
38 | | - | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| |||
121 | 121 | | |
122 | 122 | | |
123 | 123 | | |
124 | | - | |
| 124 | + | |
125 | 125 | | |
126 | | - | |
| 126 | + | |
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
| |||
225 | 225 | | |
226 | 226 | | |
227 | 227 | | |
228 | | - | |
229 | | - | |
| 228 | + | |
| 229 | + | |
230 | 230 | | |
231 | 231 | | |
232 | 232 | | |
| |||
284 | 284 | | |
285 | 285 | | |
286 | 286 | | |
287 | | - | |
288 | | - | |
| 287 | + | |
| 288 | + | |
289 | 289 | | |
290 | 290 | | |
291 | 291 | | |
| |||
319 | 319 | | |
320 | 320 | | |
321 | 321 | | |
322 | | - | |
323 | | - | |
| 322 | + | |
| 323 | + | |
324 | 324 | | |
325 | 325 | | |
326 | 326 | | |
| |||
337 | 337 | | |
338 | 338 | | |
339 | 339 | | |
340 | | - | |
| 340 | + | |
341 | 341 | | |
342 | 342 | | |
343 | 343 | | |
344 | 344 | | |
345 | 345 | | |
346 | | - | |
| 346 | + | |
347 | 347 | | |
348 | 348 | | |
349 | 349 | | |
| |||
368 | 368 | | |
369 | 369 | | |
370 | 370 | | |
371 | | - | |
| 371 | + | |
372 | 372 | | |
373 | 373 | | |
374 | 374 | | |
| |||
400 | 400 | | |
401 | 401 | | |
402 | 402 | | |
403 | | - | |
| 403 | + | |
404 | 404 | | |
405 | 405 | | |
406 | | - | |
| 406 | + | |
407 | 407 | | |
408 | | - | |
| 408 | + | |
409 | 409 | | |
410 | 410 | | |
411 | 411 | | |
| |||
419 | 419 | | |
420 | 420 | | |
421 | 421 | | |
422 | | - | |
| 422 | + | |
423 | 423 | | |
424 | | - | |
| 424 | + | |
425 | 425 | | |
426 | 426 | | |
427 | 427 | | |
428 | | - | |
| 428 | + | |
429 | 429 | | |
430 | 430 | | |
431 | 431 | | |
| |||
0 commit comments