新書推薦:

《
人偶游戏(东野圭吾竟然写过这种惊悚悬疑之作)
》
售價:HK$
65.8

《
自然、权利与正义(重思古典自然法 探索人类生活的永恒根基)
》
售價:HK$
74.8

《
汗青堂丛书155·糖与现代世界的塑造:种植园、奴隶制与全球化
》
售價:HK$
118.8

《
企业家业保障与传承
》
售價:HK$
187.6

《
世界武器装备知识图解
》
售價:HK$
174.6

《
南方丝绸之路与欧亚古代文明
》
售價:HK$
233.6

《
文化南方:中古时期中国文学核心传统
》
售價:HK$
70.6

《
台湾四百年:精装珍藏版
》
售價:HK$
59.7
|
內容簡介: |
近年来,随着国产Linux桌面系统的逐步推广、使用Linux内核的Android系统的发展和使用Linux服务器的云游戏服务的普及,Linux下的实时渲染应用越来越广。同时随着大模型计算的蓬勃发展,显卡越来越成为计算系统的核心组件。但是Linux下的渲染架构与显卡驱动一直缺少资料。本书以AMD显卡为例,主要阐述显卡计算的原理和显卡驱动的组织方式,并对Linux用户空间到内核空间的渲染架构的原理和变化进行了深入解释。包括了从X到Wayland和Android的图形架构的变化和渲染API的系统层工作原理。同时阐述了大模型计算的底层硬件原理。本书主要基于AMD显卡和Linux下的开源驱动,从用户空间驱动、内核空间驱动、固件和显卡硬件四个方向分析现代显卡的渲染与计算的工作原理。第1章与第2章主要介绍显卡用于渲染、计算和合成的硬件结构;第3章与第4章主要介绍用户空间驱动;第5章到第8章主要介绍显卡内核空间驱动,其中,第5章系统性地介绍AMD显卡内核空间驱动的架构,第6章主要介绍显卡的GPU任务调度器,第7章与第8章主要关注显存管理;第9章主要分析显卡的频率、电压与功耗的关系;第10章主要介绍显卡在大规模AI计算中的应用与性能优化。游戏与渲染相关开发人员、桌面操作系统的开发人员、希望了解GPU计算原理的AI计算开发人员、希望学习显示架构和AI计算的大学生。
|
關於作者: |
刘京洋,历任网易、华为、腾讯三司技术专家,有39个发明专利,著有《深入Linux内核架构与底层原理》(二版)。长期工作在国内一线科技公司从事Linux内核领域的研发工作,精通Linux内核的各个子系统。近年来随着显卡计算的发展,主要精力投入到显卡计算方向。目前在腾讯前沿技术中心从事云端实时渲染计算和显卡集群AI计算研发工作。赵新达,2006年硕士毕业于浙江大学,拥有18年GPU领域经验。先后在VIA、AMD、INTEL和腾讯公司从事GPU相关研发,专注于GPU Display、2D、3D和虚拟化技术。近年来,专注于云游戏开发,负责硬件平台选型、开发和上线,以及云游戏的渲染性能优化和兼容性相关开发工作,与此同时,担任IEEE云游戏国际标准工作组组长。
|
目錄:
|
目录 第1章 显卡的硬件结构1 1.1 AMD显卡的历史与核心技术1 1.1.1 GCN与RDNA1 1.1.2 显卡的分类2 1.1.3 AMD显卡的主要技术3 1.2 显卡的计算硬件结构6 1.2.1 CPU与GPU的硬件区别6 1.2.2 着色器的执行硬件7 1.2.3 显卡指令集8 1.2.4 SIMT、SIMD与SMT9 1.2.5 SPU、SIMD与CU10 1.2.6 线程、Wave与工作组12 1.2.7 GCN的并行问题和RDNA的解决办法13 1.2.8 SE15 1.2.9 显卡并行的性能问题16 1.3 显卡的硬件图形管线17 1.3.1 图形流水线17 1.3.2 硬件管线的低功耗:IMR、TBR与TBDR20 1.3.3 显卡的压缩纹理27 1.3.4 硬件图形管线的计算着色器通用化29 1.4 显卡的内存硬件结构31 1.4.1 独立显卡与集成显卡的显存区别31 1.4.2 显卡内部的内存结构32 1.4.3 显存的分类34 1.4.4 内存的检测和纠正36 1.5 显卡的显示输出38 1.5.1 显示方式38 1.5.2 DCC与EDID39 第2章 合成与显示41 2.1 DRI41 2.1.1 非直接渲染41 2.1.2 DRI142 2.1.3 DRI243 2.1.4 DRI344 2.2 X、Wayland、SurfaceFlinger与WindowManager45 2.2.1 X45 2.2.2 Wayland47 2.2.3 SurfaceFlinger与WindowManager49 2.3 FrameBuffer与送显51 2.3.1 FrameBuffer51 2.3.2 Android的FrameBuffer管理53 2.3.3 送显与DC55 2.4 合成与DPU、VPU61 2.5 Linux内核的合成与送显:KMS64 2.5.1 KMS与送显64 2.5.2 KMS的主要组件65 2.5.3 KMS送显结构的创建69 2.6 DRI在未来云化渲染的新挑战与趋势70 2.6.1 离屏渲染的发展70 2.6.2 Android手游的云端运行72 第3章 三维图形渲染管线78 3.1 三维渲染中的三维坐标与模型文件表示78 3.1.1 坐标系统78 3.1.2 顶点表示与obj模型文件的格式79 3.2 DirectX、OpenGL与Vulkan80 3.2.1 DirectX80 3.2.2 OpenGL83 3.2.3 Vulkan85 3.3 Vulkan API的整体架构88 3.3.1 Vulkan管理组件88 3.3.2 Vulkan管线组件90 3.3.3 Vulkan资源组件:VkBuffer与VkImage93 3.3.4 Vulkan同步组件96 3.4 Vulkan与AMD GPU驱动之间的功能映射关系103 3.4.1 Vulkan:渲染硬件的用户空间驱动接口103 3.4.2 显卡与队列103 3.4.3 VkDeviceMemory108 3.4.4 BO与Vulkan资源的使用:管线拓扑113 3.4.5 job与VkCommandBuffer115 3.4.6 Vulkan通用计算与AMD显卡的硬件并行结构116 第4章 用户空间渲染驱动119 4.1 OpenGL与Vulkan的运行时119 4.1.1 OpenGL与EGL119 4.1.2 Vulkan122 4.2 libdrm与KMS用户空间接口124 4.2.1 libdrm124 4.2.2 KMS用户空间接口126 4.3 用户空间渲染驱动:Mesa130 4.3.1 用户空间渲染驱动框架:Gallium3D130 4.3.2 AMD Vulkan实现:RADV133 4.3.3 其他渲染API实现134 4.3.4 着色器134 4.4 软管线:swrast与SwiftShader136 4.4.1 Mesa的软管线:swrast136 4.4.2 Google的软管线:SwiftShader137 4.4.3 SwiftShader与Lavapipe的对比139 4.5 渲染API的自动化生成:FrameGraph140 4.5.1 RenderPass与FrameGraph的产生140 4.5.2 FrameGraph下的Vulkan使用方式140 第5章 DRM与AMD GPU显卡驱动142 5.1 DRM子系统142 5.1.1 KMS、GEM与TTM、SCHED142 5.1.2 DRM ioctl标准接口143 5.1.3 DRM的模块参数146 5.1.4 DRM与闭源驱动的现状147 5.2 AMD显卡驱动AMD GPU147 5.2.1 AMD显卡驱动147 5.2.2 AMD GPU的用户空间接口151 5.3 IP模块与显卡固件153 5.3.1 IP模块153 5.3.2 显卡固件159 5.4 显卡命令执行队列160 5.4.1 PM4数据包与CP160 5.4.2 PM4的格式162 5.5 中断与异常163 5.5.1 AMD显卡的中断结构163 5.5.2 显卡的异常处理:GPU Reset164 5.6 AMD GPU使用的Linux公共子框架165 5.6.1 传感器与硬件监控框架165 5.6.2 PCIe BAR168 第6章 GPU任务调度器172 6.1 job与GPU任务调度器172 6.1.1 job与GPU任务调度器的概念172 6.1.2 Entity与Entity优先级队列172 6.1.3 GPU任务调度器173 6.2 Fence、DMA Reservation与DMA-BUF174 6.2.1 Fence174 6.2.2 DMA Reservation178 6.2.3 DMA-BUF185 6.3 job的下发:GPU调度器线程187 6.3.1 GPU调度器线程的主要回调函数187 6.3.2 GPU调度器线程的主体逻辑189 6.3.3 DRM Sched Fence与job异常处理196 6.3.4 AMD GPU的Entity扩展197 6.4 job的产生198 6.4.1 GPU调度器线程负载均衡198 6.4.2 job的ioctl入口200 6.5 GPU任务调度器的内部结构202 6.5.1 GPU调度器线程的主要数据结构202 6.5.2 AMD GPU的调度上下文204 第7章 GEM、TTM与AMD GPU对象208 7.1 GEM与TTM的整体概念208 7.1.1 GEM与TTM208 7.1.2 BO的类型与关系209 7.1.3 用于CPU渲染的VGEM210 7.2 显存类型:GEM Domain与TTM Place210 7.2.1 GEM Domain210 7.2.2 TTM Place212 7.3 GEM BO、TTM BO与AMD GPU BO216 7.3.1 GEM BO216 7.3.2 TTM BO218 7.3.3 AMD GPU BO219 7.4 TTM BO的创建与内存分配223 7.4.1 TTM BO的创建223 7.4.2 TTM内存分配管理器225 7.4.3 TTM系统内存的非固定映射管理器:struct ttm_tt228 7.5 TTM的显存交换机制:Evict230 7.5.1 Evict的作用230 7.5.2 Evict的流程230 7.6 BO的CPU映射访问234 7.6.1 GEM BO的mmap映射234 7.6.2 TTM BO的CPU内存访问操作236 7.6.3 Resizable BAR237 第8章 应用使用的显卡地址空间:GPUVM239 8.1 GPU的地址空间:GPUVM与VMID239 8.1.1 前IOMMU时代:UMA与GART239 8.1.2 现代AMD GPU的内存访问:GPUVM240 8.1.3 GPUVM的地址空间:VMID241 8.1.4 PASID与VMID的映射244 8.2 VMID页表与BO状态机245 8.2.1 VMID页表245 8.2.2 BO状态机249 第9章 功率控制252 9.1 结温与温度墙252 9.1.1 结温与温度墙的定义252 9.1.2 硬件之间的协作防撞温度墙254 9.1.3 软件与硬件协作防撞温度墙257 9.2 功耗与散热257 9.2.1 功耗的组成:静态功耗与动态功耗257 9.2.2 散热的原理260 9.3 电压与频率266 9.3.1 供电电压266 9.3.2 运行电压268 9.3.3 频率271 9.3.4 制造工艺的频率电压价值272 9.4 显存访问的吞吐与延迟272 9.4.1 显存的结构272 9.4.2 吞吐与延迟273 9.4.3 RAS275 9.5 显卡超频276 9.5.1 超频的原理276 9.5.2 AMD GPU超频278 9.6 动态功耗调整280 9.6.1 DVFS与DPM280 9.6.2 功能开关的功耗控制技术283 9.6.3 其他的显卡功耗控制技术283 9.7 VBIOS与Atom BIOS283 9.7.1 VBIOS283 9.7.2 Atom BIOS284 第10章 显卡的并行计算与大模型计算286 10.1 显卡的并行结构286 10.1.1 显卡的并行计算硬件286 10.1.2 AMD显卡的并行计算框架:ROCm289 10.2 并行计算API与集合通信290 10.2.1 硬件从渲染卡到计算卡290 10.2.2 并行计算的分类292 10.2.3 MPI294 10.3 AI模型的统一架构296 10.3.1 AI模型的通用概念296 10.3.2 模型的显存占用300 10.4 大型模型训练的跨卡跨机计算303 10.4.1 并行训练模型303 10.4.2 分布式训练优化策略306 附录A AMD GPU术语309
|
|