《CUDA C编程权威指南》——1.4 使用CUDA C编程难吗

简介:

本节书摘来自华章计算机《CUDA C编程权威指南》一书中的第1章,第1.4节,作者 [美] 马克斯·格罗斯曼(Max Grossman),译 颜成钢 殷建 李亮,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 使用CUDA C编程难吗

CPU编程和GPU编程的主要区别是程序员对GPU架构的熟悉程度。用并行思维进行思考并对GPU架构有了基本的了解,会使你编写规模达到成百上千个核的并行程序,如同写串行程序一样简单。

如果你想编写一个像并行程序一样高效的代码,那么你需要对CPU架构有基本的了解。例如,数据局部性在并行编程中是一个非常重要的概念。数据局部性指的是数据重用,以降低内存访问的延迟。数据局部性有两种基本类型。时间局部性是指在相对较短的时间段内数据和/或资源的重用。空间局部性是指在相对较接近的存储空间内数据元素的重用。现代的CPU架构使用大容量缓存来优化具有良好空间局部性和时间局部性的应用程序。设计高效利用CPU缓存的算法是程序员的工作。程序员必须处理低层的缓存优化,但由于线程在底层架构中的安排是透明的,所以这一点程序员是没有办法优化的。

CUDA中有内存层次和线程层次的概念,使用如下结构,有助于你对线程执行进行更高层次的控制和调度:

  • 内存层次结构
  • 线程层次结构

例如,在CUDA编程模型中使用的共享内存(一个特殊的内存)。共享内存可以视为一个被软件管理的高速缓存,通过为主内存节省带宽来大幅度提高运行速度。有了共享内存,你可以直接控制代码的数据局部性。

当用ANSI C语言编写一个并行程序时,你需要使用pthreads或者OpenMP来显式地组织线程,这两项技术使得在大多数处理器架构以及操作系统中支持并行编程。当用CUDA C编写程序时,实际上你只编写了被单个线程调用的一小段串行代码。GPU处理这个内核函数,然后通过启动成千上万个线程来实现并行化,所有的线程都执行相同的计算。CUDA编程模型提供了一个层次化地组织线程的方法,它直接影响到线程在GPU上的执行顺序。因为CUDA C是C语言的扩展,通常可以直接将C程序移植到CUDA C程序中。概念上,剥离代码中的循环后产生CUDA C实现的内核代码。

CUDA抽象了硬件细节,且不需要将应用程序映射到传统图形API上。CUDA核中有3个关键抽象:线程组的层次结构,内存的层次结构以及障碍同步。这3个抽象是最小的一组语言扩展。随着CUDA版本的更新,NVIDIA正在对并行编程进行不断简化。尽管一些人仍然认为CUDA的概念比较低级,但如果稍稍提高抽象级,对你控制应用程序和平台之间的互动关系来说会增加很大难度。如果那样的话,不管你掌握了多少底层架构的知识,你的应用程序的性能都将超出控制。

因此,你的目标应是学习GPU架构的基础及掌握CUDA开发工具和环境。

image

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
YUV 与 RGB的转换
RGB 转换成 YUV Y = (0.257 * R) + (0.504 * G) + (0.
5889 0
|
Windows 内存技术
实战--虚拟机用ffmpeg采集音频设备,并用rtmp推流
实战--虚拟机用ffmpeg采集音频设备,并用rtmp推流
336 0
|
Web App开发 JavaScript 中间件
|
机器学习/深度学习 自然语言处理 API
LLM系列 | 00:斯坦福 Alpaca 模型介绍及其复现
今天这篇小作文主要介绍一下斯坦福 Alpaca 模型及其复现结果。
|
异构计算
Premiere最新2023版下载及PR2023电脑配置要求
Adobe Premiere Pro 2023更新了,Adobe Premiere Pro 2023简称Pr2023是一款由Adobe公司推出的常用视频编辑软件,它可以提升您的创作能力和创作自由度,它是易学、高效、精确的视频剪辑软件。新版本功能更强大,让你的视频编辑工作更顺心!Adobe Premiere Pro 2023视频编辑始终处于领先地位。
1340 0
|
存储
ARM64特有一些的汇编指令
ARM64特有的汇编指令
2553 0
ARM64特有一些的汇编指令
|
SQL 存储 JSON
阿里云交互式分析与Presto对比分析及使用注意事项
文章首先介绍了Presto以及它的应用场景、特点、架构和原理、数据模型、数据类型,并且以Presto数据查询作为实例。然后介绍了阿里云交互式分析,同时列举了它的优势和典型应用场景,对权限、数据类型、实例对象层级进行讲解,并且对交互式分析的两大场景进行实践分析,列举了几种表的特征设置,以阿里云交互式分析开发作为示例展示其过程。
2165 0
阿里云交互式分析与Presto对比分析及使用注意事项
|
新零售 人工智能 达摩院
十年再出发!阿里云智能总裁张建锋演讲全记录
3月21日,“十年再出发”阿里云峰会于国家会议中心正式召开。阿里云智能总裁张建锋(行癫)携核心管理团队首次悉数亮相,并对阿里云做了全面的战略解读。以下是演讲全文。
5791 0