VisionPro Deep Learning:Optimized GPU Memory GPU显存优化配置详解
SEO关键词:VisionPro Deep Learning、Optimized GPU Memory、GPU显存优化、GPU显存预分配、Standard工具、Legacy工具、WDDM、TCC、Compute Devices
文章摘要:
VisionPro Deep Learning 提供了Optimized GPU Memory选项,用于优化 Standard 类型工具的 GPU 显存使用方式。开启后可以减少显存预分配,更适合 Standard 工具;关闭后则可以启用 GPU 显存预分配,从而提升 Legacy 类型工具的训练和处理性能。本文介绍 Optimized GPU Memory 的工作方式、开启与关闭后的性能差异、界面配置方法,以及 NET API 和 C API 的调用方式。
大家好 这里是「代码简单说」
关注同名公众号,分享更多开发、AI、GPU、软件工具方面的实用内容。
一、什么是 Optimized GPU Memory
Optimized GPU Memory是 VisionPro Deep Learning 中用于优化 GPU 显存使用的一项配置。
该选项默认开启,主要针对Standard 类型工具进行显存优化。
当开启 Optimized GPU Memory 后,系统会采用更加适合 Standard 工具的显存管理方式;而关闭该选项后,系统会为Legacy 类型工具预先分配 GPU 显存。
简单理解:
| 配置状态 | 主要优化对象 | GPU显存策略 |
|---|---|---|
| 开启 Optimized GPU Memory | Standard 工具 | 优化 Standard 工具的显存使用 |
| 关闭 Optimized GPU Memory | Legacy 工具 | 允许进行 GPU 显存预分配 |
因此,这个选项并不是简单的“开启更快、关闭更慢”,而是与当前使用的工具类型密切相关。
二、开启和关闭分别有什么影响
1. 开启 Optimized GPU Memory
开启状态主要针对 Standard 类型工具。
对于现代的 Standard 工具来说,这种方式可以避免不必要的 GPU 显存预占用,更适合同时运行多个 Standard 工具或处理不同任务。
因此,在主要使用 Standard 工具的项目中,一般建议保持默认开启状态。
2. 关闭 Optimized GPU Memory
关闭之后,GPU 显存预分配功能将变为可用。
这种方式主要针对 Legacy 类型工具,可以通过提前预留 GPU 显存减少运行过程中频繁申请显存带来的开销。
其优势主要体现在:
Legacy 类型工具的训练速度和处理速度可能得到提升。
这一点与 GPU 使用的驱动模式有关,无论当前使用的是:
- Windows Display Driver Model(WDDM)
- Tesla Compute Cluster(TCC)
都可能获得相应的性能改善。
三、GPU显存预分配为什么会影响性能
GPU 在执行深度学习训练和图像处理任务时,需要不断申请和释放显存。
对于 Legacy 类型工具而言,如果运行过程中频繁进行显存分配,可能产生一定的管理开销。
关闭 Optimized GPU Memory 后,可以启用显存预分配机制,也就是提前为 Legacy 工具准备一部分 GPU 显存。
这种方式可以减少运行过程中的显存管理操作,从而提升部分场景下的性能。
尤其值得注意的是:
处理小尺寸图像的应用,通常更容易获得明显的性能提升。
因为小图像本身计算量较低,此时显存分配和管理产生的额外开销占比反而更加明显。
四、Standard 工具为什么反而可能变慢
这里是配置 Optimized GPU Memory 时最容易忽略的一点。
关闭 Optimized GPU Memory 虽然可以改善 Legacy 工具性能,但对于Standard 类型工具,可能导致训练速度下降。
也就是说:
Legacy 工具:关闭后可能更快。
Standard 工具:关闭后可能更慢。
因此不能简单认为“显存预分配就是最佳方案”。
实际选择需要根据项目中使用的工具类型决定。
五、同时训练 Standard 和 Legacy 工具时要特别注意
如果一个 Stream 中同时包含Standard 工具和 Legacy 工具,不建议为了优化 Legacy 工具而关闭 Optimized GPU Memory。
官方特别强调:
在同一个 Stream 中同时训练多个 Standard 和 Legacy 工具时,不要禁用 Optimized GPU Memory。
否则可能导致处理速度明显下降,而且这种性能下降与 GPU 数量并不直接相关。
也就是说,即使服务器安装了多块 GPU,关闭该选项仍然可能造成明显的处理性能损失。
因此,如果你的应用同时存在 Standard 和 Legacy 工具,通常应优先保持:
Optimized GPU Memory = Enabled
六、在哪里配置 Optimized GPU Memory
VisionPro Deep Learning 提供了多种配置方式。
1. 启动菜单配置
在启动菜单中进入:
Options → Optimized GPU Memory
然后通过复选框启用或禁用。
官方启动说明可以参考:
https://docs.cognex.com/deep-learning_420/web/EN/deep-learning/Content/Topics/getting-started/launch-vpdl.htm
2. Toolbar 工具栏配置
也可以直接在工具栏中使用:
Optimized for Green/Red Standard tool
相关切换项进行配置。
这种方式适合在开发和调试过程中快速切换显存优化模式。
3. Compute Devices 窗口配置
还可以打开:
Help → Compute Devices
然后使用:
Optimized GPU Memory Setting
进行开关控制。
界面示例如下。
| 配置方式 | 启用:Optimization for Standard Tools | 禁用:Optimization for Legacy Tools |
|---|---|---|
| Toolbar | ||
| Compute Devices |
七、关闭后如何设置 GPU 显存预分配
禁用 Optimized GPU Memory 后,GPU 显存预分配功能将可以使用。
这时需要根据具体应用设置Reserved Memory。
设置显存预留量时,不建议盲目分配全部 GPU 显存,而应该结合以下因素:
- GPU 总显存容量
- 图像尺寸
- 工具数量
- Standard/Legacy 工具类型
- 同时运行的训练任务数量
- 实际处理线程数量
例如一块 12 GB 显存的 GPU,并不意味着可以直接将全部 12 GB 都配置为预留显存。
预留过多可能限制其他任务运行,预留过少又可能无法获得预期的性能收益。
因此,实际项目中建议通过基准测试确定合适的 Reserved Memory。
八、API 方式配置 Optimized GPU Memory
除了图形界面,VisionPro Deep Learning 也支持通过 API 配置。
NET API
示例:
control.OptimizedGPUMemory(2.5*1024*1024*1024ul);这里将显存大小设置为约:
2.5 GB
换算时使用的是字节(Bytes)作为单位。
C API
C API 示例:
vidi_optimized_gpu_memory(2.5*1024*1024*1024);同样可以通过传入字节数设置对应的 GPU 显存配置。
因此,在自动化部署、软件集成或者二次开发场景中,可以不依赖 GUI,而是直接通过程序完成 GPU 显存策略配置。
九、实际项目应该怎么选
可以按照工具类型简单判断:
| 使用场景 | 建议 |
|---|---|
| 主要使用 Standard 工具 | 开启 Optimized GPU Memory |
| 主要使用 Legacy 工具 | 可以关闭并测试显存预分配效果 |
| Standard + Legacy 混合训练 | 建议保持开启 |
| 多 GPU + 多 Standard 工具 | 建议保持开启 |
| 小图像、Legacy 工具高频处理 | 可以重点测试关闭后的性能 |
| 对吞吐量要求较高 | 建议实际压测后确定 |
尤其是在多 GPU 环境下,不应该仅根据 GPU 数量判断配置方式。
真正需要关注的是:
工具类型 + 显存使用方式 + 并发任务数量 + 图像尺寸 + 实际吞吐量。
十、总结
VisionPro Deep Learning 的Optimized GPU Memory本质上是在Standard 工具优化和Legacy 工具显存预分配之间进行取舍。
默认情况下建议保持开启,因为它更适合 Standard 类型工具。
只有在明确使用 Legacy 工具,并且经过实际测试确认显存预分配能够带来性能收益时,才值得考虑关闭。
尤其是一个 Stream 中同时存在多个 Standard 和 Legacy 工具时,不