linux下如何编译CUDA+QT(qtcreator下) 联系客服

发布时间 : 星期二 文章linux下如何编译CUDA+QT(qtcreator下)更新完毕开始阅读65811454915f804d2b16c1c5

1、问题

目前Cuda进行gpu加速非常流行,qt在linux和windows上跨平台开发同样很受欢迎。那么如何让qt+cuda在linux下一个项目内同时编译,让软件开发人员省去编译环境配置的麻烦呢?我们将解决如何将cuda的nv编译环境,集成到qt项目中。:.

linux系统+GT640显卡 qtcreator2.8+qt4.7.4+cuda5.0:.

先看一下我已经配置好的qt项目,在资源管理器中,已经可以看到普通C/C++代码和cuda代码是分开显示的。这个是qt设置的问题,但是已经可以在一起编译执行了。 具体操作,修改qt项目配置文件pro,在配置后面加入如下代码,我们就实现了qt+cuda的交叉编译。

让你的项目可以看到后缀cu的cuda代码文件

OTHER_FILES+=./Bll/ImageReconstruction/Cuda/CudaFDK.cu\\ ./Bll/ImageReconstruction/Cuda/CudaFDK_kernel.cu\\ ./Bll/ImageReconstruction/Cuda/CudaFDK_SS.cu\\ ./Bll/ImageReconstruction/Cuda/CudaFDK_SS_kernel.cu CUDA配置,具体按照你系统环境更改

CUDA_SOURCES+=./Bll/ImageReconstruction/Cuda/CudaFDK.cu\\ ./Bll/ImageReconstruction/Cuda/CudaFDK_kernel.cu\\ ./Bll/ImageReconstruction/Cuda/CudaFDK_SS.cu\\ ./Bll/ImageReconstruction/Cuda/CudaFDK_SS_kernel.cu CUDA_SDK=/usr/local/cuda-5.0/cudaSDK路径 CUDA_DIR=/usr/local/cuda-5.0/CUDAtookit路径

SYSTEM_NAME=linux自己系统环境&39;Win32&39;,&39;x64&39;,or&39;Win64&39; SYSTEM_TYPE=32操作系统位数&39;32&39;or&39;64&39;,

CUDA_ARCH=sm_21cuda

构,forexample&39;pute_10&39;,&39;pute_11&39;,&39;sm_10&39;

NVCC_OPTIONS=--use_fast_math includepaths

INCLUDEPATH+=$$CUDA_DIR/include librarydirectories

QMAKE_LIBDIR+=$$CUDA_DIR/lib/ CUDA_OBJECTS_DIR=./

ThefollowinglibraryconflictswithsomethinginCuda

QMAKE_LFLAGS_RELEASE=/NODEFAULTLIB:msvcrt.lib QMAKE_LFLAGS_DEBUG=/NODEFAULTLIB:msvcrtd.lib Addthenecessarylibraries CUDA_LIBS=cudartcufft

Thefollowingmakessureallpathnames(whichoftenincludespaces)areputbetweenquotationmarks

CUDA_INC=$$join(INCLUDEPATH,&39;-I&39;,&39;-I&39;,&39;&39;) NVCC_LIBS=$$join(CUDA_LIBS,&39;-l&39;,&39;-l&39;,&39;&39;) LIBS+=$$join(CUDA_LIBS,&39;.so&39;,&39;&39;,&39;.so&39;) ConfigurationoftheCudapiler CONFIG(debug,debug|release){ Debugmode

cuda_d.input=CUDA_SOURCES

cuda_d.output=$$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.o

cuda_dmands=$$CUDA_DIR/bin/nv-D_DEBUG$$NVCC_OPTIONS$$CUDA_INC$$NVCC_LIBS--machine$$SYSTEM_TYPE-arch=$$CUDA_ARCH-c-o${QMAKE_FILE_OUT}${QMAKE_FILE_NAME}

cuda_d.dependency_type=TYPE_C QMAKE_EXTRA_COMPILERS+=cuda_d } else{ Releasemode

cuda.input=CUDA_SOURCES

cuda.output=$$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.o

cudamands=$$CUDA_DIR/bin/nv$$NVCC_OPTIONS$$CUDA_INC$$NVCC_LIBS--machine$$SYSTEM_TYPE-arch=$$CUDA_ARCH-O3-c-o${QMAKE_FILE_OUT}${QMAKE_FILE_NAME}

cuda.dependency_type=TYPE_C QMAKE_EXTRA_COMPILERS+=cuda }

将nv编译和qmake编译集成到一起的好处就是,软件开发人员不需要头疼两种混合编译器的配置,只需要关注程序编写即可。