从引言中“Dennard Scaling”的失效开始,引入GPU出现的背景,又介绍了GPU的通用性,以及高并发、低延迟保证的高计算速度。随后,我们以最常见的CUDA为例,介绍了GPU编程的基础,SIMT与SIMD,编译链接的过程。最后,我们深入硬件层面,分为三步走,先用最简系统“run起来”,然后分别解决了指令依赖问题,以及并发执行中的数据访问冲突问题,构建并了解了一个通用GPU核心的架构。
本文介绍的GPU知识,只是对各厂商、各架构设计做“求同存异”后,得到的主干性的、通用性的基础知识,而GPU作为当代最为炙手可热的科技产品之一,其发展是日新月异的。笔者希望这些基础知识可以作为有兴趣的读者的“指路牌”,指引读者在本文建立起来的基础视野上,进一步探索。