版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
清华大学出版社《向量计算》配套课件·课堂讲义第6章向量计算的硬件加速换个角度学AI,打通任督二脉刘鹏著·清华大学出版社从SIMD到TPU:揭秘向量计算的算力引擎《向量计算》配套课件第6章向量计算的硬件加速第6章向量计算的硬件加速2/38教学目标1理解SIMD思想与MMX→AVX-512的演进脉络2掌握GPU架构与CUDAThread/Block/Grid模型3理解共享内存、内存合并、Bank冲突等优化4认识TPU脉动阵列、NPU与TensorCores5学会硬件选型与算力需求估算重点与难点1重点:CUDA并行模型与内存层次优化2难点:脉动阵列、混合精度与选型权衡《向量计算》配套课件第6章向量计算的硬件加速第6章向量计算的硬件加速3/38本章内容导航6.1SIMD指令集与CPU加速6.2GPU与CUDA编程模型中的向量运算6.3专用硬件:TPU与NPU对矩阵乘法的优化6.4实战:优化向量计算性能6.5硬件选择与性能规划6.6本章小结《向量计算》配套课件·第6章向量计算的硬件加速6.1SIMD指令集与CPU加速一条指令处理多个数据·从MMX到AVX-512、AMX与SVE《向量计算》配套课件6.1SIMD指令集与CPU加速第6章向量计算的硬件加速5/38什么是SIMD:一条指令处理多个数据●SIMD=SingleInstruction,MultipleData(单指令多数据)–收银类比:1个收银员同时给4个人结账●标量方式:循环逐个处理,需要4次加法指令●SIMD方式:一条指令同时处理4个数据,仅1次加法●从标量到向量,是CPU效率成倍提升的起点《向量计算》配套课件6.1SIMD指令集与CPU加速第6章向量计算的硬件加速6/38SIMD与标量处理对比●左侧标量:每个数据需单独指令处理●右侧SIMD:一条指令并行处理多个数据图6-1SIMD与标量处理对比《向量计算》配套课件6.1SIMD指令集与CPU加速第6章向量计算的硬件加速7/38SIMD演进:从MMX到AVX-512指令集年份寄存器宽度并行能力MMX199764位8×int8/4×int16/2×int32SSE1999128位4×float32/2×float64AVX2011256位8×float32/4×float64AVX22013256位新增256位整数指令AVX-5122016512位16×float32/8×float64《向量计算》配套课件6.1SIMD指令集与CPU加速第6章向量计算的硬件加速8/38用AVX-512加速向量加法#include<immintrin.h>//AVX头文件#include<stdio.h>voidvector_add_avx(float*a,float*b,float*c,intn){inti=0;//用AVX-512一次处理16个float(512位/32位=16)for(;i<=n-16;i+=16){//加载16个float到512位寄存器__m512a_vec=_mm512_load_ps(a+i);__m512b_vec=_mm512_load_ps(b+i);//一次加法处理16个元素__m512c_vec=_mm512_add_ps(a_vec,b_vec);//存储结果_mm512_store_ps(c+i,c_vec);}//处理剩余不足16个的元素for(;i<n;i++){c[i]=a[i]+b[i];}}注:一条加法指令相当于16次普通加法,理论提速可达16倍《向量计算》配套课件6.1SIMD指令集与CPU加速第6章向量计算的硬件加速9/38SIMD的性能优势与限制●优势1:指令级并行,显著减少指令数量●优势2:能效比更高,无需增核即提升吞吐●限制1:数据须内存对齐(16/32/64字节)–限制2:分支敏感,异构逻辑优势大打折扣–限制3:受内存带宽制约,手写调试复杂《向量计算》配套课件6.1SIMD指令集与CPU加速第6章向量计算的硬件加速10/382025年的SIMD:AMX与SVE●IntelAMX:SapphireRapids的矩阵扩展指令集–从向量计算升级到矩阵计算,直接支持二维乘累加–核心是TileMatrixRegisters(TMM),速度数倍于AVX-512●ARMSVE:可扩展矢量,寄存器宽度不固定–编译一次可跑128/256/512位,代码可移植《向量计算》配套课件·第6章向量计算的硬件加速6.2GPU与CUDA编程模型中的向量运算海量核心的并行世界·Thread/Block/Grid与内存优化《向量计算》配套课件6.2GPU与CUDA编程模型中的向量运算第6章向量计算的硬件加速12/38从CPU到GPU:并行计算的革命●SIMD是1人给4人结账,GPU是100人同时给100人结账●CPU:少量复杂核心,擅串行、分支预测、缓存●GPU:成千上万简单核心,擅大规模并行–类比:法拉利(快/载客少)vs公共汽车(慢/载客多)●向量计算场景下GPU的海量简单核心更有优势《向量计算》配套课件6.2GPU与CUDA编程模型中的向量运算第6章向量计算的硬件加速13/38GPU架构:SM与内存层次●以标杆硬件NVIDIAA100为例,集成数千计算核心●流多处理器SM:基本计算单元,A100含108个SM–SM内含CUDACore、TensorCore、共享内存、寄存器、L1●全局内存(显存):容量大40/80GB,带宽~2TB/s,延迟高●内存金字塔:寄存器→共享内存/L1→L2→全局内存–优化核心:高频数据驻留、减少全局访问,破内存墙《向量计算》配套课件6.2GPU与CUDA编程模型中的向量运算第6章向量计算的硬件加速14/38现代计算与存储系统中的GPU数据流●左:OpenCV/VGG经PCIe把原始数据送入GPU●中:全局内存→共享内存→寄存器密集计算●右:Embeddings写入Milvus,热点查询入Redis图6-2现代计算与存储系统中的GPU数据流《向量计算》配套课件6.2GPU与CUDA编程模型中的向量运算第6章向量计算的硬件加速15/38CUDA编程模型:Thread、Block、Grid●CUDA:NVIDIA的GPU编程平台(统一计算设备架构)●Thread:最小执行单位,SIMT单指令多线程●Block:一组Thread,同SM执行,可经共享内存通信●Grid:一组Block,构成整个任务,可一/二/三维●层级:Grid(整个任务)→Block(每SM执行)→Thread《向量计算》配套课件6.2GPU与CUDA编程模型中的向量运算第6章向量计算的硬件加速16/38CUDA向量加法核函数#include<cuda_runtime.h>#include<stdio.h>//GPU核函数:每个线程计算一个元素__global__voidvector_add_gpu(float*a,float*b,float*c,intn){//计算当前线程的全局索引intidx=blockIdx.x*blockDim.x+threadIdx.x;if(idx<n){c[idx]=a[idx]+b[idx];}}注:启动配置<<<blocks_per_grid,threads_per_block>>>,256线程/块《向量计算》配套课件6.2GPU与CUDA编程模型中的向量运算第6章向量计算的硬件加速17/38性能优化:共享内存、内存合并、Bank冲突●共享内存:SM内高速内存,比全局快几十倍,容量几十KB–多线程重复访问同一块数据时,先缓存到共享内存●内存合并:连续线程访问连续地址,可合并为一次访问–跨步(stride)访问会破坏合并,浪费带宽●Bank冲突:共享内存分32个Bank,同Bank不同地址降速–线程i访问shared[i]无冲突;shared[i×32]严重冲突《向量计算》配套课件6.2GPU与CUDA编程模型中的向量运算第6章向量计算的硬件加速18/38共享内存分块矩阵乘法__global__voidmatrix_mul_shared(float*A,float*B,float*C,intn){//每个Block维护共享内存__shared__floatshared_A[TILE_SIZE][TILE_SIZE];__shared__floatshared_B[TILE_SIZE][TILE_SIZE];inttx=threadIdx.x;intty=threadIdx.y;introw=blockIdx.y*TILE_SIZE+ty;intcol=blockIdx.x*TILE_SIZE+tx;floatsum=0.0f;//分块计算for(intt=0;t<(n+TILE_SIZE-1)/TILE_SIZE;t++){//加载到共享内存shared_A[ty][tx]=A[row*n+t*TILE_SIZE+tx];shared_B[ty][tx]=B[(t*TILE_SIZE+ty)*n+col];//等待所有线程加载完成__syncthreads();注:__shared__缓存子块+__syncthreads()同步,减少全局内存访问《向量计算》配套课件6.2GPU与CUDA编程模型中的向量运算第6章向量计算的硬件加速19/382025年的GPU:H100与HBM3e●H100(Hopper)是2025年旗舰GPU,全面超越A100●FP16矩阵乘6×、FP84×、TF323×性能提升●HBM3e显存:80GB,带宽3.35TB/s(A100为1.55)●TransformerEngine:自动选FP8/FP16平衡精度与速度●NVLink4.0每链路900GB/s,NVSwitch支持8卡互联–8×H100共享640GB显存(80×8),训练更大模型《向量计算》配套课件·第6章向量计算的硬件加速6.3专用硬件:TPU与NPU对矩阵乘法的优化从瑞士军刀到工业电锯·脉动阵列、TensorCores与量化《向量计算》配套课件6.3专用硬件:TPU与NPU对矩阵乘法的优化第6章向量计算的硬件加速21/38TPU:Google的张量处理单元●TPU:Google为TensorFlow设计的专用AI芯片(2016)●核心是脉动阵列SystolicArray:二维MAC乘累加单元阵列–数据从一端流入,逐单元计算,结果从另一端流出●优势:数据重用、流水线并行、高能效比●TPUv4:128×128阵列,275TFLOPS(BF16),4096卡互联–软件栈:XLA编译器把TensorFlow/JAX编译为TPU指令《向量计算》配套课件6.3专用硬件:TPU与NPU对矩阵乘法的优化第6章向量计算的硬件加速22/38主流NPU规格对比NPU算力功耗应用场景华为昇腾31022TOPS(INT8)8W手机、安防摄像头华为昇腾910320TFLOPS(FP16)310W云端训练、智慧城市苹果A17ProNeuralEngine35TOPS(INT8)—FaceID、Siri、图像处理高通骁龙8Gen3Hexagon45TOPS(INT8)—相机AI、语音识别《向量计算》配套课件6.3专用硬件:TPU与NPU对矩阵乘法的优化第6章向量计算的硬件加速23/38TensorCores:GPU中的专用矩阵单元C+=A×B(A、B、C均为4×4小矩阵)传统CUDACore:一次=c+=a×b(1个乘加)TensorCore:一次完成4×4×4=64个乘加●一个TensorCore≈传统CUDACore的64倍吞吐●H100:108SM×4=432个TensorCore–FP8下每核2048次/周期,合计884,736FLOPS/clock《向量计算》配套课件6.3专用硬件:TPU与NPU对矩阵乘法的优化第6章向量计算的硬件加速24/38精度优化:INT8量化与混合精度FP32→INT8:性能≈8×↑,内存≈4×↓量化:按分布将FP32映射到INT8,用少量精度换巨大性能混合精度:主网络FP32+梯度FP16,权重更新时混合●PyTorchautocast+GradScaler实现自动混合精度《向量计算》配套课件·第6章向量计算的硬件加速6.4实战:优化向量计算性能CPU向量加法·GPU矩阵乘法·相似度计算·性能分析工具《向量计算》配套课件6.4实战:优化向量计算性能第6章向量计算的硬件加速26/38案例1:优化CPU向量加法●任务:1000万元素向量加法的三级优化对比●纯Python循环:约1.2秒,解释器开销大●NumPy向量化:约0.005秒,快约240倍(底层SIMD)–NumbaJIT:约0.003秒,比纯NumPy再快40%●技巧:避免循环、用float32、预分配、连续内存布局《向量计算》配套课件6.4实战:优化向量计算性能第6章向量计算的硬件加速27/38案例2:用FlashAttention优化注意力计算#使用FlashAttention(需要安装flash-attn)fromflash_attnimportflash_attn_funcq=torch.randn(1,4096,128,dtype=torch.float16).cuda()k=torch.randn(1,4096,128,dtype=torch.float16).cuda()v=torch.randn(1,4096,128,dtype=torch.float16).cuda()start=time.time()output=flash_attn_func(q,k,v)torch.cuda.synchronize()end=time.time()print(f"FlashAttention时间:{end-start:.4f}秒")#结果(H100):约0.008秒(比传统Attention快2-4倍)注:IO感知优化,H100上比传统Attention快2-4倍《向量计算》配套课件6.4实战:优化向量计算性能第6章向量计算的硬件加速28/38案例3:优化相似度计算●场景:768维查询vs100万向量的余弦相似度●NumPyCPU约0.5秒;Numba并行约0.15秒(快3.3×)●GPU(RTX3090)约0.02秒,快约25倍●批量查询:100个合并计算,单个均摊约0.0008秒●要点:矩阵乘代替循环、GPU并行、批量、预归一化《向量计算》配套课件6.4实战:优化向量计算性能第6章向量计算的硬件加速29/38性能分析工具●NsightSystems:GPU利用率、内存带宽、Kernel执行时间●NsightCompute:Kernel占用率、内存合并、Bank冲突●cProfile:Python函数级耗时与调用次数●line_profiler:逐行分析每一行的执行时间●先测后优:优化前必须定位真正瓶颈《向量计算》配套课件·第6章向量计算的硬件加速6.5硬件选择与性能规划选型指南·算力估算·成本优化·未来趋势《向量计算》配套课件6.5硬件选择与性能规划第6章向量计算的硬件加速31/38硬件选型指南(按场景)场景规模推荐硬件特点小规模推理<10万向量CPU+SIMD成本低、部署简单中等推理/训练10万~1000万单卡RTX4090/A10性价比高、易管理大规模训练>1000万向量多卡A100/H100集群高性能、需专业运维移动端/边缘手机、IoTNPU低功耗、低延迟Google生态云上弹性TPU(GoogleCloud)集成TF、按需付费《向量计算》配套课件6.5硬件选择与性能规划第6章向量计算的硬件加速32/38算力需求估算(7B模型/检索库)场景关键显存占用合计硬件需求训练7B权重14G+梯度14G+优化器28G+激活20G约76GB2×A100(40GB)推理7B权重14G(FP16)/7G(INT8)+KV缓存10G约24GB1×A100或RTX4090检索1000万×768向量存储30GB+索引10GB约40GB1×A100或2×RTX3090《向量计算》配套课件6.5硬件选择与性能规划第6章向量计算的硬件加速33/38成本优化建议●预训练用云(一次性),推理用自建(长期运行更划算)●混合精度训练:FP16/FP8,显存减半、算力提升●模型蒸馏:大模型蒸为小模型,推理成本大降–多租户共享GPU资源,提高利用率●Spot竞价实例:价格可低至
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2026年)乡镇医院度工作总结暨下一步工作计划
- 新员工入入厂三级安全教育试卷及答案
- 盲文印刷员岗前评优竞赛考核试卷含答案
- 压缩天然气场站运行工安全检查水平考核试卷含答案
- 动物检疫检验员安全技能测试水平考核试卷含答案
- 乳品加工工班组考核测试考核试卷含答案
- 黄酒压滤工诚信模拟考核试卷含答案
- 电线电缆包制工岗前协同配合考核试卷含答案
- 空气潜水员岗前能力评估考核试卷含答案
- 印刷设备机械装调工岗前技术理论考核试卷含答案
- 2026年传感器原理及应用期末考试试题含答案
- 《二手车鉴定评估实务》课件-项目3:二手车价值评估与计算
- T/EAMA 17-2023绿色设计产品评价技术规范 挤包绝缘电力电缆
- 比选文件范本
- CSCO小细胞肺癌诊疗指南(2026版)
- 研究生教改项目申请书
- 电焊工职业技能初级工理论试题及答案
- 中央中国船级社2025年人才招聘111人笔试历年参考题库附带答案详解
- 炼铁设备检修工专业技能题目及答案
- DB15∕T 4024-2025 多光谱无人机遥感监测大豆苗期长势及等级划分
- 外立面改造施工工艺流程方案
评论
0/150
提交评论