gpt4 book ai didi

gpgpu - 什么是 GPU 上的相干内存?

转载 作者:行者123 更新时间:2023-12-03 12:09:10 27 4
gpt4 key购买 nike

我曾不止一次偶然发现术语“非连贯”和“连贯”内存

tech papers与图形编程有关。我一直在寻找一个简单明了的解释,但发现大多数是this的“硬核”论文。类型。我很高兴收到关于 GPU 架构上实际存在什么相干内存以及如何将其与其他(可能不相干)内存类型进行比较的外行风格的答案。

最佳答案

内存就是内存。但是不同的东西可以访问该内存。 GPU 可以访问内存,CPU 可以访问内存,也许其他硬件位,等等。

如果其他人对该内存所做的更改对读者可见,则该特定事物具有对该内存的“连贯”访问。现在,您可能认为这是愚蠢的。毕竟,如果内存被改变了,怎么可能有人看不到呢?

简单地说,缓存。

事实证明,更换内存是昂贵的。因此,除非绝对必要,否则我们会尽一切可能避免更改内存。当您将 CPU 中的单个字节写入内存中的指针时,CPU 尚未写入该字节。或者至少,不是内存。它将其写入该内存的本地副本,称为“缓存”。

这样做的原因是,一般来说,应用程序不会写入(或读取)单个字节。他们更有可能以小块的形式写入(和读取)大量字节。因此,如果您要执行诸如内存加载或存储之类的昂贵操作,您应该加载或存储一大块内存。因此,您将要对一块内存进行的所有更改存储在缓存中,然后在将来的某个时刻将该缓存块写入实际内存。

但是,如果您有两个单独的设备使用相同的内存,则需要某种方式来确保一个设备所做的写入对其他设备可见。大多数 GPU 无法读取 CPU 缓存。而且大多数 CPU 语言没有语言级别的支持来说“嘿,我写到内存的那些东西?我真的想让你现在把它写到内存中。”所以你通常需要一些东西来确保更改的可见性。

在 Vulkan 中,标记为“HOST_COHERENT”的内存意味着,如果您写入该内存(通过映射指针,因为这是 Vulkan 允许您直接写入内存的唯一方式),您不需要使用特殊功能来使确保 GPU 可以看到这些变化。保证 GPU 对任何更改的可见性。如果该标志在内存中不可用,则必须使用 Vulkan API 来确保要访问的特定数据区域的一致性。

对于相干内存,硬件方面会发生两件事之一。 CPU 对内存的访问没有缓存在任何 CPU 的缓存中,或者 GPU 可以直接访问 CPU 的缓存(可能是因为与 CPU 位于同一个芯片上)。您通常可以看出后者正在发生,因为 Vulkan 的片上 GPU 实现不会费心提供非一致性内存选项。

关于gpgpu - 什么是 GPU 上的相干内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36241009/

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