NVIDIA显卡支持CUDAWord文件下载.docx
- 文档编号:15686137
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:39
- 大小:2.73MB
NVIDIA显卡支持CUDAWord文件下载.docx
《NVIDIA显卡支持CUDAWord文件下载.docx》由会员分享,可在线阅读,更多相关《NVIDIA显卡支持CUDAWord文件下载.docx(39页珍藏版)》请在冰豆网上搜索。
CUDA开发环境包括:
nvccC语言编译器适用于GPU(图形处理器)的CUDAFFT和BLAS库
分析器适用于GPU(图形处理器)的gdb调试器(在2008年3月推出alpha版)
CUDA运行时(CUDAruntime)驱动程序(目前在标准的NVIDIAGPU驱动中也提供)
CUDA编程手册
CUDA开发者软件开发包(SDK)提供了一些范例(附有源代码),以帮助使用者开始CUDA编程。
这些范例包括:
并行双调排序、矩阵乘法、矩阵转置、利用计时器进行性能评价、并行大数组的前缀和(扫描)、图像卷积
使用Haar小波的一维DWT
OpenGL和Direct3D图形互操作示例
CUDABLAS和FFT库的使用示例
CPU-GPUC—和C++—代码集成
二项式期权定价模型
Black-Scholes期权定价模型
Monte-Carlo期权定价模型
并行MersenneTwister(随机数生成)
并行直方图
图像去噪
Sobel边缘检测滤波器
MathWorksMATLAB®
插件(点击这里下载)
新的基于1.1版CUDA的SDK范例现在也已经发布了。
技术功能
在GPU(图形处理器)上提供标准C编程语言
为在支持CUDA的NVIDIAGPU(图形处理器)上进行并行计算而提供了统一的软硬件解决方案
CUDA兼容的GPU(图形处理器)包括很多:
从低功耗的笔记本上用的GPU到高性能的,多GPU的系统。
支持CUDA的GPU(图形处理器)支持并行数据缓存和线程执行管理器
标准FFT(快速傅立叶变换)和BLAS(基本线性代数子程序)数值程序库
针对计算的专用CUDA驱动
经过优化的,从中央处理器(CPU)到支持CUDA的GPU(图形处理器)的直接上传、下载通道
CUDA驱动可与OpenGL和DirectX图形驱动程序实现互操作
支持Linux32位/64位以及WindowsXP32位/64位操作系统
为了研究以及开发语言的目的,CUDA提供对驱动程序的直接访问,以及汇编语言级的访问。
使用了CUDA的GPU计算通过标准的C语言将下一代NVGPU的总多计算特性结合到一起。
在这之前的GPU是基于“流式着色程序”的,CUDA则使用C语言,通过“线程”来创建应用程序,这类似于CPU上的多线程程序。
相比较于仅能有很少线程同时工作的多核CPU的而言,NVGPU的特性可以让CUDA同时执行数千个线程,这将令我们的应用能处理更多的信息流。
CUDA所提供的最重要的创新在于,它使得工作在GPU上的线程可以协作解决问题。
在线程间通讯实现以后,CUDA将允许应用程序更加高效的执行。
由NVGPUs的支持,CUDA有一个直接在GPU上的并行计算缓存,它用于保存频繁使用的信息。
在GPU上保存信息可以让计算线程即刻得到共享数据而不是去漫长的等待off-chip的DRAM上的数据。
它能让用户实时的计算出复杂问题的答案。
曾几何时,我们购买一块显卡的时候首先需要了解它究竟能提供多少特效,能支持多少游戏。
而随着显示芯片蜕变为GPU,显卡首次被赋予了可编程功能。
在随后的10年里,GPU以超越CPU的速度高速发展。
今天即便是最便宜的显卡,也可以实现一切游戏制作人想要的特性,300元和3000元显卡之间的区别更多是执行这些应用的快慢,而非能否执行。
在DirectX9的时代,GPU的可编程性迎来了革命性的变化—只要GPU符合DirectX9API,那么原则上就能通过HLSL(HighLevelShaderLanguage,高级着色语言)或者ASM(汇编语言)实现各种计算操作。
此时就有人想到,既然GPU的可编程性如此强大,那能不能用GPU来处理别的应用甚至是代替CPU?
在这样想法的驱动及尝试下,GPU历史翻开了崭新的一页—GPGPU。
GPGPU全称是GeneralPurposeGPU,即通用计算图形处理单元。
GPGPU着重于利用GPU的可编程性能让GPU去实现处理3D图形以外的计算应用。
在已经公布的众多论文中GPU已经能够实现音频处理、有限元分析、流体模拟等应用。
对GPGPU进行深入研究是从2003年开始的,在那年的SIGGRAPH2003大会上许多业界泰斗级人物发表了关于使用GPU进行各种运算的设想和实验模型。
GPU恐怖的浮点运算能力和数据流吞吐量使得人们希望用GPU来加速运算,和CPU相比,进入DirectX10时代统一VS和PS架构后,GPU要进一步提升浮点性能变得相当简单(不断增加StreamingProcessor),而CPU要提升浮点性能则比较困难。
如果能让GPU实现科学计算、有限元分析等浮点运算密集的应用,那整个计算工业将会迎来一场深刻的变革。
从GPGPU到CUDA,通用计算的飞跃
光看GPGPU远超CPU的浮点运算能力的确很有诱惑力,但真正应用却难于登天。
在过去的5年里,许多基于GPGPU的项目最终流产。
究其原因,就在于专为显卡设计的图形API限制太大,要通过这样的API来执行其它应用,不仅算法和程序会变得极端复杂,还将耗费大量的额外运算开销。
在GPU进入DirectX10时代以后,统一渲染架构在编程灵活性上获得了进一步的提升,而NVIDIA也同时意识到,要破解GPGPU应用的紧箍咒,必须抛弃原有的DirectX或者OpenGL等专为图形设计的API才能在合理的资源下释放GPU通用计算的威力,CUDA(ComputeUnifiedDeviceArchitecture,统一计算设备架构)因此应运而生。
我们可以把CUDA简单地看作是专为NVIDIAGPU设计的C语言开发环境。
和以往的GPGPU需要程序员自行开发“迂回”的实现架构不同,CUDA在问世初期就拥有了完整而直接的开发程序。
NVIDIA给开发者提供的CUDA套件包括了nvccC语言编译器、适用于GPU的CUDAFFT和BLAS库、CUDA分析器、GDB调试器以及CUDA运行时(CUDAruntime)驱动程序,除此以外CUDA还拥有详尽的编程指南和大量范例供开发者参考。
在CUDA的帮助下,开发者只需要专注于自己所开发的应用,剩下的GPU实现部分将由NVIDIA的编译器自行完成,完全无需像普通GPGPU应用那样针对每一款显卡设计各种复杂的算法。
另外,CUDA的运行时驱动程序还被NVIDIA加入在全系列Forceware显卡驱动中,只要目标用户使用的是NVIDIAGeForce8系列或以上显卡,用CUDA编写的程序就能在上面正常运行。
那究竟CUDA上的编程模型和普通CPU上的C语言编程模型有什么区别呢?
其实和CPU相比,DirectX10时代的GPU有着远超前者的并行性,但却在单线程的处理方面不如CPU。
所有通过GPU处理的计算必须采用简单的线程,并通过海量并行来弥补简单线程带来的损失。
由于在处理过程中线程就像水管那样一通到底,所以我们把这样的计算称为流计算(StreamingProcess)。
如果将为CPU设计的编程模型用到GPU上,那你绝对会感受到什么叫痛苦—在GPU上习以为常的分支预测、乱序执行等功能通通欠奉,而GPU恐怖的并行能力和惊人的带宽你也无法用上。
CUDA正是解决GPU和CPU之间的差异构建出来的编程模型,在CUDA上首先被强调的就是海量并行—GeForce8800GTX显卡中有128个StreamingProcessor以及强大的线程调度能力,所以CUDA允许开发者在G80上同时建立12288条活动线程,如此恐怖的并行能力即便和处理器集群相比也不逞多让。
由于GPU驱动程序构建在操作系统之上,所以在调用GPU进行海量并行计算的时候,还无法离开CPU的帮助。
在CUDA中NVIDIA采用了更为高效的架构来让CPU和GPU协同工作。
在一个CUDA程序运行的时候,能被GPU执行的应用被NVIDIA称作内核,整个内核将会由成千上万条简单线程组成,并交由GPU进行处理。
无法并行化的应用则由CPU完成。
由于CUDA中单个线程极为简单轻量,所以每个线程在创建时的性能开销极小。
在GPU运行通用计算的内核中,所有的线程都采用相同的代码,但却有各自的ID用于内存定址和控制决策。
为了提供线程之间的协作能力并且降低显存带宽消耗,CUDA还会自动把多个线程合并成一个线程块,处于相同块中的线程能够相互协作共享内存,而不同块中的线程则无法协作。
这样的线程块设计还让基于CUDA的程序能够在任意数量StreamingProcessor的GPU中透明伸缩,而无需程序员的干预。
根据NVIDIA提供的资料,每个线程块只能在一个流式多处理器(SM)上执行(G80的128个SP被分成了16个SM),而多个线程块则可以同时驻留在一个SM上。
CPU和GPU紧密耦合并行线程阵列
经过了CUDA对线程、线程块的定义和管理,我们不难发现在支持CUDA的GPU内部实际上已经成为了一个迷你网格计算系统。
在内存访问方面,整个GPU可以支配的存储空间被分成了寄存器(Register)、全局内存(ExternalDRAM)、共享内存(ParallelDataCache)三大部分。
其中寄存器和共享内存集成在GPU内部,拥有极高的速度,但容量很小。
共享内存可以被同个线程块内的线程所共享,而全局内存则是我们熟知的显存,它在GPU外部,容量很大但速度较慢。
经过多个级别的内存访问结构设计,CUDA已经可以提供让人满意的内存访问机制,而不是像传统GPGPU那样需要开发者自行定义。
基于CUDA的程序能在GPU中透明伸缩
毫不夸张的说,在CUDA的帮助下普通程序员只要学习一点点额外的GPU架构知识,就能立刻用熟悉的C语言释放GPU恐怖的浮点运算能力,随着GeForce280GTX的问世,通过CUDA所能调度的运算力已经非常逼近万亿次浮点运算(GeForce280GTX单卡浮点运算能力为933GFLOPS)。
而在此之前要获得万亿次的计算能力至少需要购买价值几十万元的小型机。
CUDA能做什么?
早在GeForce8800GTX问世不久,NVIDIA就宣布了针对高性能计算领域的Tesla流处理器。
而当我们拆开Tesla之后就能发现,它采用了GeForce8800GTX/QuadroFX5600完全一致的架构。
那究竟CUDA加上GPU能够带来什么?
答案相当简单:
海量的计算能力。
在分子动力学领域,CUDA加上GeForce8800GTX获得了较CPU快240倍的运算速度。
与此同时,在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NVIDIA 显卡 支持 CUDA