环境说明
原环境:cuda10.0
新环境:cuda10.2
虽然说这两个版本很接近,但是直接把cuda10.0的工程打包到10.2中运行会遇到一系列问题。由于刚接触cuda不就,将这些问题都稍微微写写。
问题一:无法加载工程
初次打开从10.0拷贝过来的工程vs提示加载失败
解决方法:右键单击项目名称—>>编辑,在打开的页面中搜索 10.0 全部替换成 10.2 (原来的cuda是10.0版,新环境是10.2版)
这是cuda版本不一致造成的
问题二:找不到h、lib文件
h文件有的是自己写的,有的是cuda自带的,需要分别添加这两种h文件的路径
lib文件也是由于没有添加路径导致报错
解决方法:右键项目名称–>>属性–>>配置属性–>>vc++目录 打开以后能看到许多目录,这里要用的是包含目录和库目录,将h文件的路径添加到包含目录下,将lib文件的目录添加到库目录下
问题三:无法识别的外部符号
解决了问题二以后再次编译,提示无法识别的外部符号,都是一些常用的cuda函数如cudaEventCreate、cudaEventSynchronize等
解决方法:右键项目名称–>>属性–>>配置属性–>>链接器–>>附加依赖项 添加需要的cuda库文件名
一些常用的有:
cublas.lib
cuda.lib
cudadevrt.lib
cudart_static.lib
cudart.lib
注意:如果有自己写的lib文件也要在这里添加
问题四:找不到dll文件
这里分两种情况:一种是自己写的dll文件;另一种是cuda自带的dll文件
第一种情况:最简单的解决方法就是将自己写的dll文件复制到项目的输出文件夹下,也就是生成exe文件的地方
第二种情况:找到cuda的安装目录,参考下图,最后打开bin文件夹
根据提示的信息进行以下操作,比如我提示的是找不到cudart64_100.dll文件和cublas64_100.dll文件
找到bin文件夹下的和提示的找不到的dll文件名相似的文件,比如找不到cudart64_100.dll,但是bin文件夹下存在cudart64_102.dll文件,那么复制一份cudart64_102.dll文件改名成cudart64_100.dll,同样放在bin文件夹下。cublas64_100.dll文件一样操作,上图是复制完成以后的。