最近公司成立个专案叫什么CUDA研究,简单看了一下,公司的CUDA技术主要用于喷漆领域和图形处理.
CUDA是什么
CUDA是NVIDIA近来力推的东西,简单的说,CUDA可以认为是一种以C语言为基础的平台,主要是利用显卡强大的浮点运算能力来完成以往需要CPU才可以完成的任务。CPU的特点是什么都能干,但不够专,运算能力不高,而显卡则很专,专门运算图形方面的浮点运算,能力比CPU强10倍以上。但显卡的应用范围狭窄,所以NVIDIA为了让它的显卡在电脑中有更高的地位,就搞了这么个CUDA。想用CUDA,必须是NVIDIA的显卡,而且要是GEFORCE8以后的显卡。平常没什么用,只是在转换视频格式,以及看高清时有点作用。暂时CUDA的作用范围仍然比较狭窄,就看NVIDIA能把它如何发展了。
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员现在可以使用C语言来为CUDA™架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA™的处理器上以超高性能运行。将来还会支持其它语言,包括FORTRAN以及C++。
目前,支持CUDA的GPU销量已逾1亿,数以千计的软件开发人员正在使用免费的CUDA软件开发工具来解决各种专业以及家用应用程序中的问题。这些应用程序从视频与音频处理和物理效果模拟到石油天然气勘探、产品设计、医学成像以及科学研究,涵盖了各个领域。目前市面上已经部署了超过一亿颗支持CUDA的GPU,数以千计的软件开发人员正在使用免费的CUDA软件工具来为各种应用程序加速。
GPU的概念
GPU英文全称Graphic ProcessingUnit,中文翻译为“图形处理器”。GPU是相对于CPU的一个概念,由于在现代的计算机中(特别是家用系统,游戏的发烧友)图形的处理变得越来越重要,需要一个专门的图形的核心处理
GPU的作用
GPU是显示卡的“大脑”,它决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。2D显示芯片在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能。显示芯片通常是显示卡上最大的芯片(也是引脚最多的)。现在市场上的显卡大多采用NVIDIA和ATI两家公司的图形处理芯片。
于是NVIDIA公司在1999年发布GeForce256图形处理芯片时首先提出GPU的概念。GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时。GPU所采用的核心技术有硬体T&L、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬体T&L技术可以说是GPU的标志。
简单说GPU就是能够从硬件上支持T&L(Transform andLighting,多边形转换与光源处理)的显示芯片,因为T&L是3D渲染中的一个重要部分,其作用是计算多边形的3D位置和处理动态光线效果,也可以称为“几何处理”。一个好的T&L单元,可以提供细致的3D物体和高级的光线特效;只不过大多数PC中,T&L的大部分运算是交由CPU处理的(这就也就是所谓的软件T&L),由于CPU的任务繁多,除了T&L之外,还要做内存管理、输入响应等非3D图形处理工作,因此在实际运算的时候性能会大打折扣,常常出现显卡等待CPU数据的情况,其运算速度远跟不上今天复杂三维游戏的要求。即使CPU的工作频率超过1GHz或更高,对它的帮助也不大,由于这是PC本身设计造成的问题,与CPU的速度无太大关系。
关于CPU和GPU的相关问题
第一个问题:
GPU的竞争远比CPU的竞争来得激烈。通用PC的CPU就只有英特尔和AMD两家大厂。而在GPU方面领先的是N记和A记两家厂商,但能生产中低端产品的还有英特尔、3S等好几家厂商。它们的产品虽然不如前两家,但在很多应用方面也能满足用户的需要,所以N记和A记只有拼命往前跑才不会死掉。CPU厂商没有采用GPU的先进工艺是因为CPU厂商都有自己投资的生产线,不可能一下把原来的生产线都淘汰了上新的生产线,那样做可能连当初投入的资金都难以收回。而GPU厂商由于种种原因,一般都是自己设计由别人代工的,比如找台积电代工。代工厂商为了能接到业务,只有不停升级自己的生产设备,这样才能生存下来。所以造成以上原因。
第二个问题
就如你所说的一样,CPU除了处理游戏的AI,情节等方面的数据外,对于有些图像方面也是由它完成的。当微软每次发布新的DX时,并不是每款GPU都能支持DX新的特性,所以有些图像方面的任务还得由CPU来完成。还有有些特性比如重力特性以前是由CPU来完成,现在有些GPU也能支持了,这些任务就由GPU来完成了。
第三个问题
GPU相当于专用于图像处理的CPU,正因为它专,所以它强,在处理图像时它的工作效率远高于CPU,但是CPU是通用的数据处理器,在处理数值计算时是它的强项,它能完成的任务是GPU无法代替的,所以不能用GPU来代替CPU。
另外
现在AMD收购了A记显卡芯片的设计厂商,AMD看到今后CPU和GPU只有走一条融合的道路才能地竞争中占得先机。CPU和GPU如何配合默契才能最大地提高工作效率是AMD现在考虑的问题,也是英特尔的问题。
第四个问题
微软发布windows7 其中一个显著特性就是联合GPU和CPU的强大实力,提升GPU在硬件使用的价值,在Windows7中,CPU与GPU组成了协同处理环境。CPU运算非常复杂的序列代码,而GPU则运行大规模并行应用程序。微软利用DirectXCompute将GPU作为操作系统的核心组成部分之一。DirectX Compute。它让开发人员能够利用GPU的大规模并行计算能力,创造出引人入胜的消费级和专业级计算应用程序。简单的说,DirectXCompute就是微软开发的GPGPU通用计算接口,欲统一GPU通用计算标准。也就是说windows7以后GPU的硬件地位将仅次于CPU,发挥出更大的效用。