前言
自人类文明诞生以来,对算力的需求就从未停歇。从古希腊的算盘、阿拉伯数学家对代数的系统化,到莱布尼茨与牛顿为微积分而争锋,再到近代图灵、冯·诺依曼等先驱奠基的计算机理论,技术的不断迭代皆围绕一个核心目标:更高效率、更强大、更普惠的计算能力。我们身处的信息时代,数据与计算需求正以指数级增长:从庞大的科学计算、高性能计算(HPC),到人工智能、大数据,再到实时渲染和元宇宙应用,一个个应用场景的浮现,都将“通用且强大的并行计算”推向了时代舞台的中央。
在过去的数十年间,图形处理器(GPU)经历了从固定功能管线到可编程着色器,再到GPGPU(通用GPU)时代的演变,充分展现了并行计算的巨大潜力。回顾20世纪末,GPU尚被视为专业的图形加速硬件,主要用于游戏、图形渲染以及CAD等领域。随着程序员和研究者对可编程着色单元的不断挖掘,尤其是Shader Model的演进,人们逐渐意识到:GPU不只能绘图,其强大的多核并行结构同样可被用来加速通用计算。自2006年前后CUDA、OpenCL等编程生态的兴起,GPU的通用计算价值被全面释放,无数科学研究、机器学习、数据分析工作开始从传统CPU平台迁移或部分迁移至GPU平台,性能呈现数量级的提升,成为当之无愧的并行计算基石。
然而,主流GPU架构与软件栈常被少数厂商主导,GPU的核心指令集架构、硬件实现细节等关键技术信息通常在专利和商业机密保护下,难以被公开探究。对于学术研究者、开源爱好者、初创企业等群体而言,难以从头完整地了解GPU内在原理与软硬件的协同设计。于是,开源GPU项目应运而生。在全球范围内,部分高校实验室、开源社区以及行业先驱陆续投入到开源GPU的研究与实践中,为GPU技术的普及与创新提供了新的可能。
乘影GPGPU正是我们面向开源与研究的尝试和贡献。它不是简单地重复已有的GPU结构,而是试图深入剖析GPU在现代并行计算中的定位与架构特征,结合RISC-V等开源生态与灵活的参数化设计,探索适合学术研究、企业创新的软硬件设计路径。该项目不仅提供了基于RISC-V向量扩展理念的自定义指令集,还展示了完整的流式多处理器单元(SM)设计、CTA调度器、缓存子系统、内存管理单元、张量加速模块,以及上层编译器与驱动实现,从而为读者提供一个端到端的完整视角。
本书的写作初衷,正是为了帮助有志于理解并掌握GPGPU架构与实现细节的读者,搭建一个理论与实践兼顾的学习与研究平台。全书分为以下4大部分。
第1部分从GPU发展的时代背景切入,回顾GPGPU的演变历史和主要开源项目,为读者构建宏观理解。
第2部分详细介绍GPU设计思想与指令集,首先介绍三种并行思想与GPGPU的设计理念,然后介绍NVIDIA和AMD的GPU指令集及RISC-V向量扩展,最后介绍乘影GPGPU指令集设计。
第3部分深入剖析乘影GPGPU的硬件微架构,从流式多处理器单元的流水线、调度器,到缓存与内存管理单元,以及针对AI加速的张量计算系统,逐层探秘内部机制与实现。
第4部分聚焦乘影GPGPU软件工具链,介绍OpenCL编程模型,并展示基于LLVM
的编译器设计及软件工具链,为完整的GPGPU生态画上点睛之笔。
本书旨在达成两个核心目标。首先,我们希望帮助感兴趣的读者系统了解现代GPGPU的软硬件知识,以便更好地指导GPU编程、工具链开发以及硬件设计实践;书中会穿插介绍一些成功的GPU设计实践和产品,帮助读者增强理解。其次,本书以开源的乘影GPGPU为参考设计,详细介绍其软硬件设计细节,旨在为开发者和学生提供快速入门的指引,同时推动乘影开源GPGPU社区的繁荣发展。
我们希望,本书不仅是一份技术文档,更是面向GPU技术未来的一个思考和对话平台。从行业宏观趋势到架构细节,从开源社区生态到实际硬件落地,本书都力求做到兼顾深度与广度,为读者勾勒出一幅GPGPU技术的全景图。对于已经在GPU领域耕耘多年的工程师与科研工作者而言,本书或许能提供新的思考角度或技术灵感;对于初入门的学生或工程师,也希望本书能成为学习GPU设计原理与编译工具链的重要指引。
在准备本书的过程中,我们深深感受到通用并行计算时代所蕴含的机遇与挑战。当我们站在人工智能时代的前夜回望,GPU从专用图形加速器蜕变为通用计算引擎的历程,恰如寒武纪生命大爆发般璀璨夺目—这场始于20世纪末的硅基生命形态跃迁,不仅重塑了计算世界的版图,更在科学计算、深度学习等领域掀起惊涛骇浪。无论是传统HPC,还是当下炙手可热的AI算力,GPU正在从更高层次和更广范围加速人类社会对科学与技术前沿的探索,也逐渐成为算力世界的一大支柱。倘若能对读者在学习、研究或创业上有所启发,促进更多人投身GPU与并行计算的创新与实践,这便是本书最有价值的意义。
诚然,乘影项目以及本书的内容都仍有不完善之处,也期待与社区和读者们携手并进。让我们一起用开放、协作、求真的态度,探索并行计算的下一程。愿本书能成为您踏入GPGPU深度学习与架构设计殿堂的一把钥匙,推动更多学术创新与产业落地。
作 者
2025年10月
致谢
本书从构思到成稿,离不开众多前辈、同行、课题组成员以及朋友们的鼎力支持与帮助。在此谨向所有为本书和乘影GPGPU项目做出贡献的个人和组织致以诚挚的谢意。
首先,我们要对GPGPU-Sim、MIAOW、Vortex等开源GPU项目的开发者们表达由衷的敬意。他们开创性的研究与实践,持续为开源GPU领域注入活力;他们在架构、工具链、性能优化等方面的成果,启发了我们对自身项目的思考与改进,为开源GPU社区的共同进步做出了卓越贡献。
与此同时,我们也要向众多为项目提供关键支持的合作伙伴致以诚挚的谢意。特别感谢兆松科技(武汉)有限公司,其团队开发的OpenCL编译器为上层软件生态提供了关键支持;并诚挚感谢苏州国芯科技股份有限公司,他们高质量的Verilog版本为硬件实现奠定了坚实基础。同样感谢北京奕斯伟科技集团有限公司在软硬件开发过程中提供的无私帮助,感谢阿里巴巴达摩院与芯动科技(北京)有限公司对指令集设计的支持。我们也特别感谢包云岗研究员及其团队在“香山”项目中的先行探索。作为国内开源RISC-V处理器的杰出代表,“香山”项目所展现的技术深度与开源精神,为我们推进乘影GPGPU项目提供了重要启示与经验借鉴。
在开源硬件生态方面,RISC-V国际基金会为全球RISC-V社区提供了强有力的技术支持与交流平台;而OpenCL和LLVM社区的繁荣发展,则为本书中所述的软件工具链和编译器搭建奠定了坚实的基础。我们也感谢各大高性能计算研究组以及学术界和产业界的伙伴,在并行计算领域为我们带来的思路和反馈。
在此过程中,课题组各位成员为乘影GPGPU项目的顺利推进倾注了大量心血。他们在架构设计、代码开发、测试验证、整理资料等各方面所做的不懈努力,为本项目和本书的完成奠定了坚实基础。同时,学术界和产业界各位同行一直以来给予的交流、合作与支持,使我们得以站在更广阔的视野上,及时把握行业前沿并不断完善项目与本书内容。在此向所有课题组成员以及学术界和产业界的同行表示衷心感谢。
此外,感谢在本项目及本书编写过程中提供关键建议和批评指正的专家学者,以及不计回报地测试或维护代码的社区志愿者。他们的智慧与付出,让乘影GPGPU项目获得了更广泛、更专业的支持。同时也要特别感谢本书所有的合著者、审稿者,以及那些在幕后默默付出的团队成员,没有他们的坚持与合作,本书难以面世。
最后,要将最真挚的谢意献给所有家人、朋友和同事,是他们在艰辛的研发和写作过程中给予了我们最大的理解与鼓励。正是这种温暖而坚定的力量,支撑我们完成了这份工作。
本书虽已成稿,但乘影GPGPU项目仍在不断迭代演进。我们期待更多的读者、研究者和爱好者投身开源硬件与并行计算的探索,一同续写更精彩的篇章。让我们携手并进,合力开启GPU技术与架构设计的全新未来。
作 者
2025年10月
