优异专业卡降临!CUDA市场总经理专访
泡泡网显卡频道5月29日 近日NVIDIA举行了一次专访活动,在活动中NVIDIA公司CUDA市场总经理Sanford Russell以及中国区公关经理金洋为大家详细讲解了关于通用计算以及CUDA 4.0的一些相关技术,令大家充分了解到了CUDA 4.0在通用计算市场所具备的优势。
● NVIDIA公司中国区公关经理金洋:
Sanford Russell是负责GPU计算的全球总监,简单来说就是负责CUDA的。这次过来主要跟大家介绍一下CUDA4.0,再介绍一下CUDA这几年在业界的变化,或者说整个公司,包括一些大学、一些利用CUDA赚钱的公司怎么看CUDA的,一些最新的变化跟大家分享一下。
● NVIDIA公司CUDA市场总经理Sanford Russell:
谢谢大家今天来参加这个活动。我是Sanford Russell,是CUDA的市场总监。我从1997年就加入了NVIDIA公司,曾经做过产品相关的工作,也做过开发者,所以在这个职位之前有一些其他方面的经验。从2007年开始,我们就开始了GPU计算方面的工作,当时主要是了解客户的需求,然后有逐步的架构和软件的进行。大家如果有什么问题,关于过去还有关于现在以及如何发展到今天这一步的问题,都可以问。
我这个团队所从事的主要工作是围绕着整个硬件的生产系统所有的这些开发者、编程和合作伙伴,还有我们所支持的软件开发出来的语言对于GPU计算的支持,包括像C/C++、Fortran、Direct等等这些。这张图就可以说明我们日常工作的关注内容。
三、四年之前,我们主要关注的工作是在语言、编译器这一块,最近一、两年更多的工作放在了像数学库,以及如何在整个平台上实现成本的管理,特别是像娱乐集群,有些用户会用非常多的GPU,可能是几百台,甚至可能是更大规模的集群,所以涉及到这上面两块,一个是集群的管理,还有工具和合作方、合作者这一块有专门的团队来负责这方面的工作,随着我们的产品和技术的成熟,这方面工作的量也会越来越大。
上面所指的涉及到的是与软件开发公司之间的合作,这个在公司有另外一位高层来负责这方面的工作。针对于每一个具体的应用行业,像油气、制造业、金融、化学、生物等等,这些专门的行业都有专门指定的人和相应软件的开发合作伙伴一起工作。现在围绕CUDA已经有一个非常大的团队,一开始只有4个人,现在有一个非常大的团队,而且是分属不同的业务部门。所以GPU计算对于我们公司来说是具有战略性的,不仅仅是一个简单的产品,可是你看到的只是一个简单的东西,但是背后有很多的东西,包括软件。
● NVIDIA公司中国区公关经理金洋:
NVIDIA并不像很多人认为的那样,只是简单地做Tesla,做CUDA,这是初期的事情。现在考虑真正让用户将GPU的硬件和CUDA集成在一起。我们做了很多管理工作,做了很多支持工具和沟通工作,使得我们这边的支持和服务让用户真正可以方便的应用到GPU,而不仅仅简单的说这是一个卡,我们真正从头到尾一步一步给用户支持,让他真正实现利用GPU的性能。
● NVIDIA公司CUDA市场总经理Sanford Russell:
这个是过去两年当中,我们开展非常重要的工作方面,涉及到研究和教育方面。这对于现在GPU的工作来说是非常重要的一块,因为在五、六年之前,可能这是比较新的领域,但是现在可以看到,已经有很多大学他们已经开设了GPU的课程。右边是CUDA的教学中心,中间这个是CUDA的研究中心,左边是CUDA的卓越中心,卓越中心在中国有两个。从这个上面就可以看出,现在整个CUDA的研究还有教学增长非常迅速,规模也是越来越大。很多大学现在都有CUDA的相关课程,主要是使用C和C++语言,往往本来就有C语言的课程,现在再加入了与CUDA相关的内容。全世界总共有400多家大学有与CUDA相关的教学课程,这样从全世界的地域来说有一个很好的覆盖性,同时通过这些大学毕业出来的学生,他们都掌握了GPU编程的能力。
这些是一些与CUDA有关的书,左下角两本是新出的,叫《GPU COMPUTING GEMS》,书很厚,有800页左右。大学的教授要编这些书,就请大家提交相关材料,后来提交的相关文章太多了,结果就编了两本书,因为如果一本书有1600页就太多了,所以最终出了两本书。
从我们的角度来说,有一点希望大家能够非常清晰的认识到,我们对于GPU计算的看法不是把CPU和GPU对立起来,应该是CPU+GPU,从而实现非常好的的性能。为了实现非常好的的性能,就需要能够充分利用CPU所有的核再加上GPU的能力。
这就是GPU编程,对于GPU编程来说,就是把里面这些关键的功能可以用GPU进行加速的功能给挑出来,而这些应用代码现在主要都是用C语言来写的。为什么CUDA的C语言会有这么多的人去用?因为它本来就是一个用的比较多的语言,我们所提供的是一个C语言的编译器,使得这些编译者可以直接对GPU进行编译。除此以外,我们有一些合作方他们提供的解决办法,像PGI的解决办法,他们的做法是类似的,只是用的不是C语言,是Fortran语言。现在主要用的比较多的是C语言和Fortran语言,而对于API来说,处于非常低层,因此现在要通过编程来使用是比较麻烦的。但是我们相信随着时间的推移,可能这一点会有所改善。但是无论对于API还是对于语言本身,我们对会对它进行支持,这个是我的策略。所以现在支持的像C语言、C++、Fortran、OpenGL,还有Direct等等都有支持的,我们有合作伙伴在做.net的工作,这也让我们感到非常振奋,因为这样可以和微软整个语言系列结合起来。
这是我们的行业合作伙伴的图片,大家可以看到,就从这个架构上来说,我们看垂直的行业,我们公司内部的架构上,也是把这个架构跟这些垂直的行业匹配起来。现在就行业和研究的覆盖范围已经相当大了,但随着时间,我们希望把更多的行业和领域纳入进来,这样就要求以支持更多的语言或者支持更多的语言特性或者添加库,这些就是我们现在要开展工作的地方。比较新的一个行业就是制造业,制造业本身也是非常重量级的行业,比如像汽车、飞机、火车,还有巴士、轮船等等,他们的设计很多都会用到这个软件。
● NVIDIA公司CUDA市场总经理Sanford Russell:
简单讲一下CUDA 4.0,这个是最新的版本。很快就会出货,现在还是属于RC的阶段(发行候选的阶段),等待着开发者给我们提供一些建议。这个上面是我们出的各个不同的版本以及所针对的目标,1.0主要是针对研究者和一些比较早尝试使用的人。在2.0的时候,就增加了一些双精度的library,主要是针对一些科学界的人士和一些HPC的运动。在3.0的时候,就有了更多的library,我们也有了开发的工具,使得在这个阶段就可以让一些软件的开发者也开始在使用。到4.0的时候,就使得整个使用更加的便利,所有的这些特性设计都有这一点考虑在内。
尽管CUDA 4.0有很多的特性,上面列出的三点对于现在的开发者来说是最为重要的。
第一个就是虚拟地址。左边这个就是原来的情况,对于原来的软件来说,开发者得自己知道这个内存到底在哪里。也就是说,对于每一个内存空间都有相应的独特的地址。到右边这个新的4.0就不一样了,整个系统内存,还有显存是有一个单一的地址空间。这个就好像一个图书馆一样,你把一本书放进去了,原来有几个房间,你得记住到底在什么地方,现在就变成一个房间,所以对于开发者来说,尤其刚刚用CUDA的开发者来说,会变得简单一些。要强调的是,所有这些新的改进特性都是基于我们所收到的客户反馈,这就是为什么在CUDA C上面有这么快的转变,我们收到反馈以后,做出一些调整,做出一些新的设计,新的设计让他们去试用,再听他们的意见,然后出去的结果再去试,再让整个市场受益。
● NVIDIA公司中国区公关经理金洋:
NVIDIA并不是闭门造车,我们CUDA之所以被这么多的用户所接受,是因为我们在开发的过程中跟他们进行沟通,他们的意见很大程度上都能在下一款的CUDA上得到改进。所以CUDA的目的以及CUDA在研发过程中,都是以用户的需求为最根本的问题来解决。
● NVIDIA公司CUDA市场总经理Sanford Russell:
第二个特性就是GPUDirect v2.0,原来有多个GPU,希望在两个GPU之间实现信息或者数据的传输,先需要把一个GPU的内容传到系统内存里面,再从系统内存考到另外一个GPU,然后还要释放系统内存,所以整个过程还是比较复杂的。2.0的不一样之处是实现了数据在两个GPU之间直接的传输,这样显然对于代码来说,相对来说比之前要减少,而且速度也会加快。应该说所有的这些改进都是以客户需求为本的,所以所有的这些都是以客户告诉我们他们需要什么,他们有什么问题,我们来提供解决办法,帮助客户、帮助行业来解决这个问题。
现在可以看到,这个上面两个版本的GPU Direct,1.0主要是同一个系统之间的;2.0是针对一个系统之内。所以现在开始解决这种非常大的集群之内的问题。
接下来这张图是Thrust,就是一个编程环境,类似于C++里面的标准模板库,这里只不过是在GPU里面提供了这么一个Thrust。这是我们所支持的一种非常标准的C++的编程模式。原来是来自于NVIDIA的研究项目,我们支持的open google这个项目有一年多的时间,后来把它拿到了我们这个产品当中,作为其中的特性之一。也很好的实现了CPU和GPU之间的合作,通过Thrust这个设计,可以让更适合的处理器完成相应的工作,主要看这个处理器有没有能力完成这项相应的工作而来分配这项任务。
刚才只是简单的讲了CUDA 4.0的三个特性,实际上有很多的特性,但我认为这三个是最重要的,有助于大家理解CUDA 4.0一些比较新的地方。
简单的理解,CUDA架构就是让之前只能处理图像渲染的GPU通用化处理任何类型的计算,而能够实现任意类型计算的处理器只有CPU,但CPU的计算能力相对于CPU来说很弱,尤其是在处理一些高性能计算的时候CPU的性能明显不足。GPU的通用化可以让需要高性能计算的时候直接调用GPU进行计算,CPU仅仅是处理程序本身的一些工作。
目前,支持CUDA的GPU销量已逾1亿,数以千计的软件开发人员正在使用免费的CUDA软件开发工具来解决各种专业以及家用应用程序中的问题。这些应用程序从视频与音频处理和物理效果模拟到石油天然气勘探、产品设计、医学成像以及科学研究,涵盖了各个领域。目前市面上已经部署了超过一亿颗支持CUDA的GPU,数以千计的软件开发人员正在使用免费的CUDA软件工具来为各种应用程序加速。
● CUDA 4.0架构版本其它特性与功能:MPI与CUDA应用程序相结合,当应用程序发出MPI收发调用指令时,例如OpenMPI等改编的MPI软件可通过Infiniband与显卡显存自动收发数据。
GPU多线程共享,多个CPU主线程能够在一颗GPU上共享运行环境,从而使多线程应用程序共享一颗GPU变得更加轻松。
单CPU线程共享多GPU,一个CPU主线程可以访问系统内的所有GPU。 开发人员能够轻而易举地协调多颗GPU上的工作负荷,满足应用程序中“halo”交换等任务的需要。
全新的NPP图像与计算机视觉库,其中大量图像变换操作让开发人员能够快速开发出成像以及计算机视觉应用程序。
● 点击下载开发包
去年NVIDIA给我们带来其首款DX11产品Fermi的时候,全新的架构设计与近乎完美的执行效率让我们深刻的感受到NVIDIA在技术上的强大。NVIDIA的工程师为了让显卡能够真正体现出优势,并没有像AMD那样仅仅是对上一代产品的架构进行升级,而是采用了全新的架构设计。不得不说,Fermi确实是一款非常优秀的产品。
上一代GF100核心拥有多达30亿个晶体管,堪称史上最复杂的GPU,超大的晶体管规模导致GF100核心功耗偏高。所以,最后当时NVIDIA决定在GF100核心的基础上屏蔽了一组流处理器(从512个降到了480个),以控制显卡的整体功耗。因此当时基于GF100核心的桌面级以及专业级的优异产品流处理器均为480个。
随着GF100改进版本——GF110的发布,弥补了GF100在流处理器数量上的遗憾,从480个流处理器提升到了512个流处理器,这样在显卡的3D以及通用计算性能上就有进一步的提升。基于GF110的桌面级产品已于去年正式发布,而目前面向于专业级的产品也已经发布——M2090。
对于NVIDIA以及任何芯片设计公司来说,改进工艺都是他们非常重视的一件事情,也同样是芯片生产厂商(这里特指台积电)非常重视的事情。改进工艺可以让生产效率得以提高、可以让良品率更有保障、甚至可以让芯片的性能更加出色。M2090就是一款采用改进的40nm工艺制程的产品,改进后的工艺带来了更低的功耗、更低的温度以及更好的执行效率。
记者:我想问几个关于硬件方面的问题,关于NVIDIA最近的Tegra产品比较火爆,请问NVIDIA是否有计划将关于CUDA方面一些比较便捷的应用移植到Tegra产品系列中来?
NVIDIA公司CUDA市场总经理Sanford Russell:现在讲未来计划可能还是不行,但是对于公司来说,毫无疑问,CUDA是一项具有战略意义的产品。
记者:下一步NVIDIA工作的重点将如何在CUDA的运算上和在图形渲染方面做出平衡?下一代硬件会像之前480那样,推出一种通用型的架构核心,还是专门针对Tesla和GeForce研发出来两种不同的核心呢?
NVIDIA公司CUDA市场总经理Sanford Russell:现在我们是用统一的核,这个策略现在还是非常成功的。但是对于高性能计算,有一些专门的版本,但是核的架构还是一样的。而这一点对于开发者来说也非常重要,这样使得他们可以针对于现在已经有的2亿5000万个具有CUDA GPU进行编程。对于我们来说,我们认为最关键的就是对于适当市场的关注必须要确保,对重要的特性我们是需要支持的,比如像对于高性能计算这个市场,比如说像错误修正,还有双精度,这些对于Tesla这个产品系列显然是非常重要的。我们的架构师是非常聪明的,所以他们可以帮助我们来实现这一点。
记者:我的最后一个问题,之前NVIDIA放出了一个关于光线追踪的demo,基于CUDA并行计算的光线追踪何时能进入到一个平民化和实用化的阶段?是否有计划CUDA与游戏开发厂商合作来推出一种游戏图形引擎呢?
NVIDIA公司CUDA市场总经理Sanford Russell:现在AutoDesk就在用我们的产品,他们的demo应该是一年前就有了,现在也已经开始出货了,其他的一些合作方应该也有,但我现在还不能说。
NVIDIA公司中国区公关经理金洋:光线追踪我们真正在做的是引擎,iRay,我们收购这家公司之前他是基于CPU的,效率比较低。现在把iRay用CUDA,现在iRay光线追踪引擎在GPU上跑的速度非常快,而这个引擎被业界非常多的公司所采纳,像AutoDesk。NVIDIA不会推出一个实际的产品给用户,我们还是做引擎,站在客户后面,像AutoDesk,像其他一些公司利用这个引擎去做光线追踪,光线追踪已经在NVIDIA帮助之下,已经实现实用化了。
NVIDIA公司CUDA市场总经理Sanford Russell:对于游戏来说,CUDA最大的使用是在物理引擎,因为它需要对编语言,在物理引擎方面,是使用CUDA是最多的一部分。
NVIDIA公司中国区公关经理金洋:所有的PhysX都使用CUDA,PhysX就是CUDA在游戏、物理计算方面的一个表现。CUDA或者说整个GPU并行的计算体系在PhysX上是得到最大的体现。大家看PhysX和CUDA是两个不同的东西,其实PhysX是基于CUDA去做的,CUDA最成熟、集成度广的就是PhysX。
NVIDIA公司CUDA市场总经理Sanford Russell:对于PhysX的开发来说,是用C语言进行的,所以对于开发者来说,CUDA C就是他们非常自然的一个选择。
NVIDIA公司中国区公关经理金洋:我们提供非常多的选择给游戏开发商,游戏开发商会不会基于CUDA编写这个游戏是取决于他们自己,可能现在并不是他们所需要的,对于游戏开发商来说,他们熟悉的是OpenGL,还有Direct X,这些方面是他们熟悉的工具,同时还有PhysX,非常方便的利用到CUDA的性能。如果有一天有一个游戏开发商说不需要Open GL,想用CUDA,这个没问题。现在就提供他最习惯用的解决方案。■<