由于工作需要在Qt中调用CUDA做并行计算,加速算法实现时间,发现有两种方法可以在Qt中调用CUDA代码。
第一种是在项目中创建CUDA的cu文件,编写CUDA的核函数给其他的QT代码调用,Qt的代码正常编译,CUDA代码使用nvcc编译器编译。这种方法只要配置一下pro文件就可以了,适合CUDA代码比较少的项目,只需要几个核函数调用CUDA进行一下加速运算,具体方法可以看我的另一篇博客:QT+CUDA 同时编译Qt和CUDA代码文章浏览阅读1k次,点赞29次,收藏13次。工作需要把cuda的代码移植到QT中,和Qt项目一起编译,这里记录一下。_qt win .exe加cudahttps://blog.youkuaiyun.com/Sakuya__/article/details/141264954?spm=1001.2014.3001.5502
第二种是把CUDA代码编译成动态链接库,Qt程序直接调用动态链接库中的接口,就像调用其他C++库一样。这种方法适合CUDA代码比较多的项目,比如用CUDA代码实现了一整个深度学习算法,有几十上百个CUDA文件,并且互相包含引用。这时候第一种方法在编译时就可能会有问题,并且也不好进行管理。
这里记录一下把CUDA代码编译成动态链接库的过程。
一、编译CUDA的动态链接库
1.创建动态链接库工程
我使用的是VS2022,建立工程,选择具有导出项的动态链接库
项目名称是CudaDynamicCores,这是我创建完成后的项目目录结构
点击项目名称,右键 —> 生成依赖项 —> 生成自定义,勾选上你要用的CUDA版本,然后点击确定
2.添加CUDA文件
点击项目名称,右键选择添加—>新建项
选择添加CUDA文件,命名为Test.cu: