第二期有奖讨论:CUDA你知道多少

学习并了解一下CUDA对计算机的新技术实现.

CUDA 的核心有三个重要抽象概念,它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动(表2)。
开发库是基于CUDA技术所提供的应用开发库。目前CUDA的1.1版提供了两个标准的数学运算库——CUFFT(离散快速傅立叶变换)和 CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。
运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(Host Code),一种是运行在GPU上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。
由于目前存在着多种GPU版本的NVIDIA显卡,不同版本的GPU之间都有不同的差异,因此驱动部分基本上可以理解为是CUDA-enable的GPU 的设备抽象层,提供硬件设备的抽象访问接口。CUDA提供运行期环境也是通过这一层来实现各种功能的。目前基于CUDA开发的应用必须有NVIDIA CUDA-enable的硬件支持,NVIDIA公司GPU运算事业部总经理Andy Keane在一次活动中表示:一个充满生命力的技术平台应该是开放的,CUDA未来也会向这个方向发展。由于CUDA的体系结构中有硬件抽象层的存在,因此今后也有可能发展成为一个通用的GPGPU标准接口,兼容不同厂商的GPU产品

good!看到这么多高手的回复,小女子学习了!
CUDA(Compute Unified Device Architecture),显卡厂商NVidia推出的运算平台。
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员现在可以使用C语言来为CUDA™架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA™的处理器上以超高性能运行。 将来还会支持其它语言,包括FORTRAN以及C++。
随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像计算以外的目的。
目前只有G80、G92、G94和GT200平台的NVidia显卡才能使用CUDA,工具集的核心是一个C语言编译器。G80中拥有128个单独的ALU,因此非常适合并行计算,而且数值计算的速度远远优于CPU。
CUDA的SDK中的编译器和开发平台支持Windows、Linux系统,可以与Visual Studio2005集成在一起。
Geforce8CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动(表2)。
开发库是基于CUDA技术所提供的应用开发库。目前CUDA的1.1版提供了两个标准的数学运算库——CUFFT(离散快速傅立叶变换)和CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。
运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(Host Code),一种是运行在GPU上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。
由于目前存在着多种GPU版本的NVidia显卡,不同版本的GPU之间都有不同的差异,因此驱动部分基本上可以理解为是CUDA-enable的GPU的设备抽象层,提供硬件设备的抽象访问接口。CUDA提供运行期环境也是通过这一层来实现各种功能的。目前基于CUDA开发的应用必须有NVIDIA CUDA-enable的硬件支持,NVidia公司GPU运算事业部总经理Andy Keane在一次活动中表示:一个充满生命力的技术平台应该是开放的,CUDA未来也会向这个方向发展。由于CUDA的体系结构中有硬件抽象层的存在,因此今后也有可能发展成为一个通用的GPGPU标准接口,兼容不同厂商的GPU产品

CUDA(Compute Unified Device Architecture)
是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动(表2)。
开发库是基于CUDA技术所提供的应用开发库。目前CUDA的1.1版提供了两个标准的数学运算库——CUFFT(离散快速傅立叶变换)和CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。
运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(Host Code),一种是运行在GPU上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。
由于目前存在着多种GPU版本的NVIDIA显卡,不同版本的GPU之间都有不同的差异,因此驱动部分基本上可以理解为是CUDA-enable的GPU的设备抽象层,提供硬件设备的抽象访问接口。CUDA提供运行期环境也是通过这一层来实现各种功能的。目前基于CUDA开发的应用必须有NVIDIA CUDA-enable的硬件支持,NVIDIA公司GPU运算事业部总经理Andy Keane在一次活动中表示:一个充满生命力的技术平台应该是开放的,CUDA未来也会向这个方向发展。由于CUDA的体系结构中有硬件抽象层的存在,因此今后也有可能发展成为一个通用的GPGPU标准接口,兼容不同厂商的GPU产品

CUDA™ 工具包是一种针对支持CUDA功能的GPU(图形处理器)的C语言开发环境。CUDA开发环境包括:
· nvcc C语言编译器
· 适用于GPU(图形处理器)的CUDA FFT和BLAS库
· 分析器
· 适用于GPU(图形处理器)的gdb调试器(在2008年3月推出alpha版)
· CUDA运行时(CUDA runtime)驱动程序(目前在标准的NVIDIA GPU驱动中也提供)
· CUDA编程手册
CUDA开发者软件开发包(SDK)提供了一些范例(附有源代码),以帮助使用者开始CUDA编程。这些范例包括:
· 并行双调排序
· 矩阵乘法
· 矩阵转置
· 利用计时器进行性能评价
· 并行大数组的前缀和(扫描)
· 图像卷积
· 使用Haar小波的一维DWT
· OpenGL和Direct3D图形互操作示例
· CUDA BLAS和FFT库的使用示例
· CPU-GPU C—和C++—代码集成
· 二项式期权定价模型
· Black-Scholes期权定价模型
· Monte-Carlo期权定价模型
· 并行Mersenne Twister(随机数生成)
· 并行直方图
· 图像去噪
· Sobel边缘检测滤波器
· MathWorks MATLAB® 插件 (点击这里下载)
新的基于1.1版CUDA的SDK 范例现在也已经发布了。要查看完整的列表、下载代码,请点击此处。
技术功能
· 在GPU(图形处理器)上提供标准C编程语言
· 为在支持CUDA的NVIDIA GPU(图形处理器)上进行并行计算而提供了统一的软硬件解决方案
· CUDA兼容的GPU(图形处理器)包括很多:从低功耗的笔记本上用的GPU到高性能的,多GPU的系统。
· 支持CUDA的GPU(图形处理器)支持并行数据缓存和线程执行管理器

CUDA的出现,使一直孤军奋战的CPU终于有了工作伙伴,提高运行速度不再是无限压榨CPU的最高速度,在几百个辛勤的“小弟”的帮助下,CPU从抹桌洗碗的孤单打工族,摇身一变成了部门总管,哪里有工作,指挥小弟们一拥而上。有了CUDA,几乎已到极限的运行速度再提高几百倍不是梦,计算机业似乎踏入了一个全新的领域。
但对于这种速度的提升,前途却不是那么坦荡,开发人员现在可以用C语言编写程序,利用GPU来协助CPU处理数据,听起来似乎万事俱备,但其复杂度却不是C语言编写程序可比的,CUDA编程语言几百页的说明要烂熟于心,这已经不是易事,缺乏专业的开发工具,使编程的第一步难上加难,不管是WINDOWS还是LINUX,在安装了对应的驱动,SDK,工具包之后,还要配合别的软件以及修改N多注册表项,一个字节的修改错误导致的出错提示,让初学者们已经搜尽百度。高手们不断的写出模式包,安装教程,说明,却又被软件版本不断淘洗,某个模式包对应某个版本,某种修改对应某个版本的工具包……
用CUDA编写程序时,又被各种数字的乘法搞晕,栅格中的几行几列,乘以几加几,全部要用编程员的大脑计算,检验起来更是头大如斗,从LOCAL到SHARED,各种不同的缓存速度又不同,可以处理的数据也不同……
开发环境的简化,需要大量程序员的努力,但这种大量努力的前提,是GPU技术的需求性的提高。利用GPU提高运算速度是可行的,但必须是大量单调却统一的计算工作,再分配给所有GPU并发执行,所以提速几百倍只限于一部分工作,而且需要很好的统筹安排,这也要耗费CPU的传统能力和程序员的脑细胞。
然而目前来讲,GPU并不是电脑的“制式武器”,只有NVIDIA的显卡支持此种技术,这使得有些初学者不得不用CPU来模拟GPU的功能,性能方面的数据完全无法参考。打开市场,让NVIDIA显卡成为电脑内必要的组成部分,成了一切进展的前提,由此推断,NVIDIA与两大CPU厂商合作,使其集成在主板上的可能性是很高的,也有可能与笔记本厂商合作,使大部分笔记本带有NVIDIA的显卡,使之有CUDA开发的可能。
总而言之,提高市场占有度,才能提高CUDA开发的可能性和必要性,需求量有了,才能推动开发环境的简化,编程员们才能更快的使用GPU进行大规模的软件开发。CUDA的GPU加速之路似易实难,好象战士的武器升级了,射程增加10倍,以为是激光武器,谁知道到手的是使用专用子弹,操作繁索,根据天气条件命中率不同的越远程狙击步枪。究竟有几个战士会选择这种射程的升级呢?

CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
CUDA特别适用于中等粒度的并行计算,比较适合的领域包括:有限元,信号处理,神经网络以及人工智能。
开头所说的用于病毒扫描,我觉得更合适的说法是病毒特征码扫描,很适合CUDA的场景(这个其实和GFW差不多,GFW今后可能是CUDA单一的最大用户)
另外,人工智能更是CUDA的大好应用场景(NVidia应该利用CUDA编写国际象棋程序,一台至强,配4张NVidia的加速卡,性能应该可以深蓝叫板)

另外,数据库服务器和搜索引擎,我觉得可以用CUDA的概念进行一下改造,或许有更好的性能。

CUDA某种意义上类似超并行机(但是每个CPU的性能都比较弱)

CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员现在可以使用C语言来为CUDA™架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA™的处理器上以超高性能运行。 将来还会支持其它语言,包括FORTRAN以及C++。
随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像计算以外的目的。
目前只有G80、G92、G94和GT200平台的NVidia显卡才能使用CUDA,工具集的核心是一个C语言编译器。G80中拥有128个单独的ALU,因此非常适合并行计算,而且数值计算的速度远远优于CPU。
CUDA的SDK中的编译器和开发平台支持Windows、Linux系统,可以与Visual Studio2005集成在一起。
Geforce8CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动(表2)。
开发库是基于CUDA技术所提供的应用开发库。目前CUDA的1.1版提供了两个标准的数学运算库——CUFFT(离散快速傅立叶变换)和CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。
运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(Host Code),一种是运行在GPU上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。
由于目前存在着多种GPU版本的NVidia显卡,不同版本的GPU之间都有不同的差异,因此驱动部分基本上可以理解为是CUDA-enable的GPU的设备抽象层,提供硬件设备的抽象访问接口。CUDA提供运行期环境也是通过这一层来实现各种功能的。目前基于CUDA开发的应用必须有NVIDIA CUDA-enable的硬件支持,NVidia公司GPU运算事业部总经理Andy Keane在一次活动中表示:一个充满生命力的技术平台应该是开放的,CUDA未来也会向这个方向发展。由于CUDA的体系结构中有硬件抽象层的存在,因此今后也有可能发展成为一个通用的GPGPU标准接口,兼容不同厂商的GPU产品

CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动(表2)。
开发库是基于CUDA技术所提供的应用开发库。目前CUDA的1.1版提供了两个标准的数学运算库——CUFFT(离散快速傅立叶变换)和CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。
运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(Host Code),一种是运行在GPU上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。
由于目前存在着多种GPU版本的NVIDIA显卡,不同版本的GPU之间都有不同的差异,因此驱动部分基本上可以理解为是CUDA-enable的GPU的设备抽象层,提供硬件设备的抽象访问接口。CUDA提供运行期环境也是通过这一层来实现各种功能的。目前基于CUDA开发的应用必须有NVIDIA CUDA-enable的硬件支持,NVIDIA公司GPU运算事业部总经理Andy Keane在一次活动中表示:一个充满生命力的技术平台应该是开放的,CUDA未来也会向这个方向发展。由于CUDA的体系结构中有硬件抽象层的存在,因此今后也有可能发展成为一个通用的GPGPU标准接口,兼容不同厂商的GPU产品
CUDA的出现,使一直孤军奋战的CPU终于有了工作伙伴,提高运行速度不再是无限压榨CPU的最高速度,在几百个辛勤的“小弟”的帮助下,CPU从抹桌洗碗的孤单打工族,摇身一变成了部门总管,哪里有工作,指挥小弟们一拥而上。有了CUDA,几乎已到极限的运行速度再提高几百倍不是梦,计算机业似乎踏入了一个全新的领域。
但对于这种速度的提升,前途却不是那么坦荡,开发人员现在可以用C语言编写程序,利用GPU来协助CPU处理数据,听起来似乎万事俱备,但其复杂度却不是C语言编写程序可比的,CUDA编程语言几百页的说明要烂熟于心,这已经不是易事,缺乏专业的开发工具,使编程的第一步难上加难,不管是WINDOWS还是LINUX,在安装了对应的驱动,SDK,工具包之后,还要配合别的软件以及修改N多注册表项,一个字节的修改错误导致的出错提示,让初学者们已经搜尽百度。高手们不断的写出模式包,安装教程,说明,却又被软件版本不断淘洗,某个模式包对应某个版本,某种修改对应某个版本的工具包……
用CUDA编写程序时,又被各种数字的乘法搞晕,栅格中的几行几列,乘以几加几,全部要用编程员的大脑计算,检验起来更是头大如斗,从LOCAL到SHARED,各种不同的缓存速度又不同,可以处理的数据也不同……
开发环境的简化,需要大量程序员的努力,但这种大量努力的前提,是GPU技术的需求性的提高。利用GPU提高运算速度是可行的,但必须是大量单调却统一的计算工作,再分配给所有GPU并发执行,所以提速几百倍只限于一部分工作,而且需要很好的统筹安排,这也要耗费CPU的传统能力和程序员的脑细胞。
然而目前来讲,GPU并不是电脑的“制式武器”,只有NVIDIA的显卡支持此种技术,这使得有些初学者不得不用CPU来模拟GPU的功能,性能方面的数据完全无法参考。打开市场,让NVIDIA显卡成为电脑内必要的组成部分,成了一切进展的前提,由此推断,NVIDIA与两大CPU厂商合作,使其集成在主板上的可能性是很高的,也有可能与笔记本厂商合作,使大部分笔记本带有NVIDIA的显卡,使之有CUDA开发的可能。
总而言之,提高市场占有度,才能提高CUDA开发的可能性和必要性,需求量有了,才能推动开发环境的简化,编程员们才能更快的使用GPU进行大规模的软件开发。

CUDA 的核心有三个重要抽象概念,它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动(表2)。
开发库是基于CUDA技术所提供的应用开发库。目前CUDA的1.1版提供了两个标准的数学运算库——CUFFT(离散快速傅立叶变换)和 CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。
运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(Host Code),一种是运行在GPU上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。
由于目前存在着多种GPU版本的NVIDIA显卡,不同版本的GPU之间都有不同的差异,因此驱动部分基本上可以理解为是CUDA-enable的GPU 的设备抽象层,提供硬件设备的抽象访问接口。CUDA提供运行期环境也是通过这一层来实现各种功能的。目前基于CUDA开发的应用必须有NVIDIA CUDA-enable的硬件支持,NVIDIA公司GPU运算事业部总经理Andy Keane在一次活动中表示:一个充满生命力的技术平台应该是开放的,CUDA未来也会向这个方向发展。由于CUDA的体系结构中有硬件抽象层的存在,因此今后也有可能发展成为一个通用的GPGPU标准接口,兼容不同厂商的GPU产品

CUDA是一种通用并行计算架构.可用于科学研究,模拟计算,动画制作等!

著名杀毒软件厂商卡巴斯基也在利用Tesla平台的运算性能来改进安全服务,这听起来似乎与我们普通用户的日常生活更为接近一些。
Nvidia未来的重点已经不只是显卡一小块市场,其实这家图形巨头凭借CUDA架构的Tesla GPGPU平台早就打算在运算领域分上一杯羹,比如说Tesla GPGPU平台可以用于制造对并行运算任务相当倚重的超级计算机,另外科学领域对GPGPU运算性能的需求也较旺盛。更令人关注的还在后头,据称著名杀毒软件厂商卡巴斯基也在利用Tesla平台的运算性能来改进安全服务,这听起来似乎与我们普通用户的日常生活更为接近一些。
早前已经有消息报道过,Nvidia的CUDA架构是可以用于运行安全软件的,同时强大的运算性能可以令安全软件的扫描速度获得显著的提升。除此之外,俄罗斯安全厂商卡巴斯基还在自家的安全基础架构内整合了Nvidia的Tesla S1070单元,以利用Tesla强大的并行运算能力来改善客户的系统安全防护。卡巴斯基表示,Tesla GPU在某些任务里表现远超主频2.6GHz的Core 2 Duo处理器,具体的领先幅度居然可达360倍之多。
卡巴斯基重建了其相似性识别算法,并且将之优化为可以同时执行数十万的指令。在这个过程里,卡巴斯基的技术人员们利用了Nvidia的CUDA SDK开发环境来实现优化的目的,CUDA SDK允许开发者采用标准程序语言来针对最新一代的Nvidia图形处理器(GPU)开发程序。
不过有一点不得不提,目前并非所有的普通Nvidia显卡用户都能从该项技术里获益,但是卡巴斯基开始采用CUDA技术很可能是这项技术走向普及的一个重要标志。目前Nvidia和AMD都在积极推进并行运算技术,并且都在提供一些初步的GPGPU功能,不过这些功能主要集中在视频编码领域。

GPU超强的计算能力让它在通用计算领域大有可为,而CUDA则让它变成可能,简单易用的开发环境让CUDA主导起GPU计算的革命。
CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。跟以往的GPGPU概念不同的是,CUDA是一个完整的解决方案,包含了API、C编译器等,能够利用显卡核心的片内L1 Cache共享数据,使数据不必经过内存-显存的反复传输,shader之间甚至可以互相通信。对数据的存储也不再约束于以往GPGPU的纹理方式,存取更加灵活,可以充分利用stream out特性。以上几点都将大大提高GPGPU应用的效率。例如,在游戏中我们可以使用CUDA来让GPU承担整个物理计算,而玩家将会获得另他们感到惊奇的性能和视觉效果。另外,用于产品开发和巨量数据分析的商业软件也可以通过它来使用一台工作站或者服务器完成以前需要大规模的计算系统才能完成的工作。这一技术突破使得客户可以任何地方进行实时分析与决策。同时,一些以前需要很先进的计算技术来达到的强大计算能力的科学应用程序,也不再受限在计算密度上;使用CUDA的计算可以在现有的空间里为平台提供更强大的计算性能。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
CUDA工具包推出已有1年,它的推出马上受到了众多软件/游戏开发商以及科研机构和程序爱好者的欢迎,NVIDIA方面也将发布最新的CUDA 2.0版本。相信在未来,CUDA将会受到越来越多的领域的支持。目前,支持CUDA环境的GPU主要有采用统一渲染架构的显示核心。

CUDA的未来
首先我们从GPU的处理能力来看,现在的显卡和游戏是互相推动的发展,游戏需要更强劲的GPU,GPU为了满足游戏的需求也必须要不断的升级,可以预计未来GPU计算能力还会继续不断的增加。那么现在对于CUDA的开发者来说,CUDA学习还有CUDA的软件能够随着GPU的性能提升而获利。
目前已发布软件众多的CUDA技术的软件,比如鼎鼎大名的PhotoShop CS4,根据NVIDIA表示在未来一段时间里也将会有不少其他方面的CUDA软件将出现。
视频功能的日渐丰富是当今计算机发展的主流趋势,这些软件通过GPU 的提升可以明显的得到更快、更连贯的显示效果。而这些性能的改变单靠提升CPU的运算性能,是无法完全实现的。可以说,CUDA将GPU强大的浮点运算能力转化为全新的应用方式更加简单,将成为PC机正在经历的一场全新变革;我们的数字生活也将会因CUDA开发GPU强大运算能力而步入全新的视觉时代。未来随着更多的软件开发人员加入CUDA开发GPU强大的运算能力,CUDA会带给我们更多的惊喜。未来CUDA带来一个新的GPU使用方式。

GPU Impulse Reverb一定会在电脑音乐发展历史上记下一笔,它是目前第一款可以利用显卡来运算的效果器插件,这意味着你可以用它来得到高精度的卷积混响效果,而不费CPU一丝一毫之力!
GPU Impulse Reverb利用NVidia显卡的CUDA运算技术,可运行在NVIDIA的显卡上,推荐使用G80系列显卡(G8xxx及以上型号的显卡),并使用最新的支持CUDA的驱动。
GPU Impulse Reverb很简单,就是读取一个8-32bit的立体声wav文件,将它作为脉冲响应来运算卷积混响效果。 难道它的声音就比其它卷积混响效果器软件要好吗?目前还没有详细对比,但可以肯定的是:你完全解放了CPU资源(虽然GPU Impulse Reverb也需要消耗1%的CPU资源,但几乎可以忽略不计)理论上你可以得到音质更好的混响效果,因为卷积是一种非常复杂的算法,目前的卷积混响效果器软件都会在运算精度上有所妥协。
GPU Impulse Reverb只是实验的第一步,这虽然只是一小步,但确实是电脑音乐发展历史上的一大步!

CUDA能否带来高性能计算、企业计算的革命,而革命其实已经在某些领域发生。最为著名的是在生命科学领域,NVIDIA GPU带来的几十上百倍的计算速度让很多研究工作从不可能变成了现实。例如,在癌症研究中重碳酸盐跟踪数据工作,便是很好的例子。
我们知道在人体中平衡酸碱度的重碳酸盐,可被癌变组织分解成二氧化碳,从而使癌变部位的酸度比周围部位高。研究人员说,重碳酸盐的这一特性可用来帮助检测癌症。核磁共振成像技术能追踪重碳酸盐在人体中发生的化学变化,因此能在早期帮助诊断癌症。参与研究的凯文·布林德尔教授说,核磁共振成像技术能帮助标出患者体内PH(酸碱度)值不正常的部位,从而确定病灶部位。
为了跟踪这些数据,如果使用原有CPU运算,以常见项目为例可能需要一周左右时间,而这还必须是高性能计算机多个CPU集群完成,如果使用普通PC,那这个研究根本没有意义。而GPU可以成百倍的速度来完成整个工作,相对现有HPC来说,占地面积极小(不可能让医院拥有一个HPC机房),一个8GPU的1U大小基于Tesla的服务器显然空间占用上更合理。同时,从运算速度和能耗来说,也绝对优于CPU为主的HPC。

CUDA,如今这个名词越来越多的出现在了我们的眼里。虽然说,目前来看,CUDA可能和我们目前的电脑应用并没有太明显的关系,不过相信随着未来越来越多的软件支持,CUDA最终将会走入我们每个人的电脑应用当中。前面我们说的那个例子,虽然现时来看并不太可能实现,不过,我们却很有可能在下一代的PhotoShop当中看到这一功能付诸实践。
在Photoshop Creative Suite Next上通过GPU、物理加速的支持。Photoshop打开一个2GB、4.42亿像素的图像文件将非常简单,对图片进行缩放、旋转也不会存在任何延迟。这就是GPU的强大运算能力的体现,而想要实现这一功能,则需要借助于一个接口——CUDA。
CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。

在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。

CUDA诞生的意义以及CUDA的应用领域

◆CUDA诞生的意义:

在传统的发展路线中,电脑显示卡一直在为游戏和3D应用程序服务,但是竞争的激烈、技术的飞速前进客观的成就了GPU的爆炸式发展。GPU的运算能力已经达到了非常高的水平,甚至在浮点运算能力上已经大幅度超越最高级别的处理器产品。

研究表明,从1993年开始,GPU的性能以每年2.8倍的速度增长,这个数字大大超过了PC其他子系统的发展速度。一块工作频率为3.0GHz的Pentium 4处理器,其晶体管数目为1.25亿个,即使算上SSE指令集的SIMD(单指令并发多数据流,这种情况是浮点吞运算下吐能力的最理想状况),也只有6GFlops的峰值浮点处理能力,而同期的一块NV40 GPU就有2.22亿个晶体管,峰值浮点运算能力很轻易超过40GFlops,而时间发展的今日,GPU的峰值浮点运算能力已经接近甚至超过了TFlops(1000GFlops)级别,GPU的性能可想而知。
『早在G80时代NVIDIA就已经提出了CUDA的概念』

而想要实现这些功能,必然需要显卡与应用程序之间有一个良好的程序接口,这就是CUDA。其时早在G80时代,NVIDIA就提出了CUDA的概念,只不过因为那时候CUDA还未成型,所以没有公布,而现在,基于CUDA的应用程序越来越多,因此到了GTX200系列芯片的发布,CUDA才同时正式大范围的推广并介绍给普通消费者。

◆CUDA的应用范围:

由于GPU的特点是处理密集型数据和并行数据计算,因此CUDA非常适合需要大规模并行计算的领域。目前CUDA除了可以用C语言开发,也已经提供FORTRAN的应用接口,未来可以预计CUDA会支持C++、Java、Python等各类语言。虽然现在更多的应用在游戏、图形动画、科学计算、地质、生物、物理模拟等领域,但是由于GPU本身的通用特性和CUDA提供的方便的开发环境,我们可以放开思维的束缚,想象几种可能的应用场景:

搜索引擎中的排序、文本分类等相关算法的应用

数据库、数据挖掘

电信、金融、证券数据分析

数理统计分析

生物医药工程

导航识别

军事模拟

无线射频模拟

图像语音识别

这些领域内的计算都是属于大规模的数据密集型计算,因此我们完全有理由相信,在CUDA的驱动下,GPU能够在这些领域建立一个属于自己的新时代。

应用开发很简单,CUDA的软硬件需求

CUDA是一个全新的软硬件架构,可以将GPU视为一个并行数据计算的设备(通俗来讲,我们可以把它简单的看做是一个用途专一的CPU阵列),对所进行的计算进行分配和管理。

并且,CUDA最大的优势在于,无需像传统GPGPU那样必须将计算映射到API接口上(也就是显卡名词当中常见的OpenGL或者Direct 3D),开发人员只需要懂得C语言,就可以开始对CUDA的软件进行开发了。而对于用户而言,更加简单,只要安装好驱动程序,然后就可以运行基于CUDA开发的程序了。

我们来看看对于CUDA的卡发者和用户群来说,都需要哪些硬件设施。CUDA支持的GPU (CUDA-enabled GPU)包含GeForce、Quadro和Tesla三个系列:GeForce是NVIDIA公司面向消费市场的GPU产品;Quadro是面向专业图形市场的GPU产品;而Tesla则是专门面向GPU计算的产品,它不具备图形输出的功能,因此不能作为图形卡来使用。这三个产品面向不同的应用领域,因此建议在开发和部署CUDA应用的时候需要考虑到产品的应用决定采用不同的GPU。
NVIDIA的CUDA-enabled GPU具有一个完整的产品线,各种用户都可以从中选择到合适自己的产品。对于有高密度计算能力需求的用户来说,Quadro和Tesla则是必须的选择。诸如Quadro Plex 1000 Model S4和Tesla S870在一个1U高度的标准服务器机架机箱内装备了四个GPU,每个GPU具备128个stream processor以及1.5GB的存储器,每个1U装置总共具备512个stream processor和6GB存储器,非常适合于有高密度、大规模数据计算需求的用户。CUDA-enabled GPU的家族还在不断地扩大之中,随着NVIDIA新一代GPU的发布,更多的产品也将加入到这个行列中来。

另外,CUDA对于GPU产品线还涵盖了从笔记本电脑到高性能多GPU的系统中。也就是说,对于普通用户来讲,我们使用的普通笔记本或者台式电脑,只要拥有一块NVIDIA的GeForce 8以上级别的显卡都能够支持CUDA。

◆软件需求:

对于普通的应用者来说,对于软件方面,只要安装了一款能够支持CUDA的驱动程序,就可以了。接下来需要做的就是使用那些能够支持CUDA的软件。对于目前来说,能够支持CUDA的软件还是有些偏少,不过随着越来越多的软件开发者加入CUDA的行列,日后能够支持CUDA的软件将会逐渐完善起来。

而对于CUDA的开发者来说,开发CUDA的软件也非常简单。开发者只要会运用C语言编程,就能够顺利的学会CUDA。因为CUDA就是基于C语言为基础的,CUDA可以支持多种运行在Windows XP和Linux操作系统下的C开发系统诸如Microsoft Visual C++等。CUDA工具集的核其实心是一个C语言编译器,CUDA开发环境的具体内容包括:

· nvcc C语言编译器

· 适用于GPU(图形处理器)的CUDA FFT和BLAS库

· 分析器

· 适用于GPU(图形处理器)的gdb调试器(在2008年3月推出alpha版)

· CUDA运行时(CUDA runtime)驱动程序(目前在标准的NVIDIA GPU驱动中也提供)

· CUDA编程手册

除了编译器外,NVIDIA提供了一些非常实用的函数库。目前有两个数字计算库包含在已经发布的软件包里面,分别是CUDA FFT和CUDA BLAS子程序库。CUDA FFT是快速傅立叶变换(Fast Fourier Transform, FFT)的子程序库,快速傅立叶变换是信号处理之类应用的基本算法。BLAS是基本线性代数的子程序库,提供了高效率的线性代数计算子程序。CUDA FFT和BLAS都是针对GPU高度优化的高性能数学函数库,在CUDA程序中可以方便调用,节省大量的代码编写时间。

另外,CUDA所有软件包都可以从NVIDIA公司的网站上免费下载。NVIDIA还专门建立了一个针对CUDA的名为CUDA Zone社区,网址是 http://www.nvidia.com/object/cuda_home.html。它包含各种程序、文档的下载,并且有几个针对开发者的论坛,里面有专人为各位开发者进行服务,解答各种疑问。

除此以外,NVIDIA提供了开发指南和大量的第三方应用实例,所有这些资料均可以从NVIDIA CUDA Zone里面下载。

为何使用CUDA?CUDA都有哪些优势

首先要说明的一点是,CUDA尤其擅长的是某一方面,而并不是面面俱到。CUDA的开发是基于NVIDIA GPU平台的,因此发挥GPU的并行优势才是最主要的目的。

理论上讲,CUDA对于非图形的计算并没有什么限制,不过它还是相对比较适合高度并行的计算,毕竟这是它的长处。这里所谓的高度并行的数量级为上千个,相对于CPU来讲,双核的CPU也许几个线程就能充满它整个的计算单元,然而CUDA-enabled GPU却能够容纳上千个线程(也就是GPU中数百个SP单元的功力),所以常遇到的高性能计算领域的问题就特别适用于CUDA,而之前通常采用计算机集群的方式来进行计算。

而目前GPU已经发展到十分强大的地步,从GeForce6开始,就能够支持比较复杂的控制指令,比如条件转移、分支、循环和子程序调用等。而到了新一代的显卡,GPU的程序控制能力又增强了很多,支持的程序长度也得到了更大的扩展,也就是说利用GPU还是可以写一些比较复杂的程序。

当然CUDA也有其弱势的地方,其还是主要去做那些能够分成很多个独立线程的数值计算。比如说矩阵的乘法计算,矩阵相对应的元素的计算是没有什么联系的,可以很多个线程同时送入很多个处理器进行并行处理,这就非常适合于用CUDA来解决。当然并不是所有的事情CUDA都能够很好地解决,比如像操作系统这样复杂的指令和纷繁的分支循环而又用很少的线程来处理,这显然就不是CUDA的强项了。高度并行的计算是CUDA的技术特性之一。

『GPU的架构非常合适进行大规模的并行计算』

CUDA已经应用在很多领域,包括在通用计算中的一些GPU加速,游戏中的物理模拟等等,而在科学计算中,CUDA可发挥的功效就更大了。比如有限元的计算、神经元的研究计算、地质分析等等科学研究的领域;当然目前GPU计算的应用还是处于一个早期的阶段,大部分CUDA应用都是专业人员和相关的程序员在开发,随着CUDA的广泛推行,以后会有实际的基于CUDA的程序,更多的程序员能够加入进来,并且开发一些可以给大家日常应用带来好处的程序,只要有支持CUDA的GPU就能够利用到GPU计算的好处。

最后来说明一下某些读者对于CUDA的误解,可能有人认为“有了GPU之后CPU就不需要了”,这也是不对的。显然,GPU和CPU还是做不同的工作的,GPU的计算主要集中在高效率低成本的高性能并行计算,所以事实上在一个系统里面,一个高效的GPU配合一个高效的CPU,整体的效率还是会有明显提升的。

目前能够支持CUDA的应用软件介绍(一)在我们了解了CUDA的需求之后,对于本文的绝大多数读者来说,他们更想要了解的应该就是CUDA对于我们普通用户究竟是否有实际意义,并且,目前真的又能够支持CUDA的应用程序么?这些程序是否如同前面所描述的那么好?下面我们就先来简单了解一下目前常见的几款能够支持CUDA的应用软件:

◆ Google earth需要3D加速

Google earth是一款3D地图显示软件,它能够将地球上某一区域的地貌,以3D图像的形式展现出来。这款软件读者都很熟悉,早期的Google earth从2D起步,但是随着深入发展和商业应用,这款软件也进入了3D化,很显然,这类软件将会逐渐成为我们今后生活的必备软件。

目前能够支持CUDA的应用软件介绍(二)

◆ 连PDF都需要GPU加速

随着计算机的发展,图形、图像的显示成为越来越重要的工作。现在连阅读传统的PDF文件,都离不开GPU的加速了。早在2007年,Adobe就与NVIDIA展开合作,推出了支持GPU加速的PDF版本。

整个从起点到终点都是3D显示周围的实物,其中包括耸立的建筑物、街道等等,如果有NVIDIA GPU的图形加速,可以让这个过程非常流畅。

实际检验GPU能力——视频编码:Badaboom

进行视频编码的操作我们平时经常用到,例如我们要将从网络上下载或者从DVD上获得的视频文件进行重新的编码压缩,才能传到我们手机、IPOD、iPhone以及PSP中观看。一般情况下视频编码完全是由CPU进行计算处理,CPU性能越强,编码速度越快。

不过在应用CUDA技术的GeForce GTX280上,我们可以使用GPU的强大性能来进行视频编码。经过实测,其速度要比CPU编码超出数倍。

从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动(表2)。
开发库是基于CUDA技术所提供的应用开发库。目前CUDA的1.1版提供了两个标准的数学运算库——CUFFT(离散快速傅立叶变换)和 CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。
运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(Host Code),一种是运行在GPU上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。
由于目前存在着多种GPU版本的NVIDIA显卡,不同版本的GPU之间都有不同的差异,因此驱动部分基本上可以理解为是CUDA-enable的GPU 的设备抽象层,提供硬件设备的抽象访问接口。CUDA提供运行期环境也是通过这一层来实现各种功能的。目前基于CUDA开发的应用必须有NVIDIA CUDA-enable的硬件支持,NVIDIA公司GPU运算事业部总经理Andy Keane在一次活动中表示:一个充满生命力的技术平台应该是开放的,CUDA未来也会向这个方向发展。由于CUDA的体系结构中有硬件抽象层的存在,因此今后也有可能发展成为一个通用的GPGPU标准接口,兼容不同厂商的GPU产品

CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动(表2)。
开发库是基于CUDA技术所提供的应用开发库。目前CUDA的1.1版提供了两个标准的数学运算库——CUFFT(离散快速傅立叶变换)和 CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。
运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(Host Code),一种是运行在GPU上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。
由于目前存在着多种GPU版本的NVIDIA显卡,不同版本的GPU之间都有不同的差异,因此驱动部分基本上可以理解为是CUDA-enable的GPU 的设备抽象层,提供硬件设备的抽象访问接口。CUDA提供运行期环境也是通过这一层来实现各种功能的。目前基于CUDA开发的应用必须有NVIDIA CUDA-enable的硬件支持,NVIDIA公司GPU运算事业部总经理Andy Keane在一次活动中表示:一个充满生命力的技术平台应该是开放的,CUDA未来也会向这个方向发展。由于CUDA的体系结构中有硬件抽象层的存在,因此今后也有可能发展成为一个通用的GPGPU标准接口,兼容不同厂商的GPU产品

CUDA引领未来并行计算

GPU超强的计算能力让它在通用计算领域大有可为,而CUDA则让它变成可能,简单易用的开发环境让CUDA主导起GPU计算的革命。
CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。跟以往的GPGPU概念不同的是,CUDA是一个完整的解决方案,包含了API、C编译器等,能够利用显卡核心的片内L1 Cache共享数据,使数据不必经过内存-显存的反复传输,shader之间甚至可以互相通信。对数据的存储也不再约束于以往GPGPU的纹理方式,存取更加灵活,可以充分利用stream out特性。以上几点都将大大提高GPGPU应用的效率。例如,在游戏中我们可以使用CUDA来让GPU承担整个物理计算,而玩家将会获得另他们感到惊奇的性能和视觉效果。另外,用于产品开发和巨量数据分析的商业软件也可以通过它来使用一台工作站或者服务器完成以前需要大规模的计算系统才能完成的工作。这一技术突破使得客户可以任何地方进行实时分析与决策。同时,一些以前需要很先进的计算技术来达到的强大计算能力的科学应用程序,也不再受限在计算密度上;使用CUDA的计算可以在现有的空间里为平台提供更强大的计算性能。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在 GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
CUDA工具包推出已有1年,它的推出马上受到了众多软件/游戏开发商以及科研机构和程序爱好者的欢迎,NVIDIA方面也将发布最新的CUDA 2.0版本。相信在未来,CUDA将会受到越来越多的领域的支持。目前,支持CUDA环境的GPU主要有采用统一渲染架构的显示核心。

GPU超强的计算能力让它在通用计算领域大有可为,而CUDA则让它变成可能,简单易用的开发环境让CUDA主导起GPU计算的革命。
CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。跟以往的GPGPU概念不同的是,CUDA是一个完整的解决方案,包含了API、C编译器等,能够利用显卡核心的片内L1 Cache共享数据,使数据不必经过内存-显存的反复传输,shader之间甚至可以互相通信。对数据的存储也不再约束于以往GPGPU的纹理方式,存取更加灵活,可以充分利用stream out特性。以上几点都将大大提高GPGPU应用的效率。例如,在游戏中我们可以使用CUDA来让GPU承担整个物理计算,而玩家将会获得另他们感到惊奇的性能和视觉效果。另外,用于产品开发和巨量数据分析的商业软件也可以通过它来使用一台工作站或者服务器完成以前需要大规模的计算系统才能完成的工作。这一技术突破使得客户可以任何地方进行实时分析与决策。同时,一些以前需要很先进的计算技术来达到的强大计算能力的科学应用程序,也不再受限在计算密度上;使用CUDA的计算可以在现有的空间里为平台提供更强大的计算性能。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在 GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
CUDA工具包推出已有1年,它的推出马上受到了众多软件/游戏开发商以及科研机构和程序爱好者的欢迎,NVIDIA方面也将发布最新的CUDA 2.0版本。相信在未来,CUDA将会受到越来越多的领域的支持。目前,支持CUDA环境的GPU主要有采用统一渲染架构的显示核心。

CUDA的未来
首先我们从GPU的处理能力来看,现在的显卡和游戏是互相推动的发展,游戏需要更强劲的GPU,GPU为了满足游戏的需求也必须要不断的升级,可以预计未来GPU计算能力还会继续不断的增加。那么现在对于CUDA的开发者来说,CUDA学习还有CUDA的软件能够随着GPU的性能提升而获利。
目前已发布软件众多的CUDA技术的软件,比如鼎鼎大名的PhotoShop CS4,根据NVIDIA表示在未来一段时间里也将会有不少其他方面的CUDA软件将出现。
视频功能的日渐丰富是当今计算机发展的主流趋势,这些软件通过GPU 的提升可以明显的得到更快、更连贯的显示效果。而这些性能的改变单靠提升CPU的运算性能,是无法完全实现的。可以说,CUDA将GPU强大的浮点运算能力转化为全新的应用方式更加简单,将成为PC机正在经历的一场全新变革;我们的数字生活也将会因CUDA开发GPU强大运算能力而步入全新的视觉时代。未来随着更多的软件开发人员加入CUDA开发GPU强大的运算能力,CUDA会带给我们更多的惊喜。未来CUDA带来一个新的GPU使用方式。