初识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的了,而且也希望它能够发展的越来越好,否则自己我一翻努力可就打水漂了,呵呵!
以上的感觉都是自己饭后随便那么一想,没有什么根据也没经过深思熟虑,但愿自己这个井底之蛙没有误导别人,呵呵!
下载了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的了,而且也希望它能够发展的越来越好,否则自己我一翻努力可就打水漂了,呵呵!
以上的感觉都是自己饭后随便那么一想,没有什么根据也没经过深思熟虑,但愿自己这个井底之蛙没有误导别人,呵呵!
相关文章推荐
- 初识CUDA与Stream
- 初识CUDA
- 初识ADO.net-访问数据的两种方式
- UML初识__基本图元
- Caffe深度学习框架安装(Ubuntu14.04+cuda8.0)
- Ubuntu16.04 Anaconda+Theano+Cuda8.0+Cudnn5.1+keras配置
- CUDA统计时间
- IOS -多线程 - GCD - 初识
- 初识在Spring Boot中使用JPA
- [置顶] 初识HashMap(一)
- CUDA编程基本概念与矩阵运算
- cuda编程学习2——add
- cudaMemcpyToSymbol 和cudaMemcpy
- MPU6050开发 -- 初识
- Cuda编程总结--cuda c programming Guide
- 初识backbone.js(1)
- vs2013+cuda6.5
- 三、初识shell
- cuda纹理内存
- Node js 探讨之 初识node