gpt4 book ai didi

CPU 和 GPU 之间共享的 iOS 内存以及这对读取意味着什么

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:53:02 28 4
gpt4 key购买 nike

我有一个 MTLBuffer 正在使用由 cpu 分配的内存,因此由 cpu 和 GPU 共享。

根据 Apple 的建议,我使用三重缓冲来消除可能由一个处理器等待另一个处理器完成而导致的延迟。

我的顶点数据每一帧都会改变,所以每一帧我都使用 CPU 写入数组的一个部分,并使用 GPU 读取不同的部分。

我想做的是读取 GPU 当前也在读取的一些值,因为它们为我节省了一些时间来计算 CPU 正在写入的缓冲区部分。

本质上这是因为当前帧的数据依赖于之前帧的数据。

这有效吗?由于内存在 iOS 上共享,CPU 和 GPU 能否同时从内存的同一部分读取?

最佳答案

我认为这是有效且安全的,原因有二。首先,CPU 实际上经常需要读取才能写入。缓存和内存总线之类的东西不允许以我们通常认为的粒度(字节甚至寄存器大小)访问 RAM。为了写入,它通常必须从内存中读取更大的 block ,只修改写入的部分,然后(最终)将更大的 block 写回内存。因此,即使您没有显式读取 GPU 正在读取的缓冲区部分并且只写入 GPU 未访问的部分的方法在理论上仍然可以隐式读取缓冲区的部分GPU 正在读取。由于我们没有获得可靠地避免这种情况所需的信息,因此我认为这不被视为问题。

其次,对于您在 Apple 文档中描述的内容,没有给出任何警告。有 the "Maintaining Coherency Between CPU and GPU Memory" section在有关资源对象的文章中。那只讨论了 CPU 或 GPU 正在修改共享数据的情况,而不是两者都只是读取的情况。

然后是the "Resource Storage Modes and Device Memory Models" section描述了 iOS 9 和 macOS 10.11 引入的新存储模式。和 MTLResourceStorageModeShared 的文档本身。同样,这里提到阅读与写作,但没有提到阅读与阅读。

如果同步阅读有问题,我想苹果会讨论的。

关于CPU 和 GPU 之间共享的 iOS 内存以及这对读取意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51913721/

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