重拾cuda的几个小问题

比较基础的几个小问题:

1、错误 1 error MSB3721: 命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2012 -ccbin "E:\VS2012\2012\VC\bin"  -IE:\matlab2013b\extern\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include\include"  -G   --keep-dir Debug -maxrregcount=0  --machine 32 --compile -cudart static  -g   -DWIN32 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd " -o Debug\mul.cu.obj "G:\test\multest\multest\multest\mul.cu"”已退出,返回代码为 1。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\CUDA 7.5.targets 604 9 multest


一大推看不懂的神马东西,解决办法重新建了一个cuda项目,然后将源程序copy到kernel.cu文件中(删掉原有的程序),我估计肯定是环境哪里没有配置对,只有强制新建一个;


2、与matlab联调之前不要将mex文件一起编译,先将kernel主函数编译通过,测试通过,再考虑mexfunction的编写

MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
1>G:\test\multest\testone\Debug\testone.exe : fatal error LNK1120: 1 个无法解析的外部命令

又是这么一段,其实就是没有主程序的入口,写上main函数进行测试即可。


3、进行mex时候出现了问题 程序如下;

 system('nvcc -c matrixMul.cu  -gencode arch=compute_50,code=sm_50 -ccbin "E:\VS2012\2012\VC\bin"')
mex matrixMulCuda.cpp matrixMul.obj -lcudart -L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64";

第一个是构建工程文件,第二个是mex成mexw64(动态链接库)

出现的错误是Error: Could not detect a compiler on local system  which can compile the specified input file(s)

原因没有在matlab上设置编译器,所以需要进行mex-setup将编译器设置一下就好。


4、矩阵乘法中线程数的计算

(矩阵维度(width)/块数(blocks))^2




你可能感兴趣的:(重拾cuda的几个小问题)