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的内存 (原文我感觉是错的,如果大家有更好的解释,欢迎回复)

相关推荐
Fireworkitte21 分钟前
gRPC和http长轮询
网络·网络协议·http
LuLaLuLaLeLLLLLL1 小时前
RPC 框架学习笔记
网络·网络协议·rpc
冰橙子id2 小时前
linux-远程访问管理(sshd,scp,sftp)
linux·网络·ssh
brzhang4 小时前
我操,终于有人把 AI 大佬们 PUA 程序员的套路给讲明白了!
前端·后端·架构
止观止4 小时前
React虚拟DOM的进化之路
前端·react.js·前端框架·reactjs·react
goms4 小时前
前端项目集成lint-staged
前端·vue·lint-staged
谢尔登4 小时前
【React Natve】NetworkError 和 TouchableOpacity 组件
前端·react.js·前端框架
saynaihe5 小时前
ubuntu 22.04 anaconda comfyui安装
linux·运维·服务器·ubuntu
小蜜蜂爱编程5 小时前
ubuntu透网方案
运维·服务器·ubuntu
Lin Hsüeh-ch'in5 小时前
如何彻底禁用 Chrome 自动更新
前端·chrome