VS2008+QT中使用CUDA的示例
转载:http://www.cnblogs.com/Romi/archive/2012/05/09/2492363.html
各工具或库的版本:
IDE:VS2008
QT:4.8.0 (使用MSVC编译器)
CUDA:3.2
单独使用CUDA文件在vccc下进行编译很多书上都讲过。这里主要讲在QT中如何的使用CUDA,QT在VS2008环境下开发。
下面以宽为1024的举证乘法为例,再辅以QT GUI说明如何在VS2008的QT工程中使用CUDA,VS2010没试过,不过应该是差不多的步骤。
1.新建VS2008下QT工程
这个就不多说了,熟悉VS2008下进行QT开发的都知道怎么弄,新建一个Qt GUI程序,基类我选择的QDialog,如下:
2.设置项目属性
需要设置的项目属性包括:更改生成规则(添加对CUDA文件的编译连接支持)、添加使用CUDA需要用到的链接库(.lib文件)
首先添加生成规则:右键工程——>自定义生成规则,添加CUDA Runtime API Build Rule (v3.2),如下图:
然后添加链接库:项目——>属性——>链接器——>常规,在附加库目录中添加ToolKit和SDK目录里的lib,在输入的附加库目录下添加需要用到的lib文件。这一步和在单独使用CUDA时的做法是一样的,详见http://www.cnblogs.com/Romi/archive/2012/04/20/2459669.html
3.编写CUDA文件(.cu)
在项目中新建一个.cu的文件,加上如下代码,完成在GPU设备上进行矩阵乘法:
这里使用extern以声明函数可以在外部被调用。如果是在调用该函数的原文件中使用include “XXX.cu”,我这会出现编译错误,暂没有解决,所以使用extern
4.在Qt响应源文件中添加CUDA的引用
Qt GUI设计如下图,点击“GPU计算”按钮进行CUDA计算,后面显示计算的时间:
源文件如下(包含用到的自定义函数和按钮响应函数):
5.测试结果
测试时开了其他的应用程序,另外本机配置很戳,看看吧,使用CUDA进行加速甩了使用传统方法几条街呢
后注:代码中有点问题,测试结果也不对,后来发现了,改过的结果见该文http://www.cnblogs.com/Romi/archive/2012/05/17/2506787.html