一:概述
在前面的CUDA编程01- 并行编程介绍中,我们了解到CPU的设计目的是最小化指令执行的延迟,而GPU的设计目的是最大化执行指令的吞吐量。在前面CUDA编程02 - 数据并行介绍和CUDA编程03 - 多维数据并行中,我们学习了使用CUDA编程接口创建和调用核函数来启动和执行线程的核心特性。在接下来的三篇文章中,我们将讨论现代GPU的架构,包括计算架构和内存架构,并探讨基于架构理解之上的性能优化技术。本章将介绍GPU计算架构的几个方面,这些方面对于CUDA C程序员理解其核函数的性能和行为至关重要。我们将首先展示一个简化的、高层次的计算架构视图,并探讨灵活的资源分配、块的调度以及占用率等概念。然后,我们将深入探讨线程调度、延迟容忍度、分支控制和同步等主题。最后,我们将介绍API函数,这些函数可用于查询GPU中可用的资源以及帮助估算执行核函数时GPU的占用情况。在接下来的两章中,我们将介绍GPU内存架构的核心概念和编程考虑因素。特别是,在接下来两章中将专注于GPU片上内存架构,以及介绍GPU片外内存架构,最后详细阐述GPU架构的整体性能需要考量的因素。一个CUDA C 程序员如果掌握了这些概念,就能很好地理解和编写高性能并行程