|
发表于 2011-11-8 17:54:56 56040
|
| 褚艳利 |
| 2009年CUDA校园程序设计大赛三等奖获得者,全球第一本CUDA书籍主要作者,总编撰,现任阿里巴巴公司平台架构工程师。 |
|
| 陈羽北 |
| 2010年CUDA校园程序设计大赛二等奖获得者,最年轻获奖者,现为清华大学四年级学生。 |
视频访谈地址:http://cuda.it168.com/topic/2011/11-8/hjxs/index.html
2011年10月23日上午9:00
褚艳利 阿里巴巴公司平台架构工程师
陈羽北 清华大学大四学生
主持人:
各位网友朋友们,大家好,欢迎收看IT168专家访谈节目,我是CUDA频道的编辑王玉圆,今天我们有幸邀到CUDA校园程序设计大赛的往届获奖选手。先请他们给我们做一下自我介绍。
陈羽北:
大家好,我是来自清华大学的本科四年级学生陈羽北。
褚艳利:
大家好,我是2009年,第一届CUDA程序设计大赛的获奖选手,我是三等奖。现在是阿里的一名普通的开发工程师。
主持人:
两位作为CUDA校园程序设计大赛的获奖选手,能不能给我们介绍一下,当时的获奖作品呢?
陈羽北:
我们当时是在清华大学(邓仰东)副教授的指导下,做了一个逻辑仿真程序的加速在GPU上,因为现在当代SOC设计,70%的时间都花在逻辑仿真验证上,非常的消耗时间,我们当时采用一个比较主流的CMB算法进行加速,借助GPU比较强大的平台,获得了平均十几倍到二十几倍一个加速效果。
褚艳利:
我当时做的是一个基于CSR格式的一个稀疏矩阵矢量乘这样一个基础算法,然后为什么会选择做这个题目,因为在一些大型的线程系统和特征值问题解决方面,每次在迭代的过程中,其实大部分的时间都用在这个稀疏矩阵的乘法上面,非常耗时一个操作,所以我们集中解决这个点。当时也是获得一个差不多十五倍的加速比,觉得还比较的不错。
主持人:
我们这次做这个项目,然后获得了加速比之外,还有没有什么应用价值?
陈羽北:
这个项目主要就是我们希望把它后续的,做成一款专门的加速器,因为本身SOC的市场还是很大的,我们都希望把很多有一些那种专门进行电路设计,以及逻辑仿真的公司,他们都面临这样一个时间消耗的问题,我们其实后续继续的把它发展称为一个可以用的,专门用来加速的一个平台。
主持人:
相当于一个应用程序是吗?
陈羽北:
对,其实希望把它借助GPU做成一个可以发布的供其他研究者和工业界的一个使用的东西,我们现在正在进行这个项目。
褚艳利:
我这个作为基础算法,最终还是希望放到库里面,各个方面都可以用得到。
主持人:
两位在参加CUDA校园程序设计大赛时候,有没有遇到什么困难?
陈羽北:
我觉得当时遇到一个比较大的困难,因为也是刚接触GPU编程这一类问题,当时调试对我来说是比较新的问题,以前一直是用gdb,现在当CUDA出来之后,我们面临多线程调试的时候,可能比如说写的程序有死锁,可能很多时候不按你想象的那样执行,你需要用CUDA的gdb,一个线程一个线程一步一步的看,当你线程非常多的时候,这可能就是一个很麻烦的工作,因为你可能找很久很久,连续的调十几个小时,二十几个小时,发现一个bug,非常的兴奋,这是一个问题。
第二个问题是对CUDA当时的架构理解还不是那么清楚,即使现在也不是那么清楚,但是比当时好很多,当时由于不是很清楚,涉及到这些内存应该怎么用,怎么分配,访存的模式应该是什么样的。如果做不好的话,很有可能一个不小心的疏忽,没有进行合并访存,或者进行了合并访存,可能一下程序四五倍的性能就差出去了。所以可能这是当时遇到两个比较大的困难。
褚艳利:
我当时因为其实是业余时间做这个,时间是我最大困难,我们当时做的时候,先是查的很多的论文,然后我们发现,其实这个东西做的比较成熟的在CPU上,然后效率还不错,然后有相关数据结构的设计等等,都有一些比较成熟的,比较好的设计,我们做的时候想怎么能比人家更好,更快,所以当时也是从三个方面着手。
你能不能让你的占用率,GPU最大化占用率最高,最大化存储器的吞吐量,这几个方面,然后就不断的优化你的程序,不断的跟它比较,然后就做成一个效果比较好的这样一个作品,大概这样子。
主持人:
我们知道两位都是获奖选手,陈羽北是最年轻的获奖者,CUDA程序竞赛是最年轻的获奖者。然后褚艳利也是获得了三等奖,而且写了一本CUDA方面的书。《GPU高性能计算之CUDA》,应该是主编?
褚艳利:
对。
主持人:
我想问一下,你们对获奖的有没有什么秘诀?经验什么的谈一谈。
陈羽北:
我其实觉得,因为我当时也是在实验室参与这个小组项目,我觉得合作的人很重要,因为当时的学长帮助,他们也做出非常多的比较卓越的贡献,一个是合作人很重要,第二是指导老师非常重要,你选择一个合适的题目,我们且不说这个事情是不是最后一定会做的非常的漂亮,但是我们说它的题目选择也是非常关键,直接涉及你是不是可以做,做出来的结果可能会是怎么样的,解决的问题是不是够好,我觉得这个是一个很重要的经验,选择合适的合作者,以及合适的指导老师。
第二个经验,要很耐心,因为程序做加速的时候,因为你可能一个很小很小问题,真的很小的问题,最后看到这个问题的时候你想笑,但是你如果不耐心的调试二三十个小时,你就找不到它。
第二个就是要认真的学习,因为接触这些新的平台,我们要尝试一些新的想法,可能和以前完全不一样,在接触一些新的问题的时候,不要保守自己以前的知识什么的,要去研究这种新的问题。
主持人:
创新?
陈羽北:
主要是接受新的概念。
主持人:
褚艳利呢?
褚艳利:
我的获奖秘诀其实说白了就是两个字“尝试”,不断的进行尝试,要把CPU那种思维走出来,然后逐渐的进入到一种并行的思维里面去,除了数据几个并行,我当时还尝试了“流”,就是比较偏任务级这样一个并行,当时也是GPU有七八种内存,一个庞大的内存模型,我当时我跟我的战友们,基本上八种都有用到,觉得这个尝试过程还是蛮美妙,有的时候你觉得可能用Texture Memory更好,但是出来的结果却很让失望,然后自己写一些Benchmark进行测试,不断的调用,这个过程很重要,跟自己的战友一起合作,很享受这个过程。
最大的秘诀就是“尝试”,并且几个人共同的努力。
主持人:
两位都是团队作战是吗?
陈羽北:
都是团队。
主持人:
团队之间有没有什么矛盾?
陈羽北:
矛盾?我觉得我们一向的很和谐,只是可能对有些问题会有一些争论,但是这仍然不是什么问题。
褚艳利:
我觉得我们分工比较多一点。
主持人:
主要怎么分工?
褚艳利:
比如说我,主要是提出一些我的想法,实践会分成不同的阶段怎么样,有的写Benchmark做测试,有的就是具体负责编码等等的。最大的问题就是时间,因为是业余时间在做。
主持人:
大家都是业余时间?
褚艳利:
都是业余时间做。
主持人:
你当时是这个团队负责人?
褚艳利:
算是。
主持人:
你分配任务给大家?
褚艳利:
自己闷着头做也不行,你得看看人家做这个题目的同学,他们做的是一个什么样子,同时翻阅非常多论文,你看看人家之前做的效果,如果你现在做的效果还没有之前做的好,一切都白费了,没有任何的价值。
主持人:
两个人在学习CUDA过程当中,开始怎么接触到CUDA的?
陈羽北:
CUDA,主要是根据我研究的兴趣有关,因为我当时在实验室里面,我们实验室主要是做的GPU架构的研究,你做GPU架构研究,如果不真正用GPU做一些程序,你真的谈不上GPU架构的研究,因为你说你没有用过它,你不能凭空想象它是怎么样的,你必须有一些第一手经验,我做这个程序的时候,出现了什么问题?我怎么解决它,这个过程中我认识它有什么问题,我怎么样对它进行改进,于是我拿仿真器怎么着了,再做一些改进,我再测试。所以这样看来我来接触CUDA就是一个比较自然而然。
第二个比较重要的问题,CUDA当时是在所有GPU里面,它的编程模型做的是最好的一个,让我们感觉非常的容易上手,这个就是很大的一个优点,因为你说一个编程语言是不是好用,是不是能用,这个真的区别很大。CUDA因为当时已经做的非常好用,利于我们上手,然后也达到接触GPU的目的,我们当时选择了CUDA这个程序。
由于我们当时其实是CUDA和清华一个合作研究中心。
主持人:
CUDA卓越中心是吗?
陈羽北:
是。
褚艳利:
我之前一开始接触还是大四时候,在翻译一本程序员杂志,上面写了一篇文章,不记得作者是谁了,但是那篇文章一看,觉得学习曲线很低,然后可能是年轻人对这种新技术比较的敏感一些,好像说的是这个曲线很低。我也会C,学习CUDA C会不会很简单,就是技多不压身,试一下,后来入门的时候,开勇、张舒、陈石他们都带着我学,所以学起来很开心不觉得一点累,慢慢的就明白了。
主持人:
当时的时候有没有什么一些学习的方法呢?
陈羽北:
虽然我后来看了很多GPU编程的书,包括胡文美老师他们写的这一类的书,当时我还读了你们写过的那本书,但是我感觉回过头来,如果要是没有太多的时间,因为CUDA是很好学,很好用一个东西,你只用Programming Guide也可以把上面知识吸收了,也能达到我的目的了。我们后面追求卓越,我们可以来看一些其他的书,如果我们真的没有时间,可以不必看那么多书,就是看Programming Guide就可以了,因为这个做的非常好。
主持人:
就是NV的一个官方文档?
陈羽北:
对,这个官方文档做的非常好,我知道很多的学长他们上手都是从这个官方文档开始的。之后,再遇到一些问题,再强化自己的知识,然后看待其他的研究者的经验,还有老师的一些心得。
褚艳利:
其实我跟他的经验是差不多的,一开始先看文档,我记得我们08年那回没有特别简短一个文档,就是直接的NVIDIA给了一个学习文档,大概有一两百页,那个时候我真的看完了,现在孩子比较幸福了,他有那个Best Guide,就是挺简短的。
陈羽北:
对,我看的时候就要比你好很多。
褚艳利:
我看的时候,真的是两百页的文档我看完了。
主持人:
现在好像是分好几类,比如说Best Guide或者Programming Guide。
褚艳利:
我觉得先看一下Best Guide对于CPU加GPU的异构编程有一个整体了解,对它内存模型,里面的Wrap等等有一些基础的概念有一些基本的了解,这是第一步。
第二步的话,像NVIDIA SDK包里面有非常多的Demo程序,我觉得这几个程序看下来基本上对CUDA程序已经算入门了。
但是说需要一些优化手段,那个必须结合你自己的应用,走进里面,不断做测试,不断的用Profiler工具不断的对你程序调优这样一个过程,前面学习起来还是蛮容易入门的,曲线很低,但是在优化过程中就会比较的痛苦一点。
主持人:
优化是一个比较难的工作?
褚艳利:
有时候那个寄存器的量你把握不好,有时候你觉得你写一个int i=0放在那里没有问题,但是其实寄存器是在使用的,所以要把无用的量都删掉,等等一些细节,还有一些循环的处理,数据结构的设计等等。
其实入门真的很简单,我觉得可能作为一个女孩子来讲,一周差不多,只要你有C的基础,一周可以入门,基本上半个月可以写出来基本的CUDA程序,但是你要调优的话,我认为没有一两个月的这样一个积累,做不出什么非常优秀的程序,优化还是一个比较困难的,所以如果想学好优化,还是应该把技术文档,一些书上给的优化经验多看一下。
陈羽北:
我补充一点,其实有一个挺重要的,因为我们那个文档固然很详细,里面介绍很全面的,各种各样的知识,实际上这些文档里面并没有哪一个程序员,就是说我这一个程序里面把所有东西都用到,学程序一个很重要特点,我没有必要完全把这个程序所有语法都学完了以后,我再开始,其实我需要的只是很基本的,很基本的通常都在前面,我们只要把前面看完以后,就能写出一个很基本的程序,这个时候开始犯错了,你就开始比较快速的这种学习的速度。这个步伐很好的,就是这样。
主持人:
当时在学习过程当中,有没有遇到什么困难?
陈羽北:
学习过程中。遇到什么样困难?我刚才其实在上一个问题说到了,我觉得文档写的很好,我当时一直在看那个文档,感觉如果不试一下,其实理解不太深刻,然后你可能产生疑问,你如果要是一直看,不动手,因为你动手写一个程序很简单,但是你一直看,不动手的话,你会产生各种各样的疑问,后来疑问就多了,所以我的一个学长,汪博学长,于浩学长,他就给我建议,你马上开始写一个程序,不用看,有疑问,那些东西很可能对你来说不是问题,因为你可能不会用到他们,你先写出来一个程序,以后你就知道,可能它原来就是这么简单,然后之后再逐渐的积累就好了。
主持人:
两位在学习过程当中,都有一些贵人相助。陈羽北是那个学长?
陈羽北:
对,这两个学长确实非常非常强,因为当时也是我刚开始进入实验室做研究,然后这两个学长可以认为是实验室的两个顶梁柱一样人物,他们现在分别在斯坦福大学和奥斯汀大学,计算机系的,也非常不错的。他们当时带我入门,也是把我引入这个领域,在一开始让我有一个比较快的成长速度。
主持人:
羽北应该还是有老师教是吗?
陈羽北:
对,邓老师就不用说了,我们所有都是在邓老师的带领下成长的,所以因为老师指导一开始就说,是非常关键的,可能整个的都会说,他们两个是邓老师太出来的。
主持人:
羽北来说比较幸福,有邓老师带?那褚艳利?
褚艳利:
是,因为我是我们实验室个人对这个比较感兴趣,也是第一个学这个,而且是女孩子,没有老师带,比较痛苦的一个处境,但是还好,有开勇和张舒他们带我。我记得当时学的最困难一个点,就是学shared Memory的问题,还有在显存里面的问题,这个当时因为毕竟我学过CPU,学这个比较容易的语言,我考虑这么底层,这个十六个区怎么搞,我转不过来,我记得当时开勇陪了我一个晚上,我们远程调试,他带我一个晚上,我大概在凌晨五点的时候,我终于知道原来这个就是,现在想想干这个挺简单的。
陈羽北:
熬夜对身体很不好的。
褚艳利:
但是真的,2008年那个时候一个情况,当时我们还非常的感谢他们带我这一程,那个概念解决以后,其实后面走的比较的顺,比较的平坦,挺感谢他的。
主持人:
在学习过程中,有没有觉得有困难的地方?
褚艳利:
没有特别困难的地方,其实我觉得CUDA C还是很容易上手的,C基础比较好,CUDA一周学了大概没有什么问题,就入门。
主持人:
女生学这个编程有没有困难?
褚艳利:
入门大家都可以入门,但是做下来,走的远的不是特别多的感觉。
陈羽北:
其实感兴趣的比较少了。我们换句话来说,女生对代码感兴趣也偏少。
但是对代码可能感兴趣的相比男生要少一些。
褚艳利:
我庆幸我是这个队伍的一员。
主持人:
女生做到这个地步很强了,还有一个问题,学习CUDA对大学生就业有什么帮助吗?这个得问艳利了。
褚艳利:
对。我是去年找工作的时候,这个对我帮助特别大,因为跟张舒合作了一本书,他们认为一个女孩子,也是一个年轻人,对技术保持高度的敏感性,他们觉得非常不错,而且对并行这样一个概念也不是说一无所知,因为像我们现在在阿里做的话,尤其是支付宝,追求是高性能,高可靠,并发绝对是很高的,你有这样一个并行的基础,所以当时有比较大的加分。
主持人:
羽北呢?
陈羽北:
我的想法,当然我还没有具体经验,我感觉从学长,因为实验室也有研究生学长毕业这一类的,还有出去找实习之类的经验。
实际上GPU带给我们最底层架构的一种认识,这种认识因为现在是一个计算的时代,什么样公司可能都面临计算的问题,从游戏公司,到EDA公司,你们做的网络公司,我们大家全都在讨论计算的问题,我们所有人都在讨论大数据,每天产生很多数据怎么进行处理?有这样对并行架构一个理解,确实像你说的很容易的,可能给我们提供一些更多的手段,更多的机会来进行处理我们的数据,让我们的东西更好用,所以我感觉他们在找实习的时候,他们的这种知识对他们是一个很大的加分,他们通常这些有这样经验的学长,还有做的不错的学长,他们在实习找工作都是不错的。
比如说有去谷歌,有去英特尔,还有一些是游戏公司,当然可能我们联系不是那么近,但是它也是和GPU在直接打交道,我觉得这个也是属于很不错的。
主持人:
像做游戏的,像PhysX都是用CUDA在做的。
陈羽北:
也有一些学者,可能这些方面来就业,还有在网络方面也有一个学长,最后去了百度,也是很不错的公司,他们去哪里就是做专门的并行的研究,因为我知道他们每天要跑很多很多的那种数据分析的程序,可能一到后半夜他们服务器开始忙了,跑这些数据,他们有这样的经验,在公司就业还是不错的。
主持人:
羽北也是,刚去了斯坦福实习是吗?
陈羽北:
对。
主持人:
是不是有CUDA这个经验?
陈羽北:
不是直接的CUDA的作用,因为可能也是做GPU研究,在并行方面做了一些研究,当时在我们斯坦福这是一个项目,我们实际上把材料提交给对面的教授,对面教授可能觉得你有这么多程序调试经验,我简历上,他说你有一个连续六十个小时的调试经验,因为他们实验室做的事情经常需要调试,工程量很大,你有这样的经验,对我来说是很不错的。
第二个,你对并行架构的理解,因为他们实验室实际上是非常希望加速,但是不指望我一个月过去把他们大的程序加速,但是可能希望你过来了解了解,你了解这个应用,对你将来成长也是很不错的。
因为可能并行计算涉及几个问题,一个是架构设计,中间的语言提供,以及上层的应用,我这个暑假做的是上层的应用,我来了解这个应用,以后是否能给他们加速,进行进一步的合作。
主持人:
有没有之后有可能去斯坦福大学深造呢?
陈羽北:
这个现在还不好说,但是我觉得还是要努力的。
主持人:
我觉得有这个实习的经验,应该更容易一些。
陈羽北:
谢谢。
主持人:
这次GPU大会亚洲站会在北京,12月14到15日举行,你们有没有机会参加呢?
陈羽北:
我们实验室可能组织大家参加,如果要是组织的话,我们非常可能去,那我们就可能一起去了。这是可能到时候还得看我们组里面的安排。
当然我粗略看了一下它的题目,还是有很多题目我是非常感兴趣的。
褚艳利:
我也是比较期待,我最期待的就是会有一些还是加减密方面的一些算法的加速,尤其是数挖方面,数据挖掘,之前加速的算法,我觉得像淘宝现在购物人特别多,希望这种能够把GPU这样一个架构引入进来,更快速的分析用户的一个消费习惯,这是非常有意义的。
主持人:
就是数据挖掘,数据分析?
褚艳利:
对,这是我最最感兴趣的一个方面。
主持人:
淘宝,现在也是大数据。
褚艳利:
对,数据库里面东西肯定在,完了之后你怎么分析这个数据,得到一个比较有预测性,或者是一个比较有意义的结果。
主持人:
给决策来做一下。
褚艳利:
是,这个很重要。
陈羽北:
我比较关注的问题,我感觉也分为两个部分,其实是三个部分,我觉得第一个部分是说,刚才说的应用,在这样一个计算时代,GPU现在能力变的很强以后,有没有一些非常非常有趣的应用出来,这个可能需要一些专家,他们来提供一些比较有趣的想法,来把这种编程人员引入进来,我们想他们比较的有想法,可能石油勘探或者是基因计算这些新的命题,他们有没有这样新的命题提出来。
第二个,因为我之前做的研究里面,我感觉这种CUDA虽然好用,但是让每个人很容易用还是有困难的,不可能是让所有人都会C一样,是不是对这样并行的时代有没有一些新的语言的改进。我们有没有合适的语言,最好用的我们说的有很多很多的Memory然后我们是不是可以把底层的细节隐藏下来,当然可能有些专家他们不同意,但是可能对一些比较的那种初级的程序员,或者没有时间进行仔细学习的人员,比如说一些Mapreduce编程模型,对我们实际上是很重要的,我觉得是给大家提供更好的方式来使用GPU,我很关注他们的语言。
还有一些架构上面非常新颖的改进,因为我们知道它可能有一些新的特性,就像点对点通信,就是在这种情况下是不是可以给我们一些很激动的特性。
主持人:
我这里还有一个网友的问题,他是问对于有效带宽计算,有没有相关软件进行详细分析?
褚艳利:
好像还没有一个专门软件用来做这个,我们如果有一个Kernel程序,如果测他的有效带宽还是用公式来做,就是这个公式,就是读时间加写,然后除以这个执行总实际就是有效的带宽。
这个带宽算出来了这个值是真正的值,真实的值,但是你用Profiler测出来有一个参数是Prof,这样一个参数,你对比一下你会发现,用Profiler测出来比较高这个值,就是带宽比较高。这个跟它的硬件设计有关系。
你真正的做的就是去显存里面读一个Byte的数据,但是实际上不可能的,一次可能读回来一块,实际有一些百分比浪费掉,这个值测试出来比较大,我们把你自己计算出来的值,和这个参数做对比,其实你就能看到有多少是有用的,有一个百分比,有百分之多少是你现成要用到数据,百分之多少是你相当于白取了。
如果你再把这个值跟理论值进行比较,你就能看到自己现在优化到什么程度,还有多大空间要走。
陈羽北:
我感觉是这样的,我们在做GPU程序设计的时候,我通常的感觉,GPU我们做加速器的时候,通常我们先准备好数据再开始算,我们准备数据时候,我们通常不倾向于把很多很多的数据,分每一个小块每一个小块开始拷,我们经常是一个大块一个大块的来创建拷贝,这样因为它涉及到一个API启动延迟的问题,如果要是符合我刚才说的这个方法,可能我们并不需要一个专门的测试软件,因为我们可以写出来非常简单的程序,我们自己来测试。这个实际上是一个非常简单的,我们用CUDA,因为不是那么困难,我们可以用一些时间来检测,我们加一个时间的那种检测的程序。然后两个语句,我们做两步,第一步是做一个,大的数据块拷贝过去,这个时间里面我们如果简单的认为是一个API启动和一个拷贝的时间。
第二个就我做一个非常小的数据块,可能数据量我们觉得不是很大,我们把两个剪掉,分别得到是API时间,第二个是得到了我们数据块时间,这个可以做,第二个还有一个方法。但是这个是比较的麻烦一点,GPU有一些比较好的仿真器,这个仿真器虽然不能百分之百的帮我们把它再现出来,但是对我们访存提供一个直观的印象,我们拿这个仿真器,这样的东西,我们用它来进行我们程序的分析,也可以得到一个带宽的数据,但是我觉得我提到前者是我比较建议的,比较倾向的。
主持人:
两个人认为CUDA有哪些优势?
褚艳利:
首先我觉得CUDA最大的优势,在于它学习曲线低,这对于女孩子来讲就是一个特大的优势。然后第二点如果你现在面临一个应用就是计算密集型的,然后它逻辑又相对比较简单,没有那么多的分支等等,当你做完这个CPU程序的时候,我建议你不妨真的就是在GPU上试一下,改成CUDA程序非常简单的,你再花一天时间可以做完,就是一个中等规模的一个应用。希望花一两天时间,可以把它移植到GPU上来做,你看一下效果,可能达到一个非常惊人的效果,不妨试一下,移植性非常好。
陈羽北:
其实我们刚才一直在谈CUDA优势,我们谈过好多次,其实就是再说一遍。
主持人:
总结一下。
陈羽北:
我觉得CUDA,因为作为一种编程模型,我们可以认为CUDA是一种编程的框架,给我们一个最直观的印象就是说它已经非常非常好用,然后而且我们可以看到CUDA的发展速度非常非常快,从我们刚才开始,你们当时用的应该是CUDA 1.0。就是我们可以说很古老的,那个时候可能调试什么都非常困难,那个时候只有一些非常专门的CUDA程序员,我们才在用,甚至高性能领域,他们可能不愿意用,觉得那个时候可能不是很好用,我们看它发展速度,一直到现在,连Visual Stdio提供一整套的这种非常好用的工具链,所以门槛是不断的降低,结果就是语言越好用我们愿意用,越高层的语言,比如说java什么的,我们肯定愿意用,因为现在容易写,所以我觉得最大一个优势是它的易用性,而且以它现在这样的发展速度,我可以觉得后来可能和C没有什么区别。
第二个优势,我觉得它把硬件的细节,很多其实还是隐藏了很大一部分,在这里面CUDA其实也可以认为是易用性一个展开,我们认为是说,你用CUDA可以写很复杂很复杂的程序,但是你想简单也很简单,因为我们优化手段可能有各种各样的优化手段,但是我们归根到底,到最初级,我们可以想几个方针,一个是合并访存,我们是不是写的那个程序可以能够合并访存,如果写的合并访存,本身内存带宽就很高了,当然我们不是说合并访存到多么完美。
第二个是说它的这个Shared Memory是不是能够合理使用,就像一块我们可以自主控制的有LE Cache那样速度的存储器,我们如果可以合理的使用它,学会如何合理使用它,把我们的任务比较常用的数据安排在里面,我们可以减少访问外存时间。
第三个是寄存器,我们是不是能够全都让它存在于寄存器里面,而不至于放到全局内存里面,如果放在全局内存里面可能比较慢,但是我们如果优化好这一点,满足以上三点的话。然后同时我们甚至不考虑Cache这些问题,它本身已经能达到很高的性能,这三点非常非常容易。
如果再复杂,我们可能考虑这个Cache的一些效率,我们可以搞的很复杂。你想搞的很好,你想搞好的话,可以用很简单的方法,但是你想追求卓越,还可以有更深的方法,所以我觉得适合不同人入门。
主持人:
CUDA还是比较容易学是吗?入门很简单?
陈羽北:
语言最大的优势就是易用性,第二个就是效率,易用性其实我觉得可能是最重要的。
主持人:
感谢两位今天来到我们的访谈节目。我们下次再见。
(结束)
|
|