您的位置:首页 > 其它

初识CUDA

2010-08-04 15:24 197 查看
  CUDA出来已经有三年的历史了,自己去年接触图形学的知识以来就知道这个通用计算的利器,当然也听说了它的难学以及难以调试,就一直没有学习。最近的一些项目用到了CUDA的东西,这使得自己把学习CUDA放在比较重要的位置。

  下载了CUDA Toolkit,SDK安装上,又买了一本《GPU高性能运算之CUDA》,并从网上下载了一些小的指南之类的东西,算是开始了自己的CUDA学习。

  最开始安装了之后,在VS2005的环境里一些例子都不能正常运行,但是用VS2008就可以运行,自己调试了一会儿搞不出来结果就没再管它了,但买的书中的例子一些也不能正常运行,应该是nvcc的配置不正确,或者根本就没有用到nvcc来进行编译,总之是一堆问题,让自己对CUDA这个东西更是心有疑虑!不过还是从网上找了一些不错的指南,以及随着看书对CUDA软硬件的结构有了一定的了解,这些问题都逐渐明朗,也得到了解决。

  总结一下我遇到的问题:

环境变量的配置有一些问题,有一些SDK里的头文件和库文件并没有在VS里得到正确的设置

把SDK里的例子拷贝到硬盘的别的目录时,工程属性里的一些头文件和库文件及输出目录都要进行调整

在编译.cu文件时,要保证指向的位置有Cuda.rules文件,这非常重要,否则就不能进行正常编译

如何使VAssistX也能够对.cu, .cuh文件进行正确识别

  参考买的书上的说明与网上的一些资料,总算是搞定了这些问题,自己查到的资料有:

http://blog.csdn.net/you_huang2010/archive/2010/01/19/5206903.aspx

http://cuda.csdn.net/

  其中第二个网站个人认为挺好的,很多学习CUDA的人在上面进行交流,也有一些用的比较熟的人在上面写一些技术性的文章,还是比较值得注意的。而且网站上的一些指南和中文参考手册等也都挺有帮助,特别是对于我这种英文不行的人,呵呵!《GPU高性能运算之CUDA》我认为是一本挺不错的CUDA的书,虽然我还没有看完,但是由于中文书的严重欠缺,我觉得这本还是挺好的,只是我觉得这本书一开始的例子并不是如何简单易懂,而且讲到有点儿乱,不像一般的编程书里第一个例子能良好的看到程序语言的特性,又能让人轻易的看到输入与输出的效果。当然这与CUDA的特性有关,但我觉得还能做的更好,不知道有没有看过这本书前几页试了试不行被吓走的人,呵呵!

  我觉得从template里创建自己的程序还是不难的,但是由于需要改动比较多的名字(需要把template都改成自己的工程名字)还是挺不方便的,我还是喜欢类似于DX里的那种EmptyProject工程的创建方法,呵呵!不过从空白工程里创建也不是特别费事,在《深入浅出CUDA》这个小册子里就有讲,这也是一个不错的小册子,讲的东西也是挺适合入门的人看。还看到赵开勇分布有一个Wizzard下载了还没用,挺多人用,应该是比较省事的!

  虽然对于我来说学习CUDA已经是必然的事,但学会了之后能不用的地方我还是不想用,我对CUDA的前途还是有疑虑的,虽然目前看起来是那么的光明,我之所以有这样的感觉有如下的原因:

目前编程语言的发展方向都是简单易用,例如Python等语言的兴起就可以看出来,开发难度肯定会是CUDA发展的一个很大的障碍:在GPU程序的难以调试,虽然可以用CPU进行模拟运行,但速度太慢并且结果并不一定正确;nvcc还需要很大程度的提高;开发需要考虑的硬件因素太多,我写程序还没多久,传说中的考虑各种硬件的开发我可不太想做,而CUDA跟硬件的紧密耦合势必让它的开发难度很大;由于memory引起的问题不能正确解决甚至正确提示,程序员需要自己来管理显存(及thread里的自有存储器),如果超过了硬件显存的范围,引起的问题是不确定的。

CUDA的并行架构确实杰出,但对于分支等的支持确实让人不敢恭维,这也是并行架构难以取代目前主流的CPU的一个原因。个人感觉以后发展会是CPU与GPU协同工作,任务究竟在哪个上面执行取决于任务的并行程度,而并行程度的判断与优化是机器自己来判断的,而不是程序员来指定自己的程序究竟是在CPU还是GPU上执行。这种思想也存在一段时间,但是实现的困难还是挺多的。这一方面的不明朗也是CUDA及至并行架构发展的一个障碍

  无论如何自己总是要学习CUDA的了,而且也希望它能够发展的越来越好,否则自己我一翻努力可就打水漂了,呵呵!

  以上的感觉都是自己饭后随便那么一想,没有什么根据也没经过深思熟虑,但愿自己这个井底之蛙没有误导别人,呵呵!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: