首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RuntimeError: cuDNN错误:使用pytorch的CUDNN_STATUS_NOT_INITIALIZED

RuntimeError: cuDNN错误:使用pytorch的CUDNN_STATUS_NOT_INITIALIZED
EN

Stack Overflow用户
提问于 2021-03-12 02:50:21
回答 3查看 15.7K关注 0票数 9

我正在尝试运行一个简单的pytorch示例代码。它在使用CPU时运行得很好。但在使用GPU时,我收到以下错误消息:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/conv.py", line 263, in forward
    return self._conv_forward(input, self.weight, self.bias)
  File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/conv.py", line 260, in _conv_forward
    self.padding, self.dilation, self.groups)
RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED

我尝试运行的代码如下:

代码语言:javascript
运行
复制
import torch
from torch import nn
m = nn.Conv1d(16, 33, 3, stride=2)
m=m.to('cuda')
input = torch.randn(20, 16, 50)
input=input.to('cuda')
output = m(input)

我在带有CUDA版本10.2的NVIDIA docker中运行此代码,我的GPU是RTX 2070

EN

Stack Overflow用户

发布于 2021-11-02 09:44:13

在我的例子中,它实际上与PyTorch/CUDA/cuDNN版本没有任何关系。每当第一次执行卷积时,PyTorch都会惰性地初始化cuDNN。然而,在我的例子中,没有足够的图形处理器内存来初始化cuDNN,因为PyTorch本身已经在其内部缓存中保留了整个内存。可以在执行第一次卷积之前使用"torch.cuda.empty_cache()“手动释放缓存。一个更干净的解决方案是在开始时通过执行模拟卷积来强制cuDNN初始化:

代码语言:javascript
运行
复制
def force_cudnn_initialization():
    s = 32
    dev = torch.device('cuda')
    torch.nn.functional.conv2d(torch.zeros(s, s, s, s, device=dev), torch.zeros(s, s, s, s, device=dev))

在程序一开始就调用上面的函数为我解决了这个问题。

票数 6
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66588715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档