【问题标题】:DirectX 12/Mantle/Vulkan and HSADirectX 12/Mantle/Vulkan 和 HSA
【发布时间】:2016-02-03 13:14:03
【问题描述】:

随着 DirectX 12、Mantle 和 Vulkan 等低级图形 API 的兴起,我想知道这些 API 如何(如果有的话)与异构系统架构 (HSA) 交互?

据我了解,支持 HSA 需要一些开发人员的参与,但我很好奇现在是否有任何低级图形 API 自己处理这个问题,或者开发人员是否仍有负担充分利用它?

HSA 对于系统内存和视频内存之间的简化数据共享等功能特别有趣,尤其是当它们共享相同的物理 RAM 时。

由于这个问题可能特定于当前的事态,我对这种概述很好(尽管有关未来路线图的信息会很好),我会接受仅涵盖单个图形 API 的答案(因为我怀疑很多人(如果有的话)都熟悉这三个加 HSA)。另外,如果我完全误解了它是如何工作的,那么也请随时指出这一点;我对这两种技术都不是很熟悉,但想知道它们目前是如何交互的。

【问题讨论】:

    标签: directx-12 vulkan mantle


    【解决方案1】:

    查看wiki page 上的图表,低级 API 更接近于他们所谓的非 HSA 系统。

    每个操作(内存复制、启动作业等)都必须由应用程序显式分派。虽然应用程序可以将命令缓冲区中的顺序操作分组并一次性分派整个缓冲区,并在命令异步执行时继续执行其他操作。

    另一方面,传统的 openGL/DirectX9 通过隐藏所有调度和复制更接近 HSA。然而,这会在验证中引入开销,并尝试预测应用程序下一步将做什么以最小化延迟。更不用说使用具有同步根的 api 检查操作是否完成的选项很少。这意味着,如果您碰巧调用了需要操作结果的方法,(HSA)驱动程序将阻塞,直到该操作完成。

    新的低级 API 为应用程序程序员提供了更多控制权并且不再隐藏细节,这实际上是一个主要卖点。

    【讨论】:

    • 很好的答案,但是您认为这如何适用于 HSA 的其他功能,例如能够在 CPU 和 iGPU 之间共享相同的内存? DirectX 12 等是否能够做同样的事情而不必复制已经加载到主内存中的纹理(在 CPU 端)?
    • @Haravikk 这取决于硬件的布局方式,集成 GPU 通常没有专用内存,因此它将使用物理 RAM。 CPU 可以按原样访问它。虽然缓存意味着访问需要同步和保护。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 2016-12-09
    • 2017-08-05
    相关资源
    最近更新 更多