有谁能告诉我如何编译CUDA-NPP示例代码网站上的boxFilter程序? 'make'给出了一个关于common_npplib.mk的错误 - 我找不到common_npplib.mk但它包含在makefile中。 无论如何,我试过这个:
g++ -I../../common/UtilNPP -I../../../shared/inc -I../../common/FreeImage -I/usr/global/cuda/4.0/cuda/include -L/usr/global/cuda/4.0/cuda/lib64 -L../../common/FreeImage/lib/linux -L../../../shared/lib -lnpp -lcudart -lUtilNPP_x86_64 -lfreeimage64 -o bf boxFilterNPP.cpp
这再次导致错误。
它找不到-lUtilNPP_x86_64和-lfreeimage64。
没有这些2进行编译会产生很多错误,例如对npp::Image::Image()
等的未定义引用。
尽快帮助,谢谢!
答案 0 :(得分:2)
我已经重现了您找到的错误。我假设您下载了个人boxFilter sample。
该档案肯定缺少common_npplib.mk。我将向CUDA SDK报告此错误 团队并纠正。与此同时,我认为如果你下载整个SDK而不是单个样本,你将有更好的运气编译。
访问http://developer.nvidia.com/cuda-toolkit-41并查找“GPU Computing SDK下载”,并为您的操作系统下载相应的一个。我建议你按照自述文件中的说明进行操作,以便在直接进入boxFilter并输入make之前构建样本 - 它可能依赖于首先构建一些实用程序库。
答案 1 :(得分:1)
我下载了你提到的tarball,首先构建静态的UtilNPP lib。您需要在相应的目录中编辑CUDA_INSTALL_PATH变量,例如,define.mk的第45-47行:
#ifdef cuda-install
CUDA_INSTALL_PATH := /usr/global/cuda/4.1/cuda
#endif
然后我从包含源代码的目录中编写/获取了以下构建脚本:
module load cuda/4.1
shlib="-L/usr/global/cuda/4.1/cuda/lib64/ -lnpp"
inc="-I../../common/UtilNPP -I../../common/FreeImage/include -I../../../shared/inc -I/usr/global/cuda/4.1/cuda/include/"
stlib="../../common/lib/libUtilNPP_x86_64.a ../../common/FreeImage/lib/linux /libfreeimage64.a"
nvcc $inc $stlib $shlib boxFilterNPP.cpp -o foo.x
./ foo.x运行良好;您当然需要更改cuda安装路径以适合您的安装,如果您不使用模块系统,请确保您的LD_LIBRARY_PATH正确等等希望这有帮助