前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unified Memory

Unified Memory

作者头像
GPUS Lady
发布2018-04-02 15:25:01
2K0
发布2018-04-02 15:25:01
举报
文章被收录于专栏:GPUS开发者GPUS开发者

首先讲一下Unified Memory(统一内存寻址)。在编写CUDA程序的时候,我们需要在CPU端和GPU端分别定义不同的内存空间,用于存储输入或输出的数据。简单来说,Unified Memory的概念就是定义一个内存指针,既可以从CPU端去访问,也可以从GPU端去访问。

Unified Memory经历了一个比较长的发展历史,2010年CUDA4率先推出了统一虚拟地址——UV的概念,当时NVIDIA叫做零复制内存,GPU代码可以通过PCIE总线访问固定的CPU内存,无需进行Memory Copy。

在CUDA6中推出了统一内存池的概念。内存池可以在CPU与GPU之间进行共享,而CPU和GPU均可以利用单一的指针来访问管理内存。但是,当时受限于Kepler和Maxwell架构,CPU涉及的所有管理内存必须是在Kernel函数启动之前先要与GPU同步,CPU和GPU是无法同时访问管理内存分配空间的,而且统一的地址空间也要受限于GPU物理内存的大小。

在Pascal架构之后,NVIDIA增加了大型地址空间的支持,可以支持49位的虚拟地址空间以及页错误,这是NVIDIA在Pascal架构下新增的两大特性。其中,页错误指的是GPU上代码所访问的页没有常驻GPU内存,这页就会出错,支持页错误可以让该页按需页迁移GPU内存或者映射到GPU地址空间,以便通过PCIE或者NVLink互联来进行访问,实现按需进行页迁移的操作。

新一代Volta架构是在Pascal的基础上新增加了Access Counters(存取计数器)功能,它可以使得页迁移控制更加精细、合理。

Pascal架构下的页迁移就如前一张图片所示。它会根据GPU或者CPU上被访问地址所在页的位置,比如logo的访问或者remote的访问,按需发起页迁移操作,这时候CPU或者GPU访问统一内存不是直接访问方式,而是通过页迁移来实现的。

在Volta架构下面,NVIDIA新增了Access Counters的存取计数器这一特性。这个特性会对内存访问的频繁程度进行计数,只会对访问频繁的内存进行迁移,从而进一步提升内存访问的效率。另外,基于NVLink连接的统一内存管理,它支持对CPU与GPU的内存进行直接访问和cache(高速缓冲存储器),但是目前支持这项功能的CPU实际上指的就是IBM的Power。同时,它支持CPU与GPU之间的原子操作,以及地址转换服务(ATS)功能,可以实现GPU访问CPU的分页表,为GPU提供了对CPU内存的完整访问权限。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档