PyTorch 错误:使用稀疏张量调用线性求解器需要使用 CUDA cuDSS 编译 PyTorch,并且在 ROCm 构建中不受支持

问题描述 投票:0回答:1

我正在尝试使用

torch.sparse.spsolve
来求解线性方程组,如下所示:

    A_sparse = torch.sparse_coo_tensor(indices, values, size=(eq_counter, self.num_regions))
    A_sparse_csr = A_sparse.to_sparse_csr()  
    A_sparse_csr = A_sparse_csr.cuda()

    # Create dense vector b
    b = torch.tensor(b_values, dtype=slopes.dtype, device=slopes.device)
    b = b.cuda()


    # Solve the linear system A c = b using torch.sparse.spsolve
    intercepts = torch.sparse.spsolve(A_sparse_csr, b)  # Shape: (num_regions,)

但是,我收到以下奇怪的错误 - > RuntimeError:使用稀疏张量调用线性求解器需要使用 CUDA cuDSS 编译 PyTorch,并且在 ROCm 构建中不受支持。

我有 Nvidia RTX 40 系列显卡,所以我不明白为什么 ROCm 构建(与 AMD GPU 相关)甚至相关/出现在错误中?我尝试使用以下代码片段诊断错误:

print(f"PyTorch Version: {torch.__version__}")
print(f"CUDA Version: {torch.version.cuda}")
print(f"Is CUDA Available: {torch.cuda.is_available()}")

# Check the current CUDA device
if torch.cuda.is_available():
   print(f"Current CUDA Device: {torch.cuda.current_device()}")
   print(f"Device Name: {torch.cuda.get_device_name(torch.cuda.current_device())}")

输出符合预期:

PyTorch Version: 2.5.1+cu124
CUDA Version: 12.4
Is CUDA Available: True
Current CUDA Device: 0
Device Name: NVIDIA GeForce RTX 4090

所以我真的不知道问题是什么,非常感谢解决此问题的任何帮助!预先感谢

python pytorch sparse-matrix
1个回答
0
投票

运行时错误:使用稀疏张量调用线性求解器需要 使用 CUDA cuDSS 编译 PyTorch,ROCm 构建不支持。

这意味着要使用

torch.sparse.spsolve
,你必须

  1. 使用 cuDSS(这是一个 C++ lib编译 Pytorch,而不是使用
    pip install torch
    中的 pytorch 二进制文件。
  2. 使用 Nvidia GPU(AMD GPU 的 ROCm 版本不支持)。

你已经在使用RTX 4090时提出了第二点,所以你只需要安装cuDSS并从源代码编译pytorch,参考https://github.com/pytorch/pytorch?tab=readme-ov-文件#from-source。请注意,您应该在编译之前

export USE_CUDSS=1

使用编译好的pytorch和cuDSS,以下演示代码运行正常。 演示代码

© www.soinside.com 2019 - 2024. All rights reserved.