前言:最近想把写的MFC项目改成QT,MFC项目中用了CUDA实现实时运算,所以QT也得要。
安装CUDA
具体看我的另一篇博客C++学习|CUDA安装和配置。
Qt Creator的.pro配置
在pro中添加如下代码,其中cuda安装地址相关的、cuda文件名以及CUDA_ARCH(显卡相关)要进行修改。
注意cuda默认安装路径会有空格,因为QT不支持路径有空格,可以把安装好的cuda内容新建到另一个文件下,来写入路径。
CUDA_ARCH可以根据显卡型号和CUDA版本查看网站(https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/)中的表格。
cpp
INCLUDEPATH +=E:/CUDASDK/v10.2/include
LIBS +=-LE:/CUDASDK/v10.2/lib/x64 \
-lcublas -lcuda -lcudadevrt \
-lcudart -lopengl32 -lcudart_static -lcufft \
-lcufftw -lcurand -lcusolver -lcusparse
OTHER_FILES +=$$PWD/process.cu
CUDA_SOURCES +=$$PWD/process.cu
CUDA_SDK ="E:/CUDASDK/v10.2"
CUDA_DIR ="E:/CUDASDK/v10.2"
QMAKE_LIBDIR += $$CUDA_DIR/lib/x64
SYSTEM_TYPE = 64
CUDA_ARCH = sm_70
NVCCFLAGS = --use_fast_math
CUDA_INC = $$join("E:/CUDASDK/v10.2/include",'" -I"','-I"','"')
MSVCRT_LINK_FLAG_DEBUG = "/MDd"
MSVCRT_LINK_FLAG_RELEASE = "/MD"
CUDA_OBJECTS_DIR = ./
CONFIG(debug, debug|release) {
# Debug mode
cuda.input = CUDA_SOURCES
cuda.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}process.obj
cuda.commands = $$CUDA_DIR/bin/nvcc.exe -D_DEBUG $$NVCC_OPTIONS $$CUDA_INC $$CUDA_LIBS --machine $$SYSTEM_TYPE \
-arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} -Xcompiler $$MSVCRT_LINK_FLAG_DEBUG
cuda.dependency_type = TYPE_C
QMAKE_EXTRA_COMPILERS += cuda
}
else {
# Release mode
cuda.input = CUDA_SOURCES
cuda.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}process.obj
cuda.commands = $$CUDA_DIR/bin/nvcc.exe $$NVCC_OPTIONS $$CUDA_INC $$CUDA_LIBS --machine $$SYSTEM_TYPE \
-arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} -Xcompiler $$MSVCRT_LINK_FLAG_RELEASE
cuda.dependency_type = TYPE_C
QMAKE_EXTRA_COMPILERS += cuda
}