炼数成金 门户 CUDA 查看内容

通用并行计算架构和编程模型

2015-9-9 12:19| 发布者: 炼数成金_小数| 查看: 1912| 评论: 0|原作者: yyfn风辰|来自: it168

摘要: 2006年11月,英伟达推出了CUDA,一种基于新的并行编程模型和指令集架构的通用计算架构,CUDA 能够利用英伟达GPU的并行计算引擎比CPU更高效的解决许多复杂计算任务。CUDA包含一个让开发者能够使用C作为高级编程语言的 ...

模型 架构 编程 GPU CUDA

2006年11月,英伟达推出了CUDA,一种基于新的并行编程模型和指令集架构的通用计算架构,CUDA 能够利用英伟达GPU的并行计算引擎比CPU更高效的解决许多复杂计算任务。CUDA包含一个让开发者能够使用C作为高级编程语言的软件环境。如图1-3所示,其它的语言和应用编程接口(API)也被支持,如CUDA FORTRAN,OpenCL和Direct Compute。
CUDA初探:通用并行计算架构和编程模型
图1-3. CUDA设计为支持多种语言和应用编程接口

一种可扩展的编程模型
多核CPU和众核GPU的出现,意味着主流处理器芯片现在已经是并行系统了。更进一步的说,他们的并行度将继续以摩尔定律扩展。面临的挑战是开发透明的扩展并行度以利用不断增加的处理器核心数的应用软件,更像三维图形应用透明的扩展他们的并行度到不同数目核心的GPU上一样。

设计CUDA并行编程模型是为了在克服这种挑战的同时,使得熟悉标准编程语言(如C)的程序员保持一个比较低的学习曲线。 CUDA核心包含三个重点抽象:线程组层次、共享存储器和栅栏同步,这些被作为一个最小的语言扩展集简单呈现(expose)给程序员。 这些抽象提供了细粒度数据并行度和线程并行度,嵌套在粗粒度数据并行和任务并行中。他们引导程序员将问题划分为可以被多个块内线程独立并行处理的粗粒度子问题,而每个子问题又被分为可以被一个块内线程并行协作处理的更小的片段。这种分解通过在处理子问题的时候允许线程协作保持了语言的表达性,同时保证了自动可扩展性。事实上,每个块可被调度到可用处理器核心的任意一个上,以任何顺序,并行或者串行执行,这使得已编译好的CUDA程序能够在任意核心的GPU上执行,如图1-4所示,只有运行时系统需要知道物理处理器的数量。
CUDA初探:通用并行计算架构和编程模型

这种可扩展的编程模型允许CUDA架构通过简单的缩放处理器的数量和存储器分区的数量来满足市场不同层次的需求:从高性能发烧友级精视GPU和专业级的Quadro和Tesla计算产品到多种便宜、主流的精视GPU。

鲜花

握手

雷人

路过

鸡蛋

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

热门文章

     

    GMT+8, 2020-1-25 01:35 , Processed in 0.148234 second(s), 23 queries .