NVIDIA Jetson SOC 内存分配策略

CPU 是Host, GPU 是Device, 系统内存分配策略如下:

这段话的翻译如下:

集成的GPU会和CPU以及其他Tegra引擎共享DRAM(动态随机存储器),并且CPU可以通过将DRAM的内容移动到交换区域(SWAP area)或者相反来控制DRAM的内容和释放DRAM内存。而目前的cudaMemGetInfo API并不考虑交换内存区域,因此该API返回的可用内存大小可能会比实际可分配的内存小,因为CPU可以通过将页面移动到交换区域来释放一些DRAM区域,而这部分被释放的内存并未被cudaMemGetInfo API计算在内。

所以,为了估算可分配的设备内存量,CUDA应用程序开发者应该考虑以下几点:

  • 当使用cudaMemGetInfo API获取可用内存大小时,需要意识到其可能并未考虑交换内存区域的情况,因此实际可分配的内存可能会比API返回的值大。
  • CPU可以通过将页面移动到交换区域来释放一些DRAM区域,从而增加可分配的设备内存。
  • 应用程序开发者需要综合考虑这些因素,以便更准确地估算出系统中可供设备使用的内存总量。
  1. "Host allocated memory = Total used physical memory -- Device allocated memory" 这里的"Host allocated memory"指的是主机(CPU)已分配的内存,它等于系统中总物理内存减去已经分配给设备的内存。

  2. "If (Host allocated memory < Free Swap Space) then Device allocatable memory = Total Physical Memory -- already allocated device memory" 这条语句表示,如果CPU已分配的内存小于可用交换空间,则设备可分配内存等于总物理内存减去已经分配给设备的内存。

  3. "If (Host allocated memory > Free Swap Space) then Device allocatable memory = Total Physical Memory -- (Host allocated memory - Free swap space) 这个公式感觉是错的" 这一条是在描述当主机已分配的内存大于可用的交换空间时,设备可分配内存等于总物理内存减去(已分配给主机的内存减去可用的交换空间),即考虑了交换空间的情况。

详细解释下这三条规则

  1. Host allocated memory (CPU已分配内存) = 总已用的物理内存(DRAM + SWAP 缓冲区) - 分配给GPU 的内存,注意:分配给GPU 的内存是无法移动到缓冲区(swap area的)

  2. 如果(CPU已分配的内存< 可用的交换区内存),GPU可分配的内存= 总的物理内存- 已经分配给GPU的内存,原因是因为CPU 已分配的内存可以全部放到交换区中,所以整个物理内存都可以用来给GPU使用

  3. 如果(CPU 已分配的内存> 可用的交换区内存), GPU可分配的内存= 总的物理内存 - (主机已分配的内存- 可用的交换区内存), 原因是因为CPU已分配的内存无法完全放到交换区,所以会留一部分在DRAM中,这时候GPU可分配的内存就等于总物理内存- 未放入缓冲区的CPU 内存部分 - 已分配给GPU的内存 (原文我感觉是错的,如果大家有更好的解释,欢迎回复)

相关推荐
henry1010104 分钟前
Deepseek辅助生成的HTML5网页版抄经典《弟子规》
前端·javascript·css·html·html5
少云清9 分钟前
【UI自动化测试】2_web自动化测试 _Selenium环境搭建(重点)
前端·selenium·测试工具·web自动化测试
大模型玩家七七35 分钟前
关系记忆不是越完整越好:chunk size 的隐性代价
java·前端·数据库·人工智能·深度学习·算法·oracle
全栈前端老曹37 分钟前
【Redis】Pipeline 与性能优化——批量命令处理、提升吞吐量、减少网络延迟
前端·网络·数据库·redis·缓存·性能优化·全栈
扶苏10021 小时前
深入 Vue 3 computed:原理、实战与避坑指南
前端·javascript·vue.js
盛夏绽放1 小时前
流式响应 线上请求出现“待处理”问题
前端·后端·nginx·proxy
人道领域1 小时前
Spring拦截器原理与实战详解
java·运维·服务器
茶杯梦轩1 小时前
从零起步学习并发编程 || 第一章:初步认识进程与线程
java·服务器·后端
weixin199701080162 小时前
虾皮商品详情页前端性能优化实战
前端·性能优化
ArcX2 小时前
手把手从 0 诠释大模型 API 的本质: Tools + MCP + Skills
前端·后端·ai编程