cuda编程背景

CUDA是NVIDIA于2006年11月推出的,用于发挥NVIDIA GPU通用计算能力的编程环境,目前支持CUDA C和OpenCL(Open Computing Language)语言,计算效率高,常可加速十几倍到几十倍。相比OpenCL和Brook+,CUDAC更易于使用。另外NVIDIA对CUDA的大力支持是其他厂商所不能比拟的。

CUDA认为系统上可以用于计算的硬件包含两个部分:一个是CPU(称为主机),一个是GPU(称为设备),CPU控制/指挥GPU工作,GPU只是CPU的协处理器。目前CUDA只支持NVIDIA的GPU,而CPU由主机端编程环境负责。

CUDA是一种架构,也是一种语言。作为一种架构,它包括硬件的体系结构(G80、GT200、Fermi、Kepler)、硬件的CUDA计算能力及CUDA程序是如何映射到GPU上执行;作为一种语言,CUDA提供了能够利用GPU计算能力的方方面面的功能。CUDA的架构包括其编程模型、存储器模型和执行模型。CUDA C语言主要说明了如何定义计算内核(kernel)。CUDA架构在硬件结构、编程方式与CPU体系有极大不同,关于CUDA的具体细节读者可参考CUDA相关的书籍。

CUDA以C/C++语法为基础而设计,因此对熟悉C系列语言的程序员来说,CUDA的语法比较容易掌握。另外CUDA只对ANSI C进行了最小的扩展,以实现其关键特性:线程按照两个层次进行组织、共享存储器(shared memory)和栅栏(barrier)同步。

目前CUDA提供了两种API以满足不同人群的需要:运行时API和驱动API。运行时API基于驱动API构建,应用也可以使用驱动API。驱动API通过展示低层的概念提供了额外的控制。使用运行时API时,初始化、上下文和模块管理都是隐式的,因此代码更简明。一般一个应用只需要使用运行时API或者驱动API中的一种,但是可以同时混合使用这两种。笔者建议优先使用运行时API。

6.2.5 OpenCL

OpenCL(Open Computing Language,开放计算语言),先由Apple设计,后来交由Khronos Group维护,是异构平台并行编程的开放的标准,也是一个编程框架。Khronos Group是一个非盈利性技术组织,维护着多个开放的工业标准,并且得到了业界的广泛支持。OpenCL的设计借鉴了CUDA的成功经验,并尽可能地支持多核CPU、GPU或其他加速器。OpenCL不但支持数据并行,还支持任务并行。同时OpenCL内建了多GPU并行的支持。这使得O

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • CUDA和OpenCL都是实现计算机异构并行计算架构,然而CUDA是针对NVIDIA公司的GPU,而OpenCL是...
    王侦阅读 12,499评论 0 4
  • 1. CPU vs. GPU 1.1 四种计算机模型 GPU设计的初衷就是为了减轻CPU计算的负载,将一部分图形计...
    王侦阅读 21,190评论 3 20
  • CUDA从入门到精通(零):写在前面 本文原版链接: 在老板的要求下,本博主从2012年上高性能计算课程开始接触C...
    Pitfalls阅读 9,055评论 1 3
  • 1. 介绍 首先让我们来看看TensorFlow! 但是在我们开始之前,我们先来看看Python API中的Ten...
    JasonJe阅读 14,047评论 1 32
  • 1. 简介 官网在这里 OpenCL(Open Computing Language),即开放运算语言,是一个统一...
    王侦阅读 5,884评论 0 1

友情链接更多精彩内容