Hannibal112 2024-08-13 23:25 采纳率: 0%
浏览 7
已结题

CUDA driver error

hello,以下代码一直跑不通:

def pre_calculate(x, k, sf):
    '''
    Args:
        x: NxCxHxW, LR input
        k: NxCxhxw
        sf: integer

    Returns:
        FB, FBC, F2B, FBFy
        will be reused during iterations
    '''
    print("Type of x: ", type(x))
    print("Type of k: ", type(k))
    print("sf is: ", sf)
    print("shape of x: ", x.shape)
    print("shape of k: ", k.shape)
    w, h = x.shape[-2:]
    # Visualize x and k
    visualize_tensor(x, 'Input Image (x)')
    visualize_tensor(k, 'Kernel (k)', is_kernel=True)

    print("type of k: ", type(k))
    FB = p2o(k, (w*sf, h*sf))
    # Check for NaNs or Infinities before applying torch.abs
    if torch.isnan(FB).any():
        raise ValueError("FB contains NaNs!")
    if torch.isinf(FB).any():
        raise ValueError("FB contains Infinities!")

    FBC = torch.conj(FB)
    print ("shape of FBC: ", FBC.shape)
    print ("shape of FB: ", FB.shape)
    FB = FB.to('cuda')
    print("FB dtype:", FB.dtype)

    print ("shape of torch.abs(FB): ",torch.abs(FB).shape)
    FB_abs = torch.abs(FB)
    F2B = torch.pow(torch.abs(FB), 2)
    STy = upsample(x, sf=sf)
    FBFy = FBC*torch.fft.fftn(STy, dim=(-2, -1))
    return FB, FBC, F2B, FBFy


但是我一直在报错:


Traceback (most recent call last):
  File "/export1/project/aaron.l/DPIR-master/main_dpir_sisr_real_applications_baseline.py", line 292, in <module>
    main()
  File "/export1/project/aaron.l/DPIR-master/main_dpir_sisr_real_applications_baseline.py", line 231, in main
    FB, FBC, F2B, FBFy = sr.pre_calculate(img_L_tensor, k_tensor, sf)
  File "/export1/project/aaron.l/DPIR-master/utils/utils_sisr.py", line 181, in pre_calculate
    print ("shape of torch.abs(FB): ",torch.abs(FB).shape)
RuntimeError: CUDA driver error: invalid argument

Process finished with exit code 1

请问是为什么?

打印出来的结果为


```python
Type of x:  <class 'torch.Tensor'>
Type of k:  <class 'torch.Tensor'>
sf is:  2
shape of x:  torch.Size([1, 3, 336, 504])
shape of k:  torch.Size([1, 1, 17, 17])
type of k:  <class 'torch.Tensor'>
shape of FBC:  torch.Size([1, 1, 672, 1008])
shape of FB:  torch.Size([1, 1, 672, 1008])

```

  • 写回答

26条回答 默认 最新

  • 专家-皆知 2024-08-13 23:25
    关注
    获得0.15元问题酬金

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    从提供的信息来看,错误发生在尝试计算 torch.abs(FB) 的时候,这表明问题可能与将张量 FB 移动到 CUDA 设备上之后的操作有关。在调用 torch.abs(FB) 之前,你已经成功地将 FB 转移到了 CUDA 上,并且打印出了它的数据类型,这表明转移操作本身没有问题。

    这个错误提示“CUDA driver error: invalid argument”通常意味着在执行某个 CUDA 相关操作时,传入的参数对 CUDA 来说是无效的。尽管直接原因可能有很多,但基于你的代码上下文,一个可能的解释是,在调用 torch.abs 函数时,FB 张量中的某些部分可能包含的数据类型或者值不被 CUDA 支持进行绝对值运算。

    为了诊断和解决这个问题,你可以尝试以下几个步骤:

    步骤 1: 检查数据类型和值

    确保 FB 张量的数据类型适合在 CUDA 上进行操作。尽管你已经打印了 FB 的数据类型,但可以进一步确认是否有异常值导致问题。

    print("FB max value:", FB.max())
    print("FB min value:", FB.min())
    

    如果发现有非数字(NaN)或无穷大(Inf)的值,这可能是问题所在。尽管你在转换前已经检查了 NaNInf,但在转换到 CUDA 后,某些操作可能会引入这些问题。

    步骤 2: 尝试小范围测试

    在执行大规模操作前,尝试在较小的数据集上验证 torch.abs 是否正常工作。

    # 创建一个小的测试张量并尝试 abs 操作
    test_tensor = torch.randn(1, 1, 8, 8, device='cuda')
    try:
        torch.abs(test_tensor)
        print("Small test tensor abs operation succeeded.")
    except RuntimeError as e:
        print("Small test tensor abs operation failed with error:", str(e))
    

    步骤 3: 更新环境

    确保你的 CUDA 驱动程序是最新的,有时候旧的驱动程序可能不支持某些新特性或操作。同时,检查你的 PyTorch 版本是否兼容当前的 CUDA 版本。

    步骤 4: 显式指定数据类型

    有时显式指定数据类型可以帮助避免一些隐含的类型转换问题。虽然看起来不太可能是这里的问题,但作为排查的一部分,你可以尝试在转换到 CUDA 前明确指定数据类型。

    FB = FB.type(torch.cuda.FloatTensor)  # 或者 torch.cuda.DoubleTensor 根据需求
    

    步骤 5: 检查内存状况

    虽然不直接关联到此错误信息,但内存不足也可能导致各种奇怪的问题。确保 GPU 内存足够运行你的代码。

    如果以上步骤都不能解决问题,可能需要更深入地调试或考虑是否存在特定硬件/软件配置的问题。希望这些步骤能帮助你定位并解决问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月21日
  • 创建了问题 8月13日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?