用户
 找回密码
 立即注册
发表于 2011-12-28 18:19:32
93833
2011年9月24日下午19:00

赵开勇 GPU高性能计算专家

主持人:
各位观众朋友们大家好! 欢迎收看IT168专家访谈节目,我是CUDA频道的编辑王玉圆,今天我们邀请到了一位CUDA技术领域的专家,先请他给我们做一下自我介绍好吗。

赵开勇:
大家好,我叫赵开勇,可能有些朋友认识我,我现在是在香港浸会大学读计算机博士,方向也是做高性能计算方向,做一些生物信息医学领域的研究,同时也是在浪潮公司那边做高性能计算的顾问,带领一个团队做异构计算的研究,应用的移植,同时和几个朋友做基于GPU的图像软件研发,现在跟大家一起分享一些GPU方面编程的心得和体会。

主持人:
感谢开勇来到我们的现场,我想问一下开勇,您从事CUDA研究这么多年,当时是怎么样接触CUDA的呢?

赵开勇:
其实很久之前就对GPU编程有些了解,是在我大学的时候,应该是在2002年的时候,我大二的时候,那时候游戏比较火,想用GPU计算来做游戏,但那时候其实没有GPU计算这种概念,那时候是用DirectX来做一些图像处理的编程,当时自己实现了2D的游戏引擎,后来是在香港读博士期间,在2007年去香港的时候,就是我们需要用到网络编码,就是说在网络传输当中需要大量的网络编码,因为我是做P2P研究的,那个时候是需要用大量的计算来进行数字的计算,使得数据的安全性和数据的压缩,使得网络流量占用比较少,这时候就需要大量运算,如果传统CPU方法来做的话,一般性能能提高5-15%就相当于写一篇论文了,后来我跟我的导师商量,看尝试用CPU做计算,因为CUDA是在2006年的时候发布了第一版0.8版本的beta版本,当时性能不太稳定,正好是2007年左右1.0版本已经在外面发布了1.2版本,这时候正好利用了CUDA这个编程环境,用了半年的时间实现了一个算法,就比传统的方法快50倍左右,五六十倍,这个时候我们就可以在国际上发一个很好的文章,从那时候开始就接触到了CUDA的高性能编程。 但后来我们发现大陆的GPU计算,我查很多资料,发现GPU编程或者CUDA编程这块没有太多的资料,即使是国外都没有很多资料,这时候我们从国外收集了很多资料,然后发布到国内的一些网站上面去,分享给大家,从那时候慢慢的接触到了用GPU来做通用计算的应用,是在2007年左右的时候就开始研究了。

主持人:
我了解到CUDA好像也是2007年的时候才发布的1.0版本。

赵开勇:
对。

主持人:
您觉得1.0版本到4.0版本有多大的提升呢,

赵开勇:
可以这么说吧,就是说1.0版本的时候它的性能,当时说是单精度计算有1个T的计算能力,实际到4.0以后才能达到单精度在编程的时候可以达到1个T左右,这是它的计算能力。另一方面它双精度计算能力1.0的时候是没有双精度计算能力的,那时候是单精度的,可以用一些方式来模拟双精度,但那时候就不太方便,但在4.0现在我们单跑可以达到500G(副老可四)这样双精度的能力,G(副老可是)每秒钟能运算多少次的浮点数运算,可能有500G个浮点数运算能力每秒钟,这是最新的4.0的状况。它的编程模型发生了一些变化,以前可能没有很好的调试工具,在我们最开始调试CUDA的时候很麻烦,每次都把编码屏蔽掉一部分,然后一部分一部分调试,现在有很好的调试工具,像Nsight就是很好的调试工具,那时候都没有。还有3.2以后还是2.3以后我忘了,不太清楚,以前可以有一些模拟方式进行运算,现在是2.3以后就不能用模拟的方式进行运筹决算,还有一些函数库的提供,CUDA越往后面版本的时候函数库就越多,不需要再多的底层进行开发,这就是它很好的。

主持人:
直接用库就可以?

赵开勇:
对,可能不需要对底层的,CUDA编程很多,只需要了解这个算法怎么用就可以很好的利用CUDA来进行运算,这就是后面版本提供了这样的功能,这是它比较好的。像最新的4.0的库提供了像运算的库,CU语境还有简单的支持C++的(戳四特)的库,(戳四特)是STL一样标准的库,我只需要知道C++编程就可以进行CUDA运算了,很方便,越往后面越方便。还有一个特性可能大家比较喜欢的,CUDA4.0发布的时候有一个CUDA2X86,它可以把CUDA编程的语言转换到X86平台上面去,这个是很好的工具或者说很好的功能,我印象当中是NV和第三方公司一起开发的。

主持人:
PGI好像是。

赵开勇:
可以让你在CUDA开发的软件拿到X86上面运行,这是一个很好的工具,一方面是它的工具会越来越完善,另一方面它的函数库越来越多,再一个是将来它的编程模型会支持更多,现在的编程模型可能是数据密集型的方式比较好,将来像我跟NV公司聊天,他们可能会在将来的麦克斯韦或者开普勒这样的显卡上,GPU卡会支持更多的编程模型,现在可能不太适合迭代的模型,将来可能会支持,这是它编程的变化可能是。

主持人:
就是它有一些提升,性能上和功能上的提升。

赵开勇:
对,不管是性能上还是说编程的一些方式上都会有一些很好的提升。

主持人:
您自己的经验来说,您觉得CUDA难学吗?

赵开勇:
怎么讲呢,如果说有编程经验的话或者有编程基础的话,CUDA可能学习也不需要太久的时间就能完成这样的工作,其实它的学习进度分为几个阶段,最初步了解CUDA可能需要一周或者几周时间就可以完成,另外一个是对算法的了解,因为传统的编程方式是串行编程,没有并行编程的概念,当你有了并行编程的思想以后可能很快就会把已有的算法或者是一些方法移植到GPU上面去,这时候就可以很快上手,可能要成为一个经验很丰富的需要差不多三到四个月能到高手的级别。

主持人:
大概三到四个月。

赵开勇:
对,能达到高手,如果说入门的话需要一周就够了。

主持人:
我们也知道上次在2010年的GPU技术大会上,NV的CEO黄人讯说过一句话,他说学会CUDA只需要七天时间,如果是您的话,您这七天时间怎么安排呢?

赵开勇:
如果说真是一个对编程很了解的人,可能他学CUDA第一天装CUDA的驱动,这些环境配好,第二天可能就运行一些DEMO,本来已经有一些DEMO,就运行一些环境,第三天看一下编程模型,线程模型,第四天可能就自己写一个hello world,可能这样就可以很快的入手,如果说动手能力更强一点,可能一两天就会对CUDA编程语言熟悉了。

主持人:
就是说可能还不需要七天。

赵开勇:
对对对。

主持人:
只要会C语言。

赵开勇:
对,主要你对语言了解,然后对一些并行编程的概念了解,当然我也可以建议大家看一下我的博客或者到IT168论坛上去问一下,可以分享大家一些经验吧。

主持人:
开勇是我们IT168论坛上的版主,大家可以到IT168论坛上进行提问,开勇都会回答。我们还有一个问题,现在普通的开发者对于CUDA不是特别了解,您能谈谈您对CUDA的理解吗?

赵开勇:
不应该说对CUDA了解,其实我们应该是对并行编程的了解,我们接触到并行编程可能是2006年左右,我之前也有针对CPU的并行编程,那时候是多线程的编程模型,我们传统的在大学里上学的时候或者高校里培养的都是串行的编程思想,CUDA出来以后是并行的编程思想,虽然说我们的并行算法可能六七十年代已经很完善了,但当时是针对于大型机的算法,并不适合单卡或者单计算机,小型计算机上面或者单机上面有高性能计算能力的卡,但你可以把这些算法拿过来,需要你对并行算法有很深的了解,这个时候并不是说CUDA难学,很多人可能说CUDA难学,实际是对算法的了解,以前我们是对并行算法不太了解,现在我们需要对并行算法有一个很深的了解,然后转换自己的编程思想,如果说把你的串行算法转换成并行算法,其实可以很快的移植到CUDA上面来,因为CUDA就是一个编程模型,其实就是一个并行的,给你一些并行的线程和内存,只需要把你的算法改造成并行的算法就可以很快的转换到CUDA编程上面,其实不是很难的,很多人不是很了解并行算法,反而会觉得不太方便。

主持人:
这种并行算法其实在上世纪六七十年代就已经有了。

赵开勇:
对。

主持人:
CUDA在并行算法里边有什么优势呢?

赵开勇:
如果说传统的实现并行算法有MPI编程模型或者是OPEN MP,针对单CPU的OPEN MP多线程的编辑模型,可以这么理解,传统的并行编程模型是针对集群或者(卡四特) 或者小型机,同时可以控制很多单个节点的机器进行并行运算,我们可以把GPU或者CUDA编程模型理解为把一些传统的一个(可拉四特)这样一个集群集中到了一个芯片上面去,可以这么理解,其实就需要把你以前的并行编程的算法或者并行编程的思想,可能以前我们有MPA这种通讯模式进行传输,进行广播,进行并行编程,但是现在CUDA已经写好了,你只需要实现里面的kernel函数就可以完成并行编程的工作,你只需要完成一个很简单的一步,都不需要向MPI这样进行网络通讯编程的更改,只要针对单机,只要实现你的(口楼)函数的算法就可以完成CUDA编程了。

主持人:
也就是说比起传统的编程来说CUDA更便捷了。

赵开勇:
对。

主持人:
其实只要掌握C语言,CUDA C就可以把这个编程做好。

赵开勇:
对对。

主持人:
您觉得对于现在学习CUDA的学生来说,找工作上有什么优势吗?

赵开勇:
有CUDA编程方面经验的人,我建议大家可以给我发简历,因为浪潮这边也很需要人,我这边也是需要人的,可以帮助大家找到一些很好的工作,现在我知道国内的公司,不只是浪潮、联想、曙光,或者是惠普、IBM、戴尔他们都有高性能计算的部门,这些部门大量需要高性能计算的人才,我听朋友讲,传言IBM这样高性能经理职位年薪都要100万,这是一个很好的机会,因为确实很需要这样的人才,高性能领域里面可能各个行业都有,像石油也有,金融行业也有,做金融、石油、生物信息领域、生物领域,这些领域都是高精尖科技领域,这些领域都需要大量的高性能计算的人才,这样的话对大学生或者刚毕业的人的建议,需要在大学期间自己学习一些并行编程的课,当然CUDA是一个很好的机会,买一个显卡就够了,自己在宿舍里面玩游戏就可以进行编程了,这样对你自身也是很好的培养,将来毕业可以找一个很好的工作。 当然我也建议大家,如果说能有机会可以买我们CUDA编程的书,因为我们当时也是在2006、2007年的时候发现大陆这边,应该是全球来讲没有专门的CUDA编程的资料,没有完整的资料,后来我们就联系一些朋友,当然这本书更多的是张舒和禇艳丽他们两个人写的。

主持人:
我们可以看一下这本书,《CPU高性能计算之CUDA》,这本书的副主编是赵开勇。

赵开勇:
这里面是有些故事的,当时是我联系统筹他们来一起写,真正这写的更多的是张舒和禇艳丽他们,张舒现在是在NV公司工作了,毕业以后就去了NV公司,禇艳丽现在是在淘宝,张玉博现在是在美国那边读博士,他们的实验室也是做全球高性能计算的,他们中心是在美国那边做国家项目,做超级计算可视化的工作,他们导师也是在美国申请国家项目的,也是很厉害的。

主持人:
也就是说在写这本书的时候其实大家都是学生。

赵开勇:
全是学生,全是研究生,全是硕士。

主持人:
现在已经有了很好的工作。

赵开勇:
对对,尤其他们俩是很厉害的,都很不错的,张舒和禇艳丽。

主持人:
您能不能给我们介绍一下这本书的内容。

赵开勇:
应该算是全球第一本吧,也不是说夸张,确实当时是全球第一本基于GPU编程的书,第一部分可能是介绍了一些并行编程,硬件的架构,第二部分是一些编程的基础,对编程的语言或者是编程的内存介绍,第二部分其实跟编程手册有些类似,说白了可能把一部分翻译过来,因为我们当时也是通过NV授权的,有点交流,可能有些人会问为什么跟编程手册很像,因为NV是基础,不能自己凭空想象一些东西出来,第三部分是硬件架构,第四部分是CUDA程序的优化,这部分当时应该是我来主写,后来因为时间不多,写了一部分,这部分也是需要大家注意的,其实CUDA编程入门需要顶多一周时间就够了,真正的优化工作是需要几个月时间来做的,这个是需要注意的。最后一部分是一些简单的例子,当然这里面有双料排序,AC算法,这部分也有应用,网络安全里面有应用到CUDA这样的程序,这个算法其实可以用到“基因比特”里面,当有了并行编程基础以后会发现可能会把这些算法用到各个不同的领域,就像我在浪潮公司做石油行业应用的时候,我们会发现它相当于是对地球底层做了一个CT,就跟我们跟生物物理所做类似的项目,做细胞三维重构的时候发现也是用类似的算法进行实现,其实各个行业领域都是相通的,只要有这个技术以后会发现很多领域都是相通的,都不是那么难的。

主持人:
最近做的有关于CUDA的研究是什么?

赵开勇:
有很多方面。

主持人:
比如说石油勘探。

赵开勇:
对,比如我们跟中石油一起合作的“data时间”偏移的算法,在中央电视台《新闻联播》上面播过,以中石油的名义做了宣传,说国内也有了这样的技术,基于GPU计算能力在石油行业里应用,其实内部开发是我们跟他们一起合作的,这是在2009、2010年的时候完成的工作。浪潮跟生物物理所做了一些工作,做了三维电信重构的软件,在国外一套软件可能需要卖50万人民币,我们在国内完成以后这套机器成本会大大降低,使他们的科研成本会降低很多,速度会提高很快,性能比传统的CPU算法提高了50倍左右,以前要重构一个生物细胞可能花几周或者一个月的时间才能完成这个工作,但现在需要几个小时就够了,一两天就够了,能很快进行科学研究。 我自己公司那边做了(谬四买的)软件完全是基于GPU的图像处理软件,用OPEN GLSL实现的,跟CUDA关系不太大,也是GPU计算,做了一个项目,用CUDA进行加速,我们对卫星图像的处理,它把地面上4000×20000的大图,如果用传统方法做会很慢,国外产的软件,NV软件的速度,拖一下那个图片很久才能动,我们可以达到实时的,拖动图片实时就可以运动,比他们那个快了50倍左右,不管是对科研还是对民用产品或者军用产品都有很好的促进,对他们来讲这是很高性能完成了这样的任务。

主持人:
刚才你也说过(谬四买的)自己做的软件。

赵开勇:
对,那是完全基于GPU做的图像处理软件。

主持人:
那个软件您在去年的GPU技术大会上做过这样的演讲,您当时的演讲内容大概是什么样的?

赵开勇:
当时我们是在美国参加TDC,跟张玉博一起做了报告,因为当时下面听的还有(欧都比)的人,还有索尼公司的人都来听我们的报告,类似的软件都是基于CPU实现的,但我们完全基于GPU实现的图像处理软件,性能是绝对优秀的,绝对速度快的,尤其是媒体行业,大家都可以使用这样的软件进行处理,大家拍完照片以后一下子几百张照片,像批处理,我们可以调色、加名字、加水印,很方便,传统的方式加完以后可以出去吃个饭回来可能还没有完成,我们这个很快时间,喝杯咖啡都不到。

主持人:
基于GPU的速度加快。

赵开勇:
很快。

主持人:
您之前参加GPU技术大会的时候有什么样的经历和感受呢,因为是在美国参加的。

赵开勇:
我参加过两届GPU大会。

主持人:
2009和2010是吧。

赵开勇:
对,第一次我们只是做了一个poster,当时是我用GPU进行网络编码,硕士生的研究方向去做了一个。

主持人:
也是P2P那种吗?

赵开勇:
对,也是P2P的算法,当时用GPU实现里面的一部分,当时我们去了,交流以后我们发现我们跟国外的水平是一样的,或者我们比他们更厉害,回来以后我有很大的感想,因为传统的算法或者一些东西我们感觉国内和国外的差距很大,赶上他们很麻烦或者我们用他们的盗版软件,都不喜欢自己开发,但GPU我们发现国外的能力和我们的能力都在同一个水平上面,甚至我们可能比他们更厉害,这时候大家会抓住这样的机会,能把你的应用移植到其他方面来,可能将来这样的多核运算和综合运算可以站在世界最领先的水平,这是一个很好的机会,不跟外国交流的话,不跟国外的研究者交流就不太清楚这些状况。比如我当时做完一个poster,当时在那边讲的时候有一个美国朋友,他对这个很感兴趣,连续两天围着我那儿转,后来送我一本书,我发现国外这些人的研究水平可能比你的水平还低一点,这时候就让我们觉得这个意义更大了,也是在2009年,更觉得我们应该写一本书,也是这个原因。

主持人:
把我们自己的技术走向世界了。

赵开勇:
对,就是我们要做的更好。2010年不只是做一个poster,做了一个演讲,Adobe和索尼公司会有些人来听我们的报告,他们对我们的很有兴趣,因为是完全基于GPU的图像处理软件,这个打破了传统,很多公司做的软件都是完全基于需要CPU同时工作,但我们完全基于GPU的,这种概念很超前,他们有很多传统的软件想移植到GPU上面来还是需要很多步骤的,反而是国内的人员和研究机构比国外走的更先进,更快。

主持人:
我知道开勇做过两次CUDA校园程序大赛的评委。

赵开勇:
对。

主持人:
您对今年CUDA技术大赛的参赛选手有没有什么建议?

赵开勇:
我的建议是自选题目可能做的比较优秀一点,如果能发文章的话最好发文章,这样可以给你加分的,还有一些定义的题目,已经规定的题目可以参考一下,看有没有做的比较优秀的,因为我们会发现你用的算法别人已经实现过了,你就需要找更优的算法进行实现,还可以做一些比较新奇的东西,如果说你做出的东西意义更大,比如说做数据库,当然这只是个建议,做数据库或者其他方式,能在这个领域里解决很多实际的意义,其实我们并不一定说教授比能高到多少倍,这是一个很好的东西,你能基于GPU实现解决这些问题可能更有意义,能做出更实际应用的例子意义会更大一点,甚至可能会有一些投资人给你投资。我当时认识一个朋友,本来也想参加比赛,后来没有参加比赛,因为有投资人把这个项目拿去投资了,已经做了基于GPU渲染的工作。

主持人:
变成一个项目了。

赵开勇:
对,已经不只是为了参加比赛完成这个工作了,因为GPU在全球来讲我们跟国外是同一个水平的,你能在这块做的最好就是在全球做好了,比如参加G2C的话,G2C有一个部分是有些投资人会去看你的演讲,甚至可以投一些钱过去,完全有可能。

主持人:
有可能你刚做完演讲就有人跟你签约了。

赵开勇:
对,都是有可能的。

主持人:
您刚才说的现在亚洲的水平,也就是中国的水平已经可以超越世界的水平了。

赵开勇:
GPU计算以前我们跟国外技术交流会发现网络信息不对称,国外的网络信息进不了,比如论文看不了,要等期刊,两个月才能看到,但现在网络很方便,只要有新的信息发布我们这边就可以收到,但是GFW挺讨厌的,国外GPU编程的网站反而会被屏蔽掉,这是很奇怪的,这是挺好的机会,上面有很多资源都可以看,也并没有违规的资源,很多资源都很适合,信息传递的资源反而被屏蔽掉,搞技术的人都可以翻樯,只要外面有信息过来以后就可以看到,我们跟国外站在同一个水平上,如果有人研究比他做的更快,做的更好,可能就是站在世界最领先的水平。 中科院葛老师那边做的东西跟国外讲了以后,那天跟我聊天也是一样的感觉,我们可能比国外做的更好,你需要抓住这个机会,如果说有学校老师的话,产学研真是可以结合起来,把这种产业或者学习研究,还有科研研究完全可以结合起来,有些老师做流行病学的老师做的很好了,模拟的很多东西很好,比如说跨到另外一个行业,做电影行业的老师就需要这样的东西来做电影特技,我刚才说的那个朋友就是把游戏里的应用用到了电影行业里面,徐克导演拍了一些电影,他们就是用GPU的“情景”加速做了一些研究,我们甚至比国外的水平更好一点,抓住这个机会也能做很多事情。

主持人:
说到电影,其实我了解到像《阿凡达》,还有热播的《盗梦空间》都是NV的GPU做的。

赵开勇:
都是用GPU加速的。

主持人:
都是用CUDA来做的。

赵开勇:
对,比如我们看到的《大闹天宫》,甄子丹拍的那个,有一个水面的效果,那个效果就是我的一个朋友跟徐克他们一起拍的,这里都有一些特技吧,都是可以利用GPU进行加速的,其实是可以的。

主持人:
也就是说CUDA技术离我们并不远,就在我们身边。

赵开勇:
我们现在可以看到网络视频播放器里面也有,像现在网上可以看到一些热播的,大家用的比较多的播放器里面也有GPU加速的一部分,比如说它要把里面的视频YUA格式转成RGB格式,很简单的格式转码都是用GPU加速可以很快的。

主持人:
GPU本身就有图像处理上的优势。

赵开勇:
对,因为它本身就是为图像处理而生的。

主持人:
再加上通用计算的能力。

赵开勇:
传统人理解用GPU进行游戏编程,现在游戏编程里还有一个潮流,用GPU进行游戏里的AI计算,以前我们只是用GPU进行图像渲染,这个动画很逼真,效果很好,其实是可以用GPU进行AI计算,所谓的AI就是说你让游戏的对手变得更强大,AI是人工智能,以前玩游戏的时候觉得妖怪很笨,如果用GPU进行加速,比如说用神经网络的算法,PB神经网络或者运算算法,这些都是人工智能的算法,如果GPU加速可能使得对手更强大,虚拟对手更强大,让玩家更加喜欢上这个游戏,就是说我们不只是对图像的渲染,觉得很好看,更多的是游戏底层的AI甚至可以用GPU计算。

主持人:
说到游戏其实包括physX也是用CUDA技术来做的。

赵开勇:
对,里面有按基于GPU的实现。

主持人:
您认为这次GPU技术大会在亚洲举行,认为有哪些亮点呢?

赵开勇:
可能有两个部分,一个部分是超级计算,因为我们现在是千万亿级别的计算,亿万亿次的计算,将来可能他们会推广,可能不只是NV这一家,有很多家的网络公司都在做这个,IBM有自己的芯片,前天我看新闻说IBM想做全球最快的。

主持人:
我也看到这个了。

赵开勇:
微博上好像也转过,这是专业的驱使,应用驱使硬件必须发展,尤其是我们做基因信息分辨率研究的时候会发现基因增长可能每六个月数据增长一倍,传统的摩尔定律芯片可能每十二个月计算能力才提高一倍,如果按照现在的方式可能远远不能支持基因的计算,数据是完全之后的,应用的需求使得研究必须让硬件性能提高,这是相互的作用,当硬件提高以后就需要软件来实现它,软件实现它以后发现硬件不够了,硬件又得提高。

主持人:
相互促进。

赵开勇:
相互促进的过程,这是很好的方面,会上可能会有一些研究,这是一个热点,很多人会讨论这个问题,国家在“十一五”计划的时候是想争取拿到全球硬件第一,在“十二五”计划里就不只是在硬件方面,软件方面也需要提高研究能力,相互的促进作用,亿万亿次计算能力出来以后应用是不是能跟上,这是一个很大的问题,有了这些硬件的时候软件是不是能跟上,现在硬件有,软件可以跟上,将来硬件又有新的变化了是否能跟上,这个讨论是亮点之一。 第二个亮点,基因的数据增长,可能NV这边会邀请亚洲这边做基因研究的核心单位进行讨论,比如华大基因,我去华大基因实习,做一些软件项目,他们现在基因比特软件、基因分析软件,将来基因信息的比对或算法或者分析算法已经不只是简单的研究了,可能他们真是想把这个做成商业模式,以前因为没有采集血液,不会说测血液有什么问题,将来我们到医院里直接可以测基因了,当然这是五到十年以后的发展趋势,站在科学前沿的时候会发现基因的应用需要大量的运算,GPU这块是很好的技术支持,硬件支持,使得它的计算能力提高很高,在这次会议上可能会有大量的讨论,基于GPU的或者基于异构架构的计算能力在生物信息学里的应用,比如说我现在知道华大基因有(艘铺3),跟香港大学研发的软件,还有分析软件,像跟港科大合作的分析软件,也是基于GPU进行计算的,华大基因还和NV一起参加了联合GPU的研究中心,他们就想在这个领域里做很多研究,将来高性能计算在生物信息领域里是很大的走向。

主持人:
也就是说现在GPU技术在中国的应用也是发展的很好了,像华大基因,浪潮的石油勘探。

赵开勇:
发展的很好倒不一定,这是我的一个期望,期望做高性能研究的这些朋友能在这个领域里做更多的应用,不只是GPU的原因,这是一个社会现状,很多科研单位买完硬件以后就意味我这边已经有计算能力了,但是会发现简单的应用并不能对你有什么帮助,你需要在硬件上进行一些开发,有些应用,有了硬件可能只是有了躯壳,有了软件才有灵魂,需要大量开发人员在这方面做一些工作,不然的话可能买完硬件设备以后会放在那个地方,等它报废了都没有用起来,这是很大的问题,其实像CUDA或者GPU异构架构的软件产业链才刚刚形成,甚至可能还没有形成,需要大量的研究人员,我们看到这个挑战的时候也看到了机会,需要大量的人员参与到这个领域做一些工作,这也正好契合了国家“十二五”计划,硬件已经拿到全球第一名了,天河1号,需要更多的研究人员加入到软件领域里来,国家“十二五”投资里很大一部分,现在我们可能看到一些程序,比如说在天河上跑,跑几百个核的性能已经不能有线性增长了,因为天河有5000多个CPU,5000多个GPU,软件需要大量的优化,使得应用满足硬件的需求,需要大量的研究人员在这个领域里做一些工作,这是我的期望吧,希望在高性能计算领域里的朋友把软件或者应用转到真正能产品化,使得硬件买回来以后不是浪费。

主持人:
还是需要很多类似于CUDA这样的编程人员,开发一些应用软件。

赵开勇:
对。

主持人:
您来之前我们在CUDA论坛上做了一次提问的征集,我是抽取了三个问题想问一下。第一个问题,有一个网友问到怎样才能有效的调试优化CUDA程序,就是说优化是一个挺难的事儿,您刚才也提到了,学可能只需要一周,学会只需要一周,但是优化可能需要更长的时间。

赵开勇:
对,我们会发现CUDA编程里0.8版本、1.0版本的时候更痛苦,可能需要屏蔽掉一部分代码,把内存从GPU里拷出来,拷到CPU这端在(铺瑞NF)打出来,是很麻烦的调试办法,在CUDA后面的版本,现在有Nsight编程工具,这个很适合Windows 7或者VISTA上面调试,当你有两块卡以后可以把代码端点设置到local函数内部,以前可能进不去内部,函数内部进行调试,也可以跟踪到每一个(不老可),每一个(四瑞的)内存状态什么样,可以很清楚看到内存的布局函数值是多少,这是很好的调试工具。

主持人:
我们用Nsight必须有两张显卡。

赵开勇:
对,或者有两台机器,网线连接可以调试,Nsight只支持Windows 7或者VISTA,不支持XP。

主持人:
如果是XP或者Linux。

赵开勇:
Linux相对好一点,Linux上面有CUDA GDB进行调试,XP现在没有太好的工具。

主持人:
直接从XP升级到W7就可以了,还是比较简单的。

赵开勇:
对。谈到优化,CUDA有一个叫CUDA,它能对CUDA函数调用,内存调用进行分析,线程调用次数进行分析,可以帮你分析你写的程序,哪些地方是瓶颈,哪些地方是需要优化的,就需要用(铺肉反欧)进行分析,分析完了以后就可以得到调试的地方,通过这些调试的地方进行更改,比如说我们可以用看内存访问,比如带宽理论值是140多G,但会发现只有20多G,原因可以找到内存访问是不是次数太少了或者函数里的调用次数太少了,原因会找到,代码可以进行修改,修改完了以后用什么样的策略,因为CUDA编程里面会把内存调度和计算两部分分开,编程思想分开一下,会发现你需要多少资源,就像每个线程用多少识别搬运内存,搬运完了以后有多少能运算这些东西,就可以合理分配资源,这样就能把程序一部分一部分优化,有这样的工具进行分析。

主持人:
优化的工具还是很多的。

赵开勇:
对,有一些。

主持人:
CUDA是否支持双精度浮点运算,速度如何?

赵开勇:
CUDA最老的版本可能不支持,现在4.0版本支持双精度的浮点数运算,比如用可以达到500多G的计算能力,CPU一张卡顶多能达到100G左右。

主持人:
有它的5倍了。

赵开勇:
差不多,而且CPU是多线程的。

主持人:
用来做理论物理方面的数据计算,用CUDA C好还是用CUDA fortran的编程更有前景?

赵开勇:
如果说编程到了一个等级以后,你熟练什么编程用什么就OK了。

主持人:
没有什么前景问题。

赵开勇:
没有前景问题,你用fortran只要支持这个环境就可以,我觉得这两个没有太大冲突,用C语言的人会比较多,在科技研究领域里面fortran用的人也比较多,这个没有太大关系。

主持人:
都可以用。其实现在CUDA已经支持好多语言了,C,C++。

赵开勇:
对,CUDA Java,CUDA(C#)。

主持人:
Java也有?

赵开勇:
CUDA是一个编程平台,并不是所谓的语言,在这个平台之上可以跑CUDA C,CUDA C++,CUDA(C下铺)都可以跑,只是一个编程平台,并不是简单的语言,可能很多人把它理解为是一个语言,不是。

主持人:
就是一个架构。

赵开勇:
对,它是一个架构。

主持人:
可以用各种语言来进行编程。 好,今天非常感谢赵开勇能来到我们的现场,下次我们还有一些专家,包括CUDA编程大赛的获奖选手来到我们现场,我们希望观众朋友们可以在CUDA论坛上提出您的问题,包括我们这次没有抽到的问题也会由赵开勇在CUDA上继续回答,感谢大家的收看,欢迎下次再见。 (结束)

使用道具 举报 回复
发表于 2012-9-10 10:51:14
                                            顶
使用道具 举报 回复 支持 反对
发表于 2013-4-18 20:40:24
两年以前的访问,不知道cuda今后能热多久
使用道具 举报 回复 支持 反对
发表于 2013-6-30 18:43:33
也可以跟踪到每一个(不老可),每一个(四瑞的)内存状态什么样。   哈哈!
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册