Windows 7与CUDA架构的兼容性测试
图形巨头NVIDIA推出的GPU通用计算技术CUDA相信大家都有所了解,然而随着Windows 7逐渐成为热门的关注对象,有一部分人对Windows 7是否支持CUDA、能否很好的支持CUDA产生了质疑。原因很直接——因为Windows 7支持微软自家的Direct compute!
但事实真的是这样吗?今天,笔者就再一次针对CUDA的概念、架构等进行剖析,并且分别在Windows Vista与Windows 7操作系统上对CUDA性能进行对比测试,以达到拨乱反正的效果。
在进行正式的对比评测之前,我们首先必须要了解CUDA到底是什么?而笔者也发现正是因为很多人没有对CUDA进行真正准确客观的了解,才导致了对CUDA和Direct Compute的误解。我们先来看看NVIDIA官方如何解释CUDA这个概念:
CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员现在可以使用C语言来为CUDA架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA的处理器上以超高性能运行。将来还会支持其它语言,包括FORTRAN以及C++。
NVIDIA提供的CUDA开发包中的C语言编译器版本更新很快
可以看到,CUDA真正意义上来说是一种通用并行计算架构,但又包含了CUDA指令集架构和GPU内部的并行计算引擎。就如同CPU的情况一样,X86的架构也包含ISA和执行指令的硬件架构。各种应用程序都基于这个架构进行开发并在此上运行。可以说CUDA架构的GPU是图形渲染架构与并行计算架构的合体!
CUDA本意就是一种架构,但很多人认为CUDA是一种语言、或者是开发平台,这可能跟NVIDIA最初的宣传、推广策略有关系。在CUDA架构诞生之初(GeForce 8时代),尚不存在专门针对GPU并行计算的开发平台以及编程语言,因此NVIDIA必须给程序员提供一种简单、易上手、并且完整的软件开发解决方案,这样NVIDIA所发布的CUDA包当中就包括了针对GPU的C语言编译器、纠错器/制模器、专用驱动和标准函数库等。
除了支持自家C语言编译器之外,更多的语言及API都能运行在CUDA架构
上图就很好的反映出了CUDA与应用程序接口(API)以及各种语言编译器的关系,其中的DX11计算也就是Direct Compute,可以看出CUDA架构和Direct Compute并无冲突。包括CUDA自家编译器所采用的C语言扩展、OpenCL应用程序接口、Fortran甚至C++等都可以运行在CUDA架构之上,未来CUDA还将支持更多的语言。在整个产业的共同推动下,GPU计算可谓是前途无量!
实际上,在微软的一份Direct Compute宣传PPT中,我们也可以看到Direct Compute是完全建立在符合统一渲染架构GPU的基础之上的。实际上,从DirectX 10开始,NVIDIA和AMD纷纷淡化管线和顶点的概念,就是为了使得流处理器可以执行更多非3D的应用,而如今微软推出的Direct Compute,无疑对GPU通用计算应用有很大的推动性。#p#page_title#e#
理清了CUDA以及Direct Compute的关系,我们来进入测试阶段,看看Windows 7中的Direct Compute到底对NVIDIA CUDA有没有影响,再一次验证Direct Compute到底和CUDA是否存在冲突与竞争的关系。
本次我们采用封装接口为LGA1156的i7搭配刚刚发布的P55主板进行测试,显卡采用Inno3D推出的iChill-GTX260+金牛典藏版 ,并分别在不支持Direct Compute的Windows Vista操作系统和支持Direct Compute的Windows 7操作系统下进行对比。其中Windows Vista为64Bit,Windows 7为32Bit。
测试程序我们选择了三个最具代表性的CUDA软件,分别为国产转码软件MediaCoder、CyberLink推出的视频编辑软件Power Director(威力导演)以及大家非常熟悉的转码软件Badaboom,并分别以同样的方法在Windows Vista和Windows 7下进行测试
Badaboom是NVIDIA联合Elemetal制作的Geforce GPU视频转码工具,在CUDA标准推出初期,这技术是唯一一款支持CUDA加速的视频转码软件,通过这款软件可以直接利用CUDA加速给iphone、iTouch、PSP、Apple TV等多种设备转换视频。目前,该软件最新版本为1.2.1。
本次测试所采用的片源为电影《X战警3》的一个长达11分钟的预告片,原分辨率为1920×1080,在本次测试中我们将其转换成720P的MP4格式,以下分别是在Windows Vista和Windows 7下的性能截图:
Windows Vista下:转换时间为5分23秒
Windows 7操作系统下,转换时间同样为5分23秒
从两次转换的完成时间来看,在Windows Vista和Winows 7下,所花费的时间完全一样,都为5分钟23秒,可以看出操作系统完全不影响CUDA效能。我们接着来看下一个测试!#p#page_title#e#
MediaCoder是一款国产转码软件,在之前我们已经对这款软件有过非常详细的测试。这款软件相对于前面的Badaboom来说,最大的优势就在于其不仅仅可以利用GPU中的流处理器单元进行视频转码加速,同时还可以利用CPU进行加速,也就是说其采用了GPU+CPU联合加速。性能要比Badaboom好很多。
本次我们利用这款软件转换1080P高清影片《007皇家赌场》的一个预告片,并分别在Windows Vista和Win 7下进行测试。下面是测试成绩:
Windows Vista:358秒完成,压缩率31.83:1
Windows 7:花费时间374秒,压缩率31.62:1
可以看出,在Vista和Win7中,两次测试所花费的时间仅差16秒,而这主要的原因就是在不同的系统平台下压缩率不一样造成,如果排除压缩率差距的话,相信这两者仍然不会有差距,所以再一次证明了在Win7操作系统下,CUDA的效能并没有一点损失。
接下来我们将要通过一个视频编辑软件来测试NVIDIA CUDA在Vista或Win7操作系统下的性能差距,这款软件名叫威力导演(PowerDirector),出自著名的多媒体软件公司CyberLink。NVIDIA CUDA在这款软件中的主要作用是加速视频预览与视频渲染,其实也是编码的过程。
这一部分测试我们选择了一段AVI视频,并对其加上万花筒特效,测试渲染(编码)时间,最后的成绩如下:
Windows Vista:花费时间7分44秒
Windows 7:花费时间7分35秒
在这一部分测试中,我们惊奇的发现在Windows 7操作系统下,视频渲染的速度竟然比Vista还快9秒,而输出的格式、大小完全一样,又一次证明了Windows 7中的Direct Compute丝毫不影响CUDA的发挥。
通过几个软件的测试,我们已经完全可以充分的证明前文所说的Direct Compute和CUDA不存在冲突与竞争的关系,反而是一种互补的关系,如果没有CUDA架构的GPU,那么Direct Compute也根本不可能实现。所以,担心CUDA不支持Windows 7完全是莫须有的想法。
前面我们说到,CUDA从本质上将是一种硬件架构,但又含有一个CUDA C编译器,而实际上,CUDA C与Direct Compute以及OpenCL等等应用程序接口从定位上就不一样,或者说使用人群不一样。CUDA C是一种高级语言,那些对硬件了解不多的非专业人士也能轻松上手;而Direct Compute则是针对硬件的应用程序开发接口,它能给程序员更多对硬件的控制权,相应的上手及开发会比较难一些。
我们现在回头看NVIDIA为Windows 7做出的事情,首先在硬件上CUDA架构的GPU可以完美的支持Windows 7以及DirectX 11中的Direct Compute技术;另一方面,驱动程序上NVIDIA也是首先提供了Win7以及Direct Compute的支持,并且在最近的Power of 3三剑平台的宣传中,将Windows 7作为Power of 3推荐操作系统,可见NVIDIA已经完全为Windows 7的正式到来做好了准备。