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

我是新手!看了大家的帖子,真是学习了,大家的讨论的内容我都能被下来了。好强大啊!赞一个!
CUDA(Compute Unified Device Architecture),显卡厂商NVidia推出的运算平台。
随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此N卡厂商推出CUDA,让显卡可以用于图像计算以外的目的。

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开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。

在20世纪80年代,我还是Los Alamos National Laboratory的科研人员,当时我有幸使用了拥有多达65,536个平行处理器的Thinking Machines超级计算机。CUDA被证明是天生用于现代大量平行(即高线程)环境的框架。它的性能优势显而易见。我的一段生产代码,现在用CUDA编写并且运行在NVIDIA GPU上,与2.6-Ghz四核Opteron系统相比,具有明显的线形伸缩和几乎两个数量级的速度提升。

启用CUDA的图形处理器作为主计算机内的联合处理器运行。这意味着每个GPU都被认为有其自己的内存和处理元素,它们是与主计算机分开的。要进行有效的工作,数据必须在主计算机的内存空间和CUDA设备之间传输。因此,性能结果必须包括IO时间才更有意义。同事们喜欢将其称为“诚实的数据”,因为它们会更准确地反映将要交付生产的性能应用程序。

我坚持与现有技术相比,一到两个数量级的性能提升是一个巨变,可以在很大程度上改变运算的某些方面。例如,以前可能需要花费一年时间的运算任务现在只要几天就可以完成,几个小时的运算突然变得可交互了,因为使用新技术它们可以在几秒钟内完成,过去不易处理的实时处理任务现在变得极易处理。最后,它为具有正确技能集和能力的顾问和工程师们提供了良好的机会,使他们可以编写高线程(或大量平行)软件。对于您来说,这种计算能力又能给您的职业、应用程序或实时处理需求带来哪些好处呢?

开始不需要任何成本,您只需要从CUDA Zone 主页下载CUDA(查找”获取CUDA”)。然后,按照您的特定的操作系统安装指导操作。您甚至不需要图形处理器,因为你可以直接使用软件模拟器,在你的笔记本或者工作站上运行,开始工作。当然,使用启动CUDA的GPU,可以获得更好的性能。或许你的计算机应该有一个这样的GPU了。在CUDA Zone 主页上查看支持CUDA的GPU链接(支持CUDA的GPU包括共享的片上内存和线程管理)。

如果要购买一个新的图形处理器卡,我建议您依次阅读以下文章,因为我将探讨不同的硬件特性(如内存带宽、注册数量、原子操作等)将如何影响应用程序的性能。这样有助于您为应用程序选择恰当的硬件。另外,CUDA Zone论坛提供了关于CUDA各个方面的大量信息,包括购买哪些硬件。

安装完毕后,CUDA Toolkit将提供一个合理的C语言程序开发工具集,它包括:

· nvcc C编译器;

· GPU 的CUDA FFT和BLAS库

· 性能分析器

· alpha 版本(截至2008年3月)的GPU的gdb调试器

· CUDA运行时驱动程序(现在还可以在标准的NVIDIA GPU驱动程序中得到)

· CUDA编程手册

nvcc C编译器完成了将C代码转换成将运行在GPU或模拟器上的可执行程序的大部分工作。幸好,汇编语言编程不要求达到很高的性能。下面的文章将介绍从其它高级语言,包括C++、FORTRAN和Python使用CUDA的内容。我假设您熟悉C/C++。不需要有平行编程或CUDA经验。这与现有CUDA文档是一致的。

创建和运行CUDA C语言程序与创建和运行其它C编程环境的工作流是一样的。面向Windows和Linux环境的明确构建和运行说明在CUDA文档中。简言之,这一工作流就是:

a. 使用最喜欢的编辑器创建或编辑CUDA程序。注意:CUDA C 语言程序的后缀为.cu。

b. 使用nvcc编译程序创建可执行程序(NVIDIA提供了带有示例的完整makefiles。通常用于CUDA设备时您只需键入make,用于模拟器时只需键入make emu=1)。

著名杀毒软件厂商卡巴斯基也在利用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功能,不过这些功能主要集中在视频编码领域。

实战CUDA——BadaBOOM转码测试
对于CUDA技术,相信用户还是更多的关注实际应用中的表现,目前从Google开发的Picasa图片浏览和处理工具到游戏中采用的PhysX物理加速技术、从Photoshop cs4的GPU浏览加速技术到视频转码的Badaboom软件,小到浏览图片,大到天文数据计算,随着CUDA的应用越来越广泛,它我们的生活也变得越来越交融。
Badaboom的出现,开启了利用高性能GPU进行游戏以外应用的先河,是一款完全利于CUDA开发的软件。一直以来,视频转码显得困难重重,因其需要很长的转码时间,现在Badaboom能将这转码的工作交给支持CUDA的NVIDIA GPU去做,转码所需要的时间大为缩短(同时耗电量大幅度降低),CPU得到了释放有更多时间去处理其它任务。
我们利用一段5分钟长的1080P视频(302MB)进行压缩测试,首先是关闭GPU加速后,利用CPU进行压制,将这段1080p的视频压缩至iPhone可看的格式,用时为3分钟41秒。在badaboom中,利用了显卡的强大的计算能力,视频压制速度更加出色,仅仅只用了2分钟09秒就将这段5分钟的1080P视频压制成480×270的视频。
从测试中看出,完全利用了GPU能力的badaboom,在压制同一视频的情况下,性能要比单纯使用CPU要快了41%。

[ 本帖最后由 sammyandy 于 2009-12-23 23:10 编辑 ]

CUDA技术通过流处理器的并行计算来实现强大的运算效能
就拿GeForce 9400M这款整合显示核心来说,拥有16颗处理核心的GeForce 9400M在实际的CUDA计算中已经比普通CPU的性能高出了5倍之多,更不用说拥有128颗核心的G80或更高的G90甚至G100了,而CUDA本身也在发展——2008年8月,CUDA已经推出了其二代技术,二代技术拥有比一代技术更友好的程序接口,这意味着程序员们的门槛在降低的同时CUDA工具也将进一步涌现。

为人类造福——NVIDIA利用CUDA进行Folding @home的计算
CUDA实际上已经开始深入我们的生活了,实际上Google开发的Picasa图片浏览和处理工具、Photoshop cs4的GPU浏览加速技术、视频转码领域的Badaboom软件应用都是CUDA的应用范畴,CUDA甚至涵盖到基因计算领域的Folding @home运算,而在游戏领域,CUDA的衍生技术PhysX物理计算技术也正成为行业内的物理效果标杆技术。

作为整合主板中的新一代王者,NVIDIA 9系列主板拥有非常出色的显示性能。但是大部分人可能并不知道,它的Geforce集成显卡,也可以支持NVIDIA独有的CUDA技术。此前,在最新版本驱动程序的支持下,这款主板上整合的GeForce 9300显卡不但在运行多款主流的3D游戏时表现出众,而且其在播放能力、节能环保等方面,也完全颠覆了整合显卡带给人们的传统印象。此次,通过使用CUDA技术,我们在NVIDIA 9系列主板搭建的系统里,运行Photoshop软件,并以此来考察一下CUDA技术的应用究竟会给NVIDIA 9系列主板上的整合显卡在图形编辑能力上带来多大的性能提升。
伴随着高像素拍照手机和数码相机的普及,数码相片及数码图片已经遍及到我们生活中的每一个角落,普通人对数码照片及数码图片的修改和编辑需求,也显得越来越频繁。为此,使用Potoshop软件来编辑和修改数码照片或数码图片,就成为了主流计算机最重要的日常工作之一。
不过,很多使用Potoshop的朋友都会有这样一种感觉。那就是当处理一幅画面较大且分辩率较高的数码照片或数码图片时,使用整合显卡的计算机,在Potoshop软件环境下对照片或图片的显示速度总会变得很慢。尤其是在对画面进行数码编辑时,系统往往会让我们稍稍“等上”一会儿,有的甚至还会造成死机。之所以会有这样的原因产生,主要是因为计算机的整合显卡在处理较大画面或较高分辩率的图片时,因处理能力有限,造成了短时间内的数据瓶颈。为此,无法顺畅地运行Potoshop特别是最新版本的Potoshop软件,就成为了目前多数使用整合显卡计算机的一个通病。
然而,技术的进步已经使这种情况得到了明显的改善。由于最新版本的Potoshop软件中设计了针对CUDA技术的优化程序;同时最新的NVIDIA 9系列主板中所整合的Geforce9300显卡也提供了对CUDA技术的良好支持,因此在NVIDIA 9系列主板构建的计算机系统中,整合显卡理论上已经可以非常流畅地运行最新版本的Potoshop软件了。不过俗话说得好:耳听为虚,眼见为实。下面我们就来实际对比一下Geforce9300整合显卡在运行最新版本的Potoshop软件时,性能提升前后的不同差异吧。
当安装完最新版本的显卡驱动后(我们使用的是NVIDIA 180.48版本的驱动),我们打开系统中最新版本的Photoshop软件。最新版本的Potoshop是支持CUDA功能的,因此我们就在最新版本的Potoshop软件中进行一下对比,并使用数码相机,将运动中的屏幕拍摄下来。
首先我们准备了一张分辨率高且画幅面积非常大的数码图片,这幅图片是由多张数码照片与数码图片拼接而成的,文件大小足有720M。由于这样的一张照片,其容量相当于满满一张CD-ROM光盘的数据容量,因此在普通情况下,使用整合显卡的来打开这样的一副图片,计算机系统就会显得非常的吃力。开启画面往往需要数十秒的等待时间,而有的整合显卡此时干脆就死机了。相比之下,在最新版本的Potoshop中,使用 CUDA功能有效的调用NVIDIA 9系列主板上的GPU来处理图片的数据时,则可以较为轻松地直接打开这幅画面,等待时间也有了极大的缩短。
当画面被开启后,Potoshop软件会自动提示你是否升级最新版本的显卡驱动程序;与此同时,Potoshop软件也会自动设置画面显示的加速功能。这个时候,按住键盘上的Alt键,就可以将画面进行连续的放大或缩小。通常情况下,使用整合显卡的系统,会在画面放大或缩小时产生停顿或死机。为了方便对比,我们在Phtoshop软件中先将GPU加速的选项关闭,重新启动Potoshop软件后,我们便处于关闭GPU加速的状态之中,此时相当于普通整合显卡下正常的显示状态。当我们打开那副大的图片时。可以明显地感觉到图片被开启的速度要慢了很多,而我们在完成同样的缩放操作时,画面也开始出现了非常明显的停顿和分段显示。
接下来,我们使用NVIDIA 9系列主板上GeForce 9300显卡,开启GPU加速功能并完成上面相同的操作。通过数码相机的瞬间拍摄,可以看到此时画面的显示始终是连贯且实时的。同时,除了放大缩小外,我们在Photoshop中还可以顺畅的选择画面的不同区域来进行局部的缩放显示,而且软件新增的流体画布旋转功能,也能够让画面以任何角度旋转显示。
通过使用CUDA技术,NVIDIA 9系列主板上GeForce 9300显卡的显示性能得到了较为显著的提高,而在Photoshop软件环境中,以往使用整合显卡时常见的画面停顿和死机现象,此刻也已经得到了较为彻底的改善。与此同时,使用NVIDIA 9系列主板上GeForce 9300显卡的GPU加速功能,还可以实现全新、顺畅的缩放和旋转的即时显示效果。此时的画面没有出现分段显示,并且遥摄可以定位到图像的任何区域。同时,Photoshop软件中全新的像素网格功能,也可以保持实现缩放到个别像素时的清晰程度, 并能够以最高的放大倍率来实现对画面的轻松编辑。倘若通过创新的旋转视图工具随意转动画布,还可以在任意角度对图片实现无扭曲的查看。
不过,需要在此明确指出的是:针对整合主板而言,目前的CUDA技术只支持NVIDIA8系列和9系列主板中的集成显卡。在使用的过程中,我们需要安装NVIDIA最新版本的显卡驱动程序并在Photoshop软件中开启相关的设置。不过,通过CUDA技术,能够在整合主板上实现对GPU的加速,并且使Photoshop软件在作图时的速度产生明显的改观,这本身已经充分具备了划时代的革命与创新。看来拥有GeForce 9300整合显卡的NVIDIA 9系列主板,不愧为当下整合主板中的王者!

[ 本帖最后由 sammyandy 于 2009-12-23 23:19 编辑 ]

CUDA是Compute Unified Device Architecture(统一计算架构)的简称,是建立在GPU基础之上的通用计算开发平台,它是一个全新的软硬件架构,可以将GPU视为一个并行数据计算的设备,对所进行的计算进行分配和管理,计算难题。利用CUDA能够充分的将GPU的高计算能力开发出来,并使得GPU的计算能力获得更多的应用。

大规模并行计算

不知道对商业数据库的大数据量处理会有什么好处,感觉商业数据库的处理的内容相对简单但是量很大.

也不知道这个的稳定性如何,能够支持247365吗?

不开放的平台感觉没啥前途…比如MCA…

并行计算有前途,不过我觉得还是应该底层应用,到开发环境这一层次就可以了,再低不利于推广,也没有必要

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(图形处理器)支持并行数据缓存和线程执行管理器
· 标准FFT(快速傅立叶变换)和BLAS(基本线性代数子程序)数值程序库
· 针对计算的专用CUDA驱动
· 经过优化的,从中央处理器(CPU)到支持CUDA的GPU(图形处理器)的直接上传、下载通道
· CUDA驱动可与OpenGL和DirectX图形驱动程序实现互操作
· 支持Linux 32位/64位以及Windows XP 32位/64位 操作系统
· 为了研究以及开发语言的目的,CUDA提供对驱动程序的直接访问,以及汇编语言级的访问

[

厂商都想垄断获利,不得已才被开放的。

CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。

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

对在个不是特别清楚,

如果卡吧速度能提高确实值得高兴的

CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员现在可以使用C语言来为CUDA™架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA™的处理器上以超高性能运行。 将来还会支持其它语言,包括FORTRAN以及C++。
随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像计算以外的目的。