我可以访问Tesla K20c,我正在CIFAR10数据集上运行ResNet50 ...然后出现以下错误:THCudaCheck FAIL file=/opt/conda/conda-bld/pytorch_1524584710464/work/aten/src/THC/generated/../generic/THCTensorMathPointwise.cu line=265 error=59 : device-side assert triggered
Traceback (most recent call last):
File "main.py", line 109, in <module>
train(loader_train, model, criterion, optimizer)
File "main.py", line 54, in train
optimizer.step()
File "/usr/local/anaconda35/lib/python3.6/site-packages/torch/optim/sgd.py", line 93, in step
d_p.add_(weight_decay, p.data)
RuntimeError: cuda runtime error (59) : device-side assert triggered at /opt/conda/conda-bld/pytorch_1524584710464/work/aten/src/THC/generated/../generic/THCTensorMathPointwise.cu:265
如何解决此错误
小智 12
我已经多次遇到此问题。我发现这是一个索引问题。例如,如果您的地面真相标签从1开始:target = [1,2,3,4,5],则应为每个标签减去1,将其更改为:[0,1,2,3,4] 。这每次都解决了我的问题。
Ala*_*lan 11
引发“CUDA 错误:设备端断言已触发”的一种方法是使用维度索引外的RuntimeError
索引到 GPU 。torch.Tensor
list
因此,此代码片段将引发IndexError
消息“IndexError:索引 3 超出尺寸 3 的维度 0 的范围”,而不是 CUDA 错误
data = torch.randn((3,10), device=torch.device("cuda"))
data[3,:]
Run Code Online (Sandbox Code Playgroud)
然而,这会引发 CUDA“设备端断言触发”RuntimeError
data = torch.randn((3,10), device=torch.device("cuda"))
indices = [1,3]
data[indices,:]
Run Code Online (Sandbox Code Playgroud)
这可能意味着在类标签的情况下,例如@Rainy的答案,label == num_classes
当标签从1而不是0开始时,最终的类标签(即when)导致了错误。
此外,当设备是"cpu"
抛出的错误时IndexError
,例如第一个片段抛出的错误。
McL*_*nce 10
通常,在遇到cuda runtine error
s时,建议使用该CUDA_LAUNCH_BLOCKING=1
标志再次运行您的程序以获得准确的堆栈跟踪。
在您的特定情况下,对于指定数量的类,数据目标太高(或太低)。