PyTorch源码:PyTorch是怎么管理显存的(2)
源码分析:图2-15\n \nTL;DR:DeepSeek:\nPyTorch训练循环频繁申请/释放显存,直接调用cudaMalloc会引入开销和碎片化问题😫。为此引入ExpandableSegment优化显存管理(需设置PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True)🔧。\n核心三板斧🔨:\n1️⃣ cuMemAddressReserve:预留连续虚拟地址空间(1.125倍显存容量)\n2️⃣ cuMemCreate:按需分配物理显存\n3️⃣ cuMemMap:建立虚实地址映射\n运作逻辑🔄:\n分配时计算所需区间,动态填充handles数组管理物理显存\n映射时设置设备访问权限,支持多设备共享\n释放时同步stream→解除映射→释放物理显存\n优势💡:\n✨ 减少CUDA Runtime调用\n✨ 避免显存碎片(类似OS分页管理)\n✨ 按需扩展+区间化管理(默认20MB或2MB/区)\n本质是通过用户态虚拟地址管理+物理显存动态映射,实现高效显存池🌟!\n#AI #PyTorch #AIInfra #训练框架 #大模型 #CUDA