【问题标题】:Does staging buffer have better performance than host visible and host coherent buffer if an application constantly do buffer streaming?如果应用程序不断进行缓冲区流式传输,暂存缓冲区是否比主机可见缓冲区和主机连贯缓冲区具有更好的性能?
【发布时间】:2022-06-11 02:09:47
【问题描述】:

缓冲流是指顶点数据在每一帧都不断更新。

如果是静态数据,我可以理解暂存缓冲区的速度如何,但是如果输入顶点不断变化呢?暂存缓冲区是否仍然比host visible host coherent 有优势

或者当主机相干内存不可用时,我应该只使用暂存缓冲区作为备用。

另外,我还有一个问题,host visible host coherentdevice local 可以一起使用吗? not specifying device localspecifying device local 在这两种情况下有什么区别?

【问题讨论】:

    标签: vulkan


    【解决方案1】:

    暂存缓冲区使您能够将数据传输到设备可见、主机不可见内存(即离散卡 GRAM)中。

    没有暂存的共享主机-设备缓冲区访问需要内存既是设备可见的,又是主机可见的。

    这两者的影响确实取决于系统。

    对于集成显卡和移动显卡,一般没有独立的 GRAM。因此,几乎所有可用内存都在 CPU 和 GPU 之间共享,因此“主机可见,设备可见”。在这些设备上,除非您需要更改布局(如纹理上传/回读),否则使用暂存缓冲区毫无意义。

    对于独立显卡,您有一个独立的 GRAM。如果您希望资源存在于 GRAM 中,请使用暂存,因为 GRAM 不是“主机可见”。如果您希望资源位于系统 RAM 中,请使用“主机可见和设备可见”。 GPU 对系统 RAM 的访问将比 GRAM 慢(需要通过 PCIe 协议传输)。它的容量通常也比 GRAM 小(取决于设备暴露的 PCIe 孔径大小)。

    TLDR:YMMV,在您关心的设备上对速度和容量进行基准测试。

    【讨论】:

    • 是的,谢谢,我认为基准测试可能是最好的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多