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

相关推荐
小小小小宇6 小时前
虚拟列表兼容老DOM操作
前端
悦悦子a啊6 小时前
Python之--基本知识
开发语言·前端·python
安全系统学习7 小时前
系统安全之大模型案例分析
前端·安全·web安全·网络安全·xss
涛哥码咖7 小时前
chrome安装AXURE插件后无效
前端·chrome·axure
OEC小胖胖7 小时前
告别 undefined is not a function:TypeScript 前端开发优势与实践指南
前端·javascript·typescript·web
(:满天星:)8 小时前
第31篇:块设备与字符设备管理深度解析(基于OpenEuler 24.03)
linux·运维·服务器·网络·centos
小陶来咯8 小时前
【仿muduo库实现并发服务器】Acceptor模块
运维·服务器
行云&流水8 小时前
Vue3 Lifecycle Hooks
前端·javascript·vue.js
爱莉希雅&&&8 小时前
shell编程之awk命令详解
linux·服务器·git
笑稀了的野生俊8 小时前
在服务器中下载 HuggingFace 模型:终极指南
linux·服务器·python·bash·gpu算力