gpt4 book ai didi

architecture - GPU - 系统内存映射

转载 作者:行者123 更新时间:2023-12-04 02:00:08 28 4
gpt4 key购买 nike

GPU访问如何映射系统内存(RAM)?我很清楚虚拟内存如何为 cpu 工作,但不确定当 GPU 访问 GPU 映射的系统内存(主机)时如何工作。基本上与数据如何从系统内存复制到主机内存有关,反之亦然。你能提供引用文章支持的解释吗?

最佳答案

我发现以下幻灯片非常有用:http://developer.amd.com/afds/assets/presentations/1004_final.pdf

FUSION APUS上的内存系统
零拷贝的好处
皮埃尔·布迪埃
AMD
OpenGL/OpenCL 研究员
格雷厄姆·塞勒斯
AMD
OpenGL 经理

AMD Fusion 开发者峰会 2011 年 6 月

但是请注意,这是一个快速发展的领域。与其说是开发新概念,不如说是(最终)将虚拟内存等概念应用于 GPU。让我总结一下。

在过去,比如 2010 年之前,GPU 通常是单独的 PCI 或 PCI-express 卡或板。他们的 GPU 卡上有一些 DRAM。这种板载 DRAM 速度非常快。他们还可以访问 CPU 端的 DRAM,通常是通过跨 PCI 的 DMA 复制引擎。 GPU 像这样访问 CPU 内存通常很慢。

GPU 内存未分页。就此而言,GPU 内存通常是未缓存的,除了 GPU 内部的软件管理缓存,如纹理缓存。 “软件管理”意味着这些缓存不是缓存一致的,必须手动刷新。

通常,GPU 仅访问 CPU DRAM 的一小部分 - 一个孔。通常,它是固定的 - 不受分页的影响。通常,甚至不受虚拟地址转换的影响 - 通常虚拟地址 = 物理地址,+ 可能是一些偏移量。

(当然,其余的 CPU 内存是正确的虚拟内存,分页,当然翻译和缓存。只是 GPU 无法安全地访问它,因为 GPU 确实(没有)访问虚拟内存子系统和缓存一致性系统。

现在,上述工作,但这是一个痛苦。首先在 CPU 内部操作,然后在 GPU 内部操作很慢。容易出错。还有一个很大的安全风险:用户提供的 GPU 代码通常可以(缓慢且不安全地)访问所有 CPU DRAM,因此可能被恶意软件使用。

AMD 宣布了更紧密地集成 GPU 和 CPU 的目标。第一步是创建“Fusion”APU,即包含CPU 和GPU 的芯片。 (英特尔对 Sandybridge 做了类似的事情;我希望 ARM 也这样做。)

AMD 还宣布他们打算让 GPU 使用虚拟内存子系统,并使用缓存。

让 GPU 使用虚拟内存的一个方向是 AMD IOMMU。英特尔也有类似的。尽管 IOMMU 比非虚拟机操作系统的虚拟内存更面向虚拟机。

CPU 和 GPU 位于同一芯片内的系统通常让 CPU 和 GPU 访问相同的 DRAM 芯片。所以不再有“on-GPU-board”和“off-GPU--CPU”DRAM。

但是通常系统主板上的DRAM还是有一个分割、一个分区,分为主要供CPU使用的内存和主要供GPU使用的内存。尽管内存可能位于相同的 DRAM 芯片中,但通常很大一部分是“图形”。在上面的论文中,由于历史原因,它被称为“本地”内存。 CPU 和图形内存的调整方式可能不同——通常 GPU 内存的优先级较低,视频刷新除外,并且具有更长的突发。

在我向您推荐的论文中,有不同的内部总线:洋葱用于“系统”内存,“大蒜”用于更快地访问图形内存分区。 Garlic 内存通常是未缓存的。

我引用的论文讨论了 CPU 和 GPU 如何拥有不同的页表。他们的副标题“零复制的好处”是指将 CPU 数据结构器映射到 GPU 页表中,这样您就不需要复制它。

等等等等,

该系统的这一领域发展迅速,因此 2011 年的论文已经几乎过时了。但你应该注意趋势

(a) 软件 WANTS 统一访问 CPU 和 GPU 内存——虚拟内存和可缓存



(b) 尽管硬件试图提供 (a),但特殊的显存功能几乎总是使专用显存(即使只是相同 DRAM 的一个分区)显着更快或能效更高。

差距可能正在缩小,但每次你认为它即将消失时,可以玩另一个硬件技巧。

----

顺便说一句,这个 2012 年的答案应该更新——我是在 2019 年写的。很多仍然适用,例如 tge CPU/GPU 内存区别。 GPU 内存的速度仍然更高,但现在 GPU 内存通常比 CPU 多,至少在数据中心 DL 系统中是这样。在家用电脑中没有那么多。此外,GPU 现在支持虚拟内存。这绝不是一个完整的更新。

关于architecture - GPU - 系统内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11355426/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com