linux下如何编译CUDA+QT(qtcreator下)

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)areputbetweenquotationmark s

CUDA_INC=$$join(INCLUDEPA TH,&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$$NV CC_LIBS--machine$$SYSTEM_TYPE-arch=$$CUDA_ARCH-c-o${QMAKE_FILE_OUT}${Q MAKE_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--mac hine$$SYSTEM_TYPE-arch=$$CUDA_ARCH-O3-c-o${QMAKE_FILE_OUT}${QMAKE_FIL E_NAME}

cuda.dependency_type=TYPE_C

QMAKE_EXTRA_COMPILERS+=cuda

}

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

相关文档
最新文档