提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、为什么要用到CUDA加速
- 二、使用步骤
- 1.CUDA安装
- 2.QT安装
- 3.编写好CUDA文件
- 4.在QT的.pro文件中配置
前言
最近在项目中需要用到GPU加速,于是在网上搜索各种资料结合自己实际采坑过程,总结了在 win10系统上,在QT中使用CUDA加速的使用方法
提示:以下是本篇文章正文内容,下面案例可供参考
一、为什么要用到CUDA加速
该项目中用到了opencv处理图像,且对于图像处理速度有很高的要求,要保证实时性,那么如果仅仅使用CPU处理,由于CPU线程数量有限,每组图像处理时间可能达到3-5s,因此不得不尝试使用CUDA加速。
二、使用步骤
1.CUDA安装
CUDA安装教程在网上有一大堆,就只需在官网下载一个CUDA软件,我这里使用的是10.0版本,其他根据自己的显卡下载就行,如果觉得下载比较慢的,使用百度网盘下载也行,资源链接在下面:
链接:https://pan.baidu.com/s/1gtqduFeSsv4QKgsyVfBndw 提取码:f2hf
安装路径可以自己选择,但一定要记得自己安装在哪里。后续要用到,我的安装在默认位置
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
2.QT安装
QT安装也是下载安装即可
3.编写好CUDA文件
将需要加速的部分写入到 .cu文件中,配合一个头文件。
4.在QT的.pro文件中配置
#此步骤是将文件中的 cu文件添加到CUDA_SOURCES变量中去,如果有多个cu文件,就添加多个, $$PWD是pro文件的当前路径
CUDA_SOURCES += $$PWD/test.cu
##将cuda安装路径添加到 CUDA_DIR变量中
CUDA_DIR = "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0"
#系统设置成win64的,32位设置成win32
SYSTEM_NAME = Win64
# 64、 32位系统
SYSTEM_TYPE = 64
#GPU算力,可看我另一篇博客如何设置
CUDA_ARCH = sm_61
#nvcc设置
NVCC_OPTIONS = --use_fast_math
#cuda的头文件目录
INCLUDEPATH += $$CUDA_DIR/include
# 导入cuda库文件路径
QMAKE_LIBDIR += "$$CUDA_DIR/lib/x64"
CUDA_INC = $$join(INCLUDEPATH,'" -I"','-I"','"')
# cuda依赖库
CUDA_LIB_NAMES += \
cuda \
cudadevrt \
cudart \
cudadevrt \
cublas \
cudart_static \
for(lib, CUDA_LIB_NAMES) {
NVCC_LIBS += -l$$lib
}
LIBS += $$NVCC_LIBS
MSVCRT_LINK_FLAG_DEBUG = "/MDd"
MSVCRT_LINK_FLAG_RELEASE = "/MD"
#生成.cu文件的obj路径
CUDA_OBJECTS_DIR = ./release/obj/
#编译
CONFIG(debug, debug|release) {
# Debug 模式
OBJECTS_DIR = debug/obj
cuda_d.input = CUDA_SOURCES
cuda_d.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}.obj
cuda_d.commands = $$CUDA_DIR/bin/nvcc.exe -D_DEBUG $$NVCC_OPTIONS $$CUDA_INC $$LIBS \
--machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH \
--compile -cudart static -g -DWIN32 -D_MBCS \
-Xcompiler $$MSVCRT_LINK_FLAG_DEBUG \
-c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
cuda_d.dependency_type = TYPE_C
QMAKE_EXTRA_COMPILERS += cuda_d
}
else {
# Release 模式
cuda.input = CUDA_SOURCES
cuda.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cu.obj
cuda.commands = $$CUDA_DIR/bin/nvcc.exe $$NVCC_OPTIONS $$CUDA_INC $$LIBS \
--machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH \
--compile -cudart static -DWIN32 -D_MBCS \
-Xcompiler $$MSVCRT_LINK_FLAG_RELEASE \
-c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
cuda.dependency_type = TYPE_C
QMAKE_EXTRA_COMPILERS += cuda
}
最终 qmake后即可成功运行