电脑基础 · 2023年3月31日

RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling `cublas‘

调用nn.linear时出现RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling `cublas’错误,搜索网上资料,主要指出以下原因:

  • batch size太大(本人将batchsize设置成4,够小吧!还是不行。。。)
  • CUDA版本和torch不匹配(本人cuda版本是10.1,pytorch版本安装的是cuda10.1+python3.8的pytorch1.6,不是这个原因)
  • torch版本问题(调换版本依旧不行)

总之一句话,网上的解决方案试了个遍都不行。后来折腾没办法,就想着不调用nn.linear,自己编写一个线性函数,发现一到矩阵乘也出现相同的问题!!!该想的办法想尽了,搞半天还是没解决,快折腾没脾气了/(ㄒoㄒ)/~~
最后,想着这个错误到底什么意思,“CUBLAS_STATUS_NOT_INITIALIZED”这个字面意思差不多是cuda状态没有初始化啊。。。于是我就到调用的文件里检测,发现,oh my god!!!(○´・д・)ノ我所有的模型调用都需要进行.cuda()的设置,只有这个类调用时没有进行cuda初始化!!!于是,我在调用的代码后加上.cuda(),果然完美解决问题!!!😀