CUBLAS_STATUS_EXECUTION_FAILED when calling cublasSgemm 解决方法

问题描述

在运行pytorch项目的时候遇到了这个问题
RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling cublasSgemm( handle, opa, opb, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)
简单描述一下我遇到的情况:
在运行Bert的SelfAttention操作时出错,定位在一个nn.Linear操作上。我在CPU上可以成功运行,但是在GPU上运行就会产生这个错误。所以怀疑是版本的问题。
直到我看见这个网页,https://discuss.pytorch.org/t/cublas-status-execution-failed-when-calling-cublassgemm-handle-opa-opb-m-n-k-alpha-a-lda-b-ldb-beta-c-ldc/116740/9
在这里插入图片描述
然后我发现这个是一个普遍的错误。
我的版本配置是python=3.8torch=1.8cuda=11.1,这个是cuda=11.1时会出现的一个错误。
假如你还无法确定自己是不是跟我有同样的问题,可以运行下面的实例代码,如果报错,说明问题是一样的:

import os
os.environ['CUDA_VISIBLE_DEVICES']='0'
import torch

class Classifier(torch.nn.Module):
    def __init__(self):
        super().__init__()
        #classifier
        self.linear_1 = torch.nn.Linear(32*8*4*8,32*8*4)
        self.linear_2 = torch.nn.Linear(32*8*4,32*8)
        self.batch_norm_1 = torch.nn.BatchNorm1d(32*8)

        self.linear_3 = torch.nn.Linear(32*8,32)
        self.linear_4 = torch.nn.Linear(32,1)

        self.activation = torch.nn.ReLU()


    def forward(self,x):
        x = x.reshape(x.shape[0], -1)
        x = self.linear_1(x)
        x = self.activation(x)
        x = self.linear_2(x)
        x = self.activation(x)
        x = self.batch_norm_1(x)

        x = self.linear_3(x)
        x = self.activation(x)
        x = self.linear_4(x)
        return x
    
net = Classifier().cuda()
inp = torch.rand(2,32,8,4,8).cuda()
gt = torch.rand(2,1).cuda()
outp = net(inp)
loss = torch.nn.BCEWithLogitsLoss()(outp, gt)
loss.backward()

解决方案

在我把cuda版本降为10.2之后就能成功运行代码了。
cuda安装指令:

conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch-lts
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
CUBLAS_STATUS_EXECUTION_FAILED when calling `cublasGemmEx`是一个CUDA错误,通常发生在使用PyTorch进行深度学习计算时。这个错误表示在调用`cublasGemmEx`函数时出现了执行失败的情况。 根据你提供的引用内容,这个错误可能有多个原因。一种可能性是维度不匹配,但你已经确认不存在这个问题。另一种可能性是CUDA设备设置不一致,可能导致错误。你可以尝试将所有文件的CUDA设备设置保持一致,看看是否解决了问题。 另外,还有一种解决方法是禁用`torch.backends.cudnn.enabled`,这可能会解决这个错误。你可以尝试在代码中添加这一行代码,看看是否有效。 最后,根据你提供的引用,你还可以尝试升级或降级PyTorch的版本,确保与你的CUDA和Python版本兼容。在这个例子中,使用了`pip uninstall torch==1.3.0 pip install torch==1.7.1 cu110 torchvision==0.8.2 cu110 torchaudio==0.7.2`来安装PyTorch 1.7.1版本。 综上所述,解决CUBLAS_STATUS_EXECUTION_FAILED when calling `cublasGemmEx`错误的方法可能包括确认维度是否匹配、统一CUDA设备设置、禁用`torch.backends.cudnn.enabled`或升级/降级PyTorch版本。你可以尝试这些方法解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [解决RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling `cubla...](https://blog.csdn.net/weixin_43519985/article/details/120142199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling `cublasSgemm 解决方案](https://blog.csdn.net/dream6985/article/details/127320711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值