PyTorch源码:PyTorch是怎么管理显存的(1)
源码解析:图2-17\n \nTL;DR:DeepSeek:\nPyTorch的NativeCachingAllocator是显存管理的核心组件,解决直接调用cudaMalloc的性能问题(如碎片化、同步开销)。🚀\n核心机制:\n全局单例:每个GPU对应一个DeviceCachingAllocator,通过NativeCachingAllocator统一管理。\n两级映射:\n用户看到的void*指针 ↔ 内部Block*结构(记录显存块元数据)\n用分片哈希表(67个分区+独立锁)加速地址转换,避免冲突。🔍\n智能分配:\nraw_alloc()优先走缓存分配(调用DeviceCachingAllocator->malloc())\n支持绕过缓存(如forceUncachedAllocator触发直接cudaMalloc)\n释放优化:\nfree()时通过地址反查Block*,触发设备级回收逻辑。\n集成到Tensor:\ntorch.empty() → StorageImpl → 调用allocator->allocate()获取显存。\n✨ 本质:通过地址映射+设备级缓存减少显存操作开销,提升深度学习训练效率!