toierutoiuerot 2024-07-25 17:38 采纳率: 0%
浏览 1044

pytorch用gpu训练,出现Attempting to run cuBLAS

pytorch用gpu训练,能正常训练但是会遇到Attempting to run cuBLAS, but there was no current CUDA context! Attempting to set the primary context,的警告是什么问题呢

img

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-07-25 17:38
    关注

    引自免费微信小程序:皆我百晓生

    这个问题是关于 PyTorch 使用 GPU 进行训练时遇到的警告。警告信息 "Attempting to run cuBLAS, but there was no current CUDA context! Attempting to set the primary context" 通常表明在某些操作中试图使用 cuBLAS(CUDA 基础线性代数子程序库)时,没有当前的 CUDA 上下文。这可能是由于在代码中某些地方对 CUDA 上下文的创建和管理不当导致的。

    解决这个问题的方法通常涉及确保在涉及 GPU 操作之前正确创建和管理 CUDA 上下文。下面是一些可能的解决方案:

    1. 确保在调用任何涉及 GPU 的操作之前初始化 CUDA 设备。你可以在代码的开始部分添加如下代码来初始化 CUDA 设备:
    import torch
    torch.cuda.init()  # 初始化 CUDA 设备
    
    1. 如果你在代码中使用了多线程或多进程,确保每个线程或进程都有自己的 CUDA 上下文。在某些情况下,多个线程或进程可能尝试同时访问同一 CUDA 设备,导致这种警告。确保在每个线程或进程的范围内正确地管理 CUDA 上下文的创建和销毁。
    2. 检查 PyTorch 版本是否与你的 CUDA 版本兼容。有时候,不同的 PyTorch 版本与不同的 CUDA 版本之间可能存在兼容性问题,可能导致此类警告。尝试升级或降级 PyTorch 版本以解决兼容性问题。
    3. 确保你的代码中涉及的 GPU 操作都在正确的设备上执行。你可以使用 torch.device 来指定操作应在哪个设备上执行。例如:
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")  # 指定设备为 GPU 或 CPU
    

    然后,将你的张量或模型移动到相应的设备上:

    tensor = tensor.to(device)  # 将张量移动到指定设备
    model = model.to(device)  # 将模型移动到指定设备
    

    尝试以上解决方案,看看是否能解决你遇到的问题。如果问题仍然存在,可能需要更深入地检查代码,以确保 CUDA 上下文的正确使用和管理。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 7月25日
  • 创建了问题 7月25日