01《CUDA编程基础与实践》-GPU硬件与CUDA程序开发工具

第1章 GPU硬件与CUDA程序开发工具

1.1 前言

基于 CPU (central processing unit,中央处理器)和 GPU(graphics processing unit,图形处理器)的异构计算 (heterogeneous computing)已逐步发展为高性能计算(high performance computing)领域的主流模式。很多超级计算机大量使用了GPU。CUDA (compute unifed device architecture)作为 GPU 高性能计算的主要开发工具之一,已经在计算机、物理、化学、生物、材料等众多领域发挥了重要作用。掌握 CUDA 编程也就意味着开了一条通往高性能计算的新道
路。
1.2 GPU硬件简介
1、GPU是英文 graphics processing unit 的首字母缩写,意为图形处理器。GPU也常被称为显卡(graphics card)。与它对应的一个概念是 CPU,即 central processingunit(中央处理器)的首字母缩写。

2、CPU 和 GPU的显著区别如下块典型的 CPU 拥有少数几个快速的计算核心,而一块典型的 GPU 拥有几百到几千个不那么快速的计算核心。CPU 中有更多的晶体管用于数据缓存和流程控制,但 GPU 中有更多的晶体管用于算术逻辑单元。所以,GPU 是靠众多的计算核心来获得相对较高的计算性能的。GPU计算不是指单独的GPU计算,而是指CPU+GPU的异构(heterogen-eous)计算,在由CPU和GPU构成的异构计算平台中,通常将起控制作用的CPU称为主机(host),将起加速作用的GPU称为设备(device)。
CPU和非集成GPU的硬件架构示意图
3、CUDA编程目前只支持该公司的CPU,以下几个系列的GPU都支持CUDA编程。

(1)Tesla 系列:其中的内存为纠错内存(error-correcting code
memory,ECC内存),稳定性好,主要用于高性能、高强度的科 学计算。
(2)Quadro 系列:支持高速 OpenGL (opengraphics library)渲染,主要用于专业绘图设计。
(3) GeForce 系列:主要用于游戏与娱乐,但也常用于科学计算。GeForce 系列的 GPU 没有纠错内存,用于科学计算时具有一定的风险。然而,GeForce系列的GPU 价格相对低廉、性价比高,用于学习 CUDA 编程是没有任何问题的。即使是便携式计算机GeForce系列的GPU也可以用来学习 CUDA编程。
(4)Jetson 系列: 入式设备中的GPU。作者对此无使用经验,本书也不专门讨论。

每一款GPU都有一个用以表示其“计算能力’’(compute capability)的版本号,该版本号可以写为形如X.Y的形式。其中X表示主版本号,Y表示次版本号。
在这里插入图片描述
计算能力并不等价于计算性能。例如GeForceRTX2000系列的计算能力高于TeslaV10,但后者在很多方面性能更高(售价也高得多)。

在这里插入图片描述
1.3 CUDA程序开发工具
(1)以下几种软件开发工具都可以用来进行 GPU编程

 (1)CUDA。这是主题。
 (2)OpenCL。这是一个更为通用的为各种异构平台编写并行程序的框架,也是 AMD (Advanced Micro Devices)公司的 GPU 的主要程序开发工具。本书不涉及 OpenCL 编程,对此感兴趣的读者可参考《OpenCL 异构并行计算:原理、机制与优化实践》(刘文志,陈轶,吴长江,北京: 机械工业出版社)。
 (3)OpenACC。这是一个由多个公司共同开发的异构并行编程标准。本书也不涉及 OpenACC 编程,对此感兴趣的读者可参考《OpenACC 并行编程实战》(何沧平,北京:机械工业出版社)。

(2)CUDA 提供了两层API(application programming interface,应用程序编程接口)供程序员使用,即 CUDA 驱动(driver)API和 CUDA 运行时(runtime)API其中,CUDA 驱动API是更加底层的 API它为程序员提供了更为灵活的编程接口;CUDA 运行时 API是在 CUDA 驱动 API的基础上构建的一个更为高级的API,更容易使用。这两种 API 在性能上几乎没有差别。从程序的可读性来看,使用CUDA 运行时API是更好的选择。在其他编程语言中使用 CUDA 时驱API很多时候是必需的。
(3)下图展示了 CUDA 开发环境的主要组件。开发的应用程序是以主机(CPU)为出发点的。应用程序可以调用 CUDA 运行时API、CUDA 驱动API及一些已有的CUDA库所有这些调用都将利用设备(GPU)的硬资源。
CUDA编程开发环境概览
1.4 其他内容
编程指南(programming guides)。该部分有很多重要的文内容
(1)最重要的文档是《CUDA C++ Programming Guide》
(2)另一个值得一看的文档是《CUDA C++ Best Practices Guide》
(3)针对最近的几个 GPU 架构进行优化的指南,为

在这里插入图片描述

 这几个简短的文档可以帮助有经验的用户迅速了解一个新的架构。

(4) CUDA API手册(CUDA APIreferences)。这里有
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值