QT + MSVC2015 + CUDA10.0,如何在QT中使用cuda加速的教程

4 篇文章 0 订阅

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

最近在项目中需要用到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后即可成功运行

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于使用Qt、OpenCV和CUDA加速图像处理的问题,你可以按照以下步骤进行操作: 1. 确保你已经正确安装了Qt、OpenCV和CUDA,并且配置正确。 2. 在Qt项目,包含OpenCV和CUDA的头文件和库文件。你可以在项目.pro文件添加类似下面的代码: ``` INCLUDEPATH += /path/to/opencv/include LIBS += -L/path/to/opencv/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs INCLUDEPATH += /path/to/cuda/include LIBS += -L/path/to/cuda/lib64 -lcudart ``` 请根据你自己的安装路径进行相应的修改。 3. 在你的代码使用OpenCV进行图像处理操作。你可以使用OpenCV的函数来加载、处理和保存图像。例如,使用`cv::imread`加载图像,使用`cv::cvtColor`进行颜色空间转换,使用`cv::cuda::GpuMat`来处理CUDA加速的图像等等。 4. 如果你想使用CUDA加速某些图像处理操作,你可以使用OpenCV的CUDA模块。例如,使用`cv::cuda::GpuMat`来存储图像数据,使用`cv::cuda::cvtColor`进行CUDA加速的颜色空间转换,使用`cv::cuda::GpuMat::upload`和`cv::cuda::GpuMat::download`在主机和设备之间传输数据等等。 5. 在你的Qt界面使用信号和槽机制来处理用户的输入和显示结果。你可以将图像显示在Qt的窗口,通过信号和槽机制更新图像的显示。 通过以上步骤,你可以在Qt结合OpenCV和CUDA实现图像处理的加速。希望对你有帮助!如果还有其他问题,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值