- 开发工具
- IDE
- 数据可视化
- Ascend
【免费下载链接】pypto-vscode
PyPTO Toolkit是 PyPTO 框架的全流程辅助工具,其中的GM 内存可视化(GM Memory Visualization)功能可以把 GM 内存的分配结果画成一张图:每个 Tensor 占用哪段地址、存活多长时间、与谁发生地址冲突,一眼就能定位。对于做算子开发、内存调优的开发者来说,这是排查显存浪费与 Tensor 重叠问题的必备视图。
GM 内存可视化能解决什么问题 🤔
编译后的 PyPTO 程序会在 GM(Global Memory)上申请大量内存块,用来存放各个 Tensor 的数据。手动分析这些内存块非常困难:
- Tensor 分配在哪里?大小、地址、存活区间都不直观
- 是否发生了地址冲突(两个 Tensor 在同一区间重叠)?
- 距离两个 Tensor 有多近,是否存在潜在的访存干扰?
GM 内存可视化视图直接基于内存分布文件(memory_usage_visualization.json)渲染出时间-地址二维图表,把上述问题图形化。官方功能说明见 gm_memory.md。
准备数据:生成内存分布文件
用 Visual Studio Code 运行 PyPTO 程序(或在侧边栏打开 PyPTO Toolkit),运行结果会生成结果文件夹,其中包含内存分布文件
memory_usage_visualization.json。数据准备流程详见 data_preparation.md。项目内也自带一份示例数据,可用于快速体验:test/fixtures/memory_usage_visualization.json。
该文件是 GM 内存可视化的唯一输入。打开命令在 registerCommand.ts 中注册,只有文件名为
memory_usage_visualization.json时才会渲染视图。
一键打开 GM 内存可视化 🚀
在 Visual Studio Code 资源管理器中右键单击内存分布文件,依次选择:
PyPTO Toolkit:高级操作→PyPTO Toolkit:GM内存可视化
视图打开后,横轴是时间(Tensor 的存活区间),纵轴是内存地址,每个色块就是一个 Tensor。后端加载逻辑见 gm-memory-visual-server.ts,前端图表渲染见 memoryUsage.vue。
读懂 Tensor 分配与冲突图表 📊
打开视图后,常用操作如下(详细步骤见 gm_memory.md):
| 操作 | 效果 |
|---|---|
| 单击 Tensor | 查看该 Tensor 的内存分配信息,支持表格 / 图表两种展示 |
| 双击 Region ID | 进入该 Region 的内存分配详情 |
按住Alt选中两个 Tensor | 测量两者之间的内存距离 |
| 右键点击 Tensor | 查看距离该 Tensor 最近的 Tensor |
Ctrl+ 鼠标滚轮 | 缩放时间轴,快速定位冲突位置 |
Alt+ 鼠标滚轮 | 缩放地址纵轴,放大查看密集区间 |
左侧的缩略导航条可以帮助你在超长地址区间中快速跳转,搜索框则支持按 Tensor 名称过滤。
💡调优技巧:先用Ctrl+ 滚轮放大时间轴找到冲突聚集的时间点,再用右键"最近 Tensor"确认重叠对象,最后结合计算图查看这两个 Tensor 对应哪两个节点,就能判断是否需要调整 Tiling 或中间变量布局。
冲突是如何被检测出来的 🔍
视图会自动扫描所有内存块并输出重叠区间:冲突检测逻辑位于 memoryConflictDetection.ts,核心函数detectConflicts按 Region 分组、按起始地址排序后逐块检查重叠,得到overlaps冲突列表。带冲突的 Tensor 会在图上被高亮,让你不必逐个比对地址。
想进一步按执行时间点回放内存分配事件,还可以使用 memory_visualization.md 介绍的"模拟执行内存分配"视图,与 GM 内存可视化互为补充。
相关文件速查 📁
- 功能文档:docs/zh/computation_graph/gm_memory.md
- 打开命令注册:src/command/registerCommand.ts
- 数据加载服务:src/view/servers/gm-memory-visual-server.ts
- 前端视图组件:media/vue-project/src/components/memoryUsage/
- 冲突检测算法:media/vue-project/src/components/memoryUsage/memoryConflictDetection.ts
掌握 GM 内存可视化后,你就能从"猜内存去哪了"变成"看图说话",让每一次内存调优都有据可依。
- 开发工具
- IDE
- 数据可视化
- Ascend
【免费下载链接】pypto-vscode
相关推荐
fmt内存缓冲区优化:避免不必要的内存分配
fmt内存缓冲区优化:避免不必要的内存分配 在现代C++开发中,内存管理是性能优化的关键环节。{fmt}库作为C++20标准格式化库的实现,提供了高效的内存缓冲
标准库Candle内存管理:Storage与Tensor内存布局优化
Candle内存管理:Storage与Tensor内存布局优化 痛点:为什么需要关注内存管理? 在深度学习框架中,内存管理是性能优化的核心环节。你是否遇到过以下
人工智能大模型机器学习深度学习本地部署模型推理服务Dgraph内存分配优化:Go内存管理与性能调优
Dgraph内存分配优化:Go内存管理与性能调优 在高并发场景下,数据库的内存管理直接影响系统吞吐量和响应延迟。Dgraph作为现代应用的高性能数据库,其Go语
数据库图数据库分布式数据库后端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考