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

相关推荐
IT、木易3 分钟前
大白话react第十五章React 应用性能优化深度实践
前端·react.js·前端框架
十八朵郁金香3 分钟前
分享react后台管理系统常见的组件/知识点
前端·react.js·前端框架
指尖时光.5 分钟前
【前端进阶】15 提升开发效率 数据抽象与配置化
前端
呼啦啦呼_9 分钟前
Echarts map 点击地图某个区域上色
前端
凌览20 分钟前
2.3k Star!免费又好用的图片压缩神器,1 秒瘦身不模糊!
前端·后端·面试
苏十八38 分钟前
JavaEE Servlet02
java·服务器·网络·java-ee·json
MiyueFE42 分钟前
bpmn-js 源码篇7:Featrues 体验优化与功能扩展(二)
前端
zy_destiny1 小时前
【YOLOv12改进trick】三重注意力TripletAttention引入YOLOv12中,实现遮挡目标检测涨点,含创新点Python代码,方便发论文
网络·人工智能·python·深度学习·yolo·计算机视觉·三重注意力
好_快1 小时前
Lodash源码阅读-isPrototype
前端·javascript·源码阅读