|
32 | 32 | runOnRocmArch, MI200_ARCH, MI300_ARCH, MI350_ARCH, NAVI_ARCH, TEST_CUDA) |
33 | 33 | from torch.testing._internal.common_device_type import \ |
34 | 34 | (instantiate_device_type_tests, dtypes, has_cusolver, onlyCPU, skipIf, skipCUDAIfNoMagma, skipCPUIfNoLapack, precisionOverride, |
| 35 | + skipCUDAIfNoCusolverROCMIfNoMagma, |
35 | 36 | skipCUDAIfNoCusolver, skipCUDAIfNoMagmaAndNoCusolver, skipCUDAIfRocm, onlyNativeDeviceTypes, dtypesIfCUDA, |
36 | 37 | onlyCUDA, skipMeta, skipCUDAIfNotRocm, dtypesIfMPS, largeTensorTest) |
37 | 38 | from torch.testing import make_tensor |
@@ -2255,7 +2256,7 @@ def test_norm_fastpaths(self, device): |
2255 | 2256 | self.assertEqual(result, expected) |
2256 | 2257 |
|
2257 | 2258 | @skipCPUIfNoLapack |
2258 | | - @skipCUDAIfNoMagma |
| 2259 | + @skipCUDAIfNoCusolverROCMIfNoMagma |
2259 | 2260 | # NumPy computes only in float64 and complex128 precisions |
2260 | 2261 | # for float32 or complex64 results might be very different from float64 or complex128 |
2261 | 2262 | @dtypes(torch.float64, torch.complex128) |
@@ -2304,7 +2305,7 @@ def run_test(shape, *, symmetric=False): |
2304 | 2305 | run_test(shape, symmetric=True) |
2305 | 2306 |
|
2306 | 2307 | @onlyCUDA |
2307 | | - @skipCUDAIfNoMagma |
| 2308 | + @skipCUDAIfNoCusolverROCMIfNoMagma |
2308 | 2309 | @dtypes(*floating_and_complex_types()) |
2309 | 2310 | def test_eig_identity(self, device, dtype): |
2310 | 2311 |
|
@@ -2414,7 +2415,7 @@ def run_test(shape, *, symmetric=False): |
2414 | 2415 |
|
2415 | 2416 |
|
2416 | 2417 | @onlyCUDA |
2417 | | - @skipCUDAIfNoMagmaAndNoCusolver |
| 2418 | + @skipCUDAIfNoCusolverROCMIfNoMagma |
2418 | 2419 | @dtypes(*floating_and_complex_types()) |
2419 | 2420 | def test_eig_out_variants(self, device, dtype): |
2420 | 2421 | from torch.testing._internal.common_utils import random_symmetric_matrix |
@@ -2466,19 +2467,8 @@ def run_test(shape, *, symmetric=False): |
2466 | 2467 | run_test(shape, symmetric=True) |
2467 | 2468 |
|
2468 | 2469 |
|
2469 | | - @slowTest |
2470 | | - @onlyCUDA |
2471 | | - @skipCUDAIfNoMagma |
2472 | | - @dtypes(torch.float32) |
2473 | | - def test_eig_check_magma(self, device, dtype): |
2474 | | - # For CUDA inputs only matrices of size larger than 2048x2048 actually call MAGMA library |
2475 | | - shape = (2049, 2049) |
2476 | | - a = make_tensor(shape, dtype=dtype, device=device) |
2477 | | - w, v = torch.linalg.eig(a) |
2478 | | - # check correctness using eigendecomposition identity |
2479 | | - self.assertEqual(a.to(v.dtype) @ v, w * v, atol=1e-3, rtol=1e-3) |
2480 | | - |
2481 | 2470 | @onlyCUDA |
| 2471 | + @skipCUDAIfNoCusolverROCMIfNoMagma |
2482 | 2472 | @dtypes(torch.float32, torch.float64) |
2483 | 2473 | def test_eig_cuda_complex_eigenvectors(self, device, dtype): |
2484 | 2474 | """Test CUDA eigenvector decoding with known ground truth, including batching.""" |
@@ -2563,8 +2553,8 @@ def test_eig_cuda_complex_eigenvectors(self, device, dtype): |
2563 | 2553 | rhs = vals_batch.unsqueeze(-2) * vecs_batch |
2564 | 2554 | self.assertEqual(lhs, rhs, atol=1e-5, rtol=1e-5) |
2565 | 2555 |
|
2566 | | - @skipCUDAIfNoMagma |
2567 | 2556 | @skipCPUIfNoLapack |
| 2557 | + @skipCUDAIfNoCusolverROCMIfNoMagma |
2568 | 2558 | @dtypes(*floating_and_complex_types()) |
2569 | 2559 | def test_eig_errors_and_warnings(self, device, dtype): |
2570 | 2560 | # eig requires the input to be at least 2 dimensional tensor |
@@ -2626,7 +2616,7 @@ def test_eig_errors_and_warnings(self, device, dtype): |
2626 | 2616 | torch.linalg.eig(a, out=(out_w, out_v)) |
2627 | 2617 |
|
2628 | 2618 | @skipCPUIfNoLapack |
2629 | | - @skipCUDAIfNoMagma |
| 2619 | + @skipCUDAIfNoCusolverROCMIfNoMagma |
2630 | 2620 | @dtypes(*floating_and_complex_types()) |
2631 | 2621 | def test_eig_with_nan(self, device, dtype): |
2632 | 2622 | for val in [np.inf, np.nan]: |
@@ -3110,8 +3100,8 @@ def mul_svd_factors(U, S, Vh): |
3110 | 3100 | S_s = torch.svd(A, compute_uv=False).S |
3111 | 3101 | self.assertEqual(S_s, S) |
3112 | 3102 |
|
3113 | | - @skipCUDAIfNoMagmaAndNoCusolver |
3114 | 3103 | @skipCPUIfNoLapack |
| 3104 | + @skipCUDAIfNoCusolverROCMIfNoMagma |
3115 | 3105 | @dtypes(torch.complex128) |
3116 | 3106 | def test_invariance_error_spectral_decompositions(self, device, dtype): |
3117 | 3107 | make_arg = partial(make_tensor, device=device, dtype=dtype, requires_grad=True) |
|
0 commit comments