【问题标题】:ONNX Runtime memory arena, reuse, and patternONNX 运行时内存领域、重用和模式
【发布时间】:2023-01-19 11:42:04
【问题描述】:
如Python API Doc 所述,onnxruntime 会话选项中有一些参数与内存配置相关,例如:
- enable_cpu_mem_arena
- enable_mem_usage
- enable_mem_pattern
对它们有一些描述,但我无法准确理解它们的用法和它们背后的技术概念。
任何人都可以让我清楚地了解这些参数吗?
【问题讨论】:
标签:
memory
memory-management
onnx
onnxruntime
tf2onnx
【解决方案1】:
enable_mem_pattern
启用内存模式优化。
这个想法是,如果输入形状相同,我们可以跟踪内部内存分配并为将来的请求生成内存模式。所以下次我们可以为所有内部内存分配做一个大块的分配。
笔记
内存模式优化仅在启用顺序执行模式时可用(请参阅 OrtApi::SetSessionExecutionMode)
enable_cpu_mem_arena
在 CPU 上启用内存区域。
Arena 可能会预先分配内存以备将来使用。
基于 api 文档的信息:
https://onnxruntime.ai/docs/api/c/struct_ort_api.html