|
在2006年11月份, NVIDIA 引入了CUDA™概念, 一个通用并行计算架构—含有新的并行编程模型和指令架构– 其使得将NVIDIA GPU中的并行计算引擎的能力得以提升从而利用该架构能比在传统CPU上更加高效的解决许多复杂计算问题。
CUDA 的软件环境使得开发者能够使用C作为高级语言来进行CUDA编程。如图1-3所示,其他的语言或者应用程序接口(API)在未来也会被支持,诸如 FORTRAN, C++, OpenCL, 以及 Direct3D 11 Compute。
多核 CPU 和多核 GPU 的出现意味着并行系统已成为主流处理器芯片。此外,根据摩尔定律,其并行性将不断扩展。这带来了严峻的挑战,我们需要开发出可透明地扩展并行性的应用软件,以便利用日益增加的处理器内核数量,这种情况正如 3D 图形应用程序透明地扩展其并行性以支持配备各种数量的内核的多核 GPU。
CUDA 是一种并行编程模型和软件环境,用于应对这种挑战,同时保证熟悉 C 语言等标准编程语言的程序员能够迅速掌握 CUDA。
CUDA 的核心有三个重要抽象概念:线程组层次结构、共享存储器、屏蔽同步(barrier synchronization),可轻松将其作为 C 语言的最小扩展级公开给程序员。
这些抽象提供了细粒度的数据并行化和线程并行化,嵌套于粗粒度的数据并行化和任务并行化之中。它们将指导程序员将问题分解为更小的片段,以便通过协作的方法并行解决。这样的分解保留了语言表达,允许线程在解决各子问题时协作,同时支持透明的可伸缩性,使您可以安排在任何可用处理器内核上处理各子问题:因而,编译后的 CUDA 程序可以在任何数量的处理器内核上执行,只有运行时系统需要了解物理处理器数量。
可伸缩的编程模型允许CUDA架构能够在处理器的数目以及内存分配上具备很大的市场跨度:从高端狂热玩家的 GeForce GTX 280 GPU 以及专业的Quadro 和 Tesla 计算产品到主流的价格便宜的GeForce GPU。 |
|