用户
 找回密码
 立即注册
发表于 2009-12-21 16:21:33
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的性能都比较弱)
使用道具 举报 回复 支持 反对
发表于 2009-12-21 16:22:15
CUDA 的核心有三个重要抽象概念: 线程组层次结构、共享存储器、屏蔽同步( barrier
  synchronization),可轻松将其作为C 语言的最小扩展级公开给程序员。
使用道具 举报 回复 支持 反对
发表于 2009-12-21 16:24:06
 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员现在可以使用C语言来为CUDA™架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA™的处理器上以超高性能运行。 将来还会支持其它语言,包括FORTRAN以及C++。
使用道具 举报 回复 支持 反对
发表于 2009-12-21 16:25:45
  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提供对驱动程序的直接访问,以及汇编语言级的访问
使用道具 举报 回复 支持 反对
发表于 2009-12-21 16:27:37
CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
使用道具 举报 回复 支持 反对
发表于 2009-12-21 16:28:52
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™ 工具包是一种针对支持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提供对驱动程序的直接访问,以及汇编语言级的访问
  NVIDIA进军高性能计算领域,推出了Tesla&CUDA高性能计算系列解决方案,CUDA技术,一种基于NVIDIA图形处理器(GPU)上全新的并行计算体系架构,让科学家、工程师和其他专业技术人员能够解决以前无法解决的问题,作为一个专用高性能GPU计算解决方案,NVIDIA把超级计算能够带给任何工作站或服务器,以及标准、基于CPU的服务器集群
  CUDA是用于GPU计算的开发环境,它是一个全新的软硬件架构,可以将GPU视为一个并行数据计算的设备,对所进行的计算进行分配和管理。在 CUDA的架构中,这些计算不再像过去所谓的GPGPU架构那样必须将计算映射到图形 API(OpenGL和Direct 3D)中,因此对于开发者来说,CUDA的开发门槛大大降低了。CUDA的GPU编程语言基于标准的C语言,因此任何有C语言基础的用户都很容易地开发 CUDA的应用程序。
  由于GPU的特点是处理密集型数据和并行数据计算,因此CUDA非常适合需要大规模并行计算的领域。目前CUDA除了可以用C语言开发,也已经提供 FORTRAN的应用接口,未来可以预计CUDA会支持C++、Java、Python等各类语言。可广泛的应用在图形动画、科学计算、地质、生物、物理模拟等领域。
  2008年NVIDIA推出CUDA SDK2.0版本,大幅提升了CUDA的使用范围。使得CUDA技术愈发成熟
  目前,支持CUDA的GPU销量已逾1亿,数以千计的软件开发人员正在使用免费的CUDA软件开发工具来解决各种专业以及家用应用程序中的问题。这些应用程序从视频与音频处理和物理效果模拟到石油天然气勘探、产品设计、医学成像以及科学研究,涵盖了各个领域。目前市面上已经部署了超过一亿颗支持CUDA的GPU,数以千计的软件开发人员正在使用免费的CUDA软件工具来为各种应用程序加速。
  CUDA 的核心有三个重要抽象概念: 线程组层次结构、共享存储器、屏蔽同步( barrier
  synchronization),可轻松将其作为C 语言的最小扩展级公开给程序员。
  CUDA 软件堆栈由几层组成,一个硬件驱动程序,一个应用程序编程接口(API)
  和它的Runtime, 还有二个高级的通用数学库,CUFFT 和CUBLAS。硬件被设计成支持轻
  量级的驱动和Runtime 层面,因而提高性能。
使用道具 举报 回复 支持 反对
发表于 2009-12-21 16:32:00
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的性能都比较弱)
使用道具 举报 回复 支持 反对
发表于 2009-12-21 17:04:50
哈哈
楼上的很多贝贝
好啊
使用道具 举报 回复 支持 反对
发表于 2009-12-21 19:43:34
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开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。
使用道具 举报 回复 支持 反对
发表于 2009-12-21 19:45:07
首先来了解一下CUDA究竟是什么?CUDA(Compute Unified Device Architecture),显卡厂商NVidia推出的运算平台。随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVIDIA推出CUDA,让显卡可以用于图像计算以外的应用。NVIDIA CUDA技术是当今世界上唯一针对NVIDIA GPU(图形处理器)的C语言环境,为支持CUDA技术的NVIDIA GPU(图形处理器)带来无穷的图形计算处理性能。凭借NVIDIA CUDA技术,开发人员能够利用NVIDIA GPU(图形处理器)攻克极其复杂的密集型计算难题,应用到诸如石油与天然气的开发,金融风险管理,产品设计,媒体图像以及科学研究等领域。简单说就是利用GPU强大的运算能力代替CPU进行科学运算。

  CUDA平台是透过运用显卡内的Unified Shader Processor进行数学运算,透过这项技术,应用软件可利用显卡强大的浮点处理能力进行运算,相较现时最快的处理器仍有十数倍的优势。CUDA平台支援C语言及在科学研究常用的Fortran语言,透过驱动程式的API接口,达成平行运算,若用户拥有超过两张或以上支援CUDA平台的显卡,驱动程式将透过PCI Express总线自动分配工作至不同GPU上,进一步提升效能。

NVIDIA将在6月17日跟随GeForce GTX 200系列同日发布CUDA2.0平台,加入双精度运算支援,为应用提供更准确的运算结果,以气像预测为例,使用GeForce8800 GTX对比Pentium D 2.8GHz用于WRF模式气像运算,发现 GeForce 8800 GTX 拥有17倍的效能优势,Cost per FLOP则约为1.2X。
CUDA的应用将会更为普及化,从以往的科学运算普及到一般的应用层面上,如物理运算,视频编码等的日常应用,更有消息指Super pi也将会支持CUDA平台,可见CUDA平台相当有发展的前景。CUDA运用GPU运算可以大大降低CPU的远算量,使得处理速度有明显提升的同时CPU占用率更加低。
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册