欢迎来到天天文库
浏览记录
ID:8964487
大小:103.50 KB
页数:6页
时间:2018-04-13
《cuda并行计算架构及编程》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、CUDA并行架构及编程摘要CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDAC编程语言,CUDA使GPU流处理器阵列的性能得到充分发挥。极大地提高了并行计算程序的效率。关键词并行计算,GPU通用计算,CUDAAbstractCUDAisaparallelcomputingarchitectureintroducedbyNVIDIA,itmainlyusedforlargescaledata-intensivecomputing.CUDA
2、makesGPUahighperformanceinparallelcomputing,dataprocessingandothergeneralcomputing.thispaperdiscussestheCUDAcomputingarchitectureandCUDACprogramminglanguagebasedonGPU,CUDAmakesGPUstreamprocessorarraysfullyusedandGreatlyimprovedtheefficiencyofparallelcomputingprogram.Keywordsparallelcomputing,GPU
3、generalpurposecomputation,CUDA1引言并行计算是指同时使用多种计算资源解决计算问题的过程。并行计算科学中主要研究的是空间上的并行问题。从程序和算法设计的角度来看,并行计算又可分为数据并行和任务并行。一般来说,GPU更注重于数据并行计算,主要是将一个大任务化解成相同的各个子任务。早期的GPU研究是通过可编程计算单元为屏幕上的每个像素计算出一个颜色值即渲染问题。自CUDAC出现后,基于GPU的通用计算已经成为一个新的研究领域。通常,像素着色器对各种颜色值进行合成并计算出最终的颜色值。实际上,输入值可以为任意数据,这样不一定非要使用GPU来处理图形,还可以实现某些
4、通用计算。由于GPU有着很高的计算吞吐量,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA是一种由NVIDIA推出的并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构以及GPU内部的并行计算引擎[1]。随着显卡的发展,GPU越来越强大,在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡会造成计算能力的浪费,因此NVIDIA推出CUDA,让显卡可以用于图像渲染以外的目的。CUDA的GPU编程语言基于标准的C语言,通过在标准C语言的基础上增加一小部分关键字,任何有C语言基础的用户都很容易地开发CUDA的应用程序。数以千计的软件
5、开发人员正在使用免费的CUDA软件开发工具来解决各种专业中的问题[2]。这些解决方案涵盖了石油天然气勘探、产品设计、医学成像以及科学研究等领域。2CUDA架构CUDA程序架构分为两部分:主机和设备。一般而言,主机指的是CPU及其内存,设备指的是GPU[1]。在CUDA程序架构中,主程序由CPU来执行,而当遇到数据并行处理的部分,CUDA就会将程序编译成GPU能执行的程序,并传送到GPU。这种函数在CUDA里叫做核函数。在GPU中要执行的线程,根据最有效的数据共享来创建线程块,其类型不止一维。在同一个块里的线程,使用同一个共享内存。每个线程由线程ID标识。这是线程块中的线程号。为了帮助基
6、于线程ID的复杂寻址,还可以将线程块指定为任意大小的一维、二维或高维线程阵列,并使用多个索引分量来标识每个线程[2]。线程块的大小是也有限制的,所以不能把所有的线程都放到同一个块里。可以用同样维度和大小的块来组成一个网格做批处理。执行内核的线程被组织成线程块。而线程块又组成了线程格,如图1。线程块内一起协作的线程通过一些快速的共享内存有效地共享数据并同步执行,以协调内存访问。用户可以在核函数中指定同步点。线程块中的线程在到达此同步点时挂起。图1线程被组织为线程格与线程块图2SM单元的组成在GPU内部,SM代表流处理器,即计算核心。每个SM中又包含8个标量流处理器(SP)以及少量的其他计
7、算单元[3],如图2。实际上SP只是执行单元,并不是完整的处理核心。处理核心必须包含取指、解码、分发逻辑和执行单元。隶属同一SM的8个SP共用同一套取指和发射单元,也共用一块共享存储器。一个线程块必须被分配到一个SM中,但是一个SM中同一时刻可以有多个活动线程块等待执行。这可以更好地利用执行单元的资源,当一个线程块进行同步或者访问显存等高延迟操作时,另一个线程块就可以占用GPU执行资源。每个线程有一个私有的本地存储器,即每个标量处理器私有的缓存
此文档下载收益归作者所有