关于CUDA环境下使用nvcc遇到的问题:nvcc error 'cudafe++' died with status 0xC0000005 (ACCESS VIOLATION)

问题重述

在这里插入图片描述

C:\Postgraduate\CUDA> nvcc  .\Grid_Block.cu -o Grid_Block.exe
Grid_Block.cu
nvcc error  'cudafe++' died with status 0xC0000005(ACCESS VIOLATION)

解决方案

遇到这个问题的时候,找不到报错的源头所在,没法入手解决,在参考了大多数方案(包括但不限于驱动自带问题、CUDA版本问题、VS版本问题)后皆无效,一度怀疑是显卡的问题,自从浏览到Stack Overflow上的一个帖子nvcc error : ‘cudafe++’ died with status 0xC0000005 (ACCESS_VIOLATION),他提供的大致解决思路是临时修改cl.exe路径来帮助nvcc调用64位程序以成功编译文件(尝试他的方案未成功)。
但是根据他的思路,尝试通过环境变量解决。

Step 01

寻找Microsoft Visual Studio 20xx的安装路径,这个要看每个人自己的安装的路径,这里提供默认安装路径

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\bin\Hostx64\x64

在这个路径下面可以找到cl.exe,这里特别需要注意的是x86x64,这是根源所在,由于硬件设备可能不支持x86程序,所以一定找x64下的程序。
在这里插入图片描述

Step 02

打开环境变量编辑器,在系统环境变量中修改Path(删除原来的,添加新的正确路径)。
需要强调一下,默认的环境变量中可能存在...\x86(省略号表示和上一步中的路径相同),这个应该是安装VS时添加的默认位置,必须删除!!!因为它可能会被优先调用,如果担心出现问题,请先备份路径。
在这里插入图片描述

Step 03

重启终端或者使用nvcc的应用(因为他们可能会缓存环境变量),再次尝试编译,Success!
在这里插入图片描述

end

如果你也遇到了类似的问题,并根据此方案解决,那可太棒啦!
同时,还考虑一个问题,这里出问题的是VS的cl.exe,所以使用2019版本的VS可能不存在这个问题呢?可以换版本试试看。

Logo

欢迎来到FlagOS开发社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐