6

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

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

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

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

4

1 回答 1

7

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

在此处输入图像描述

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

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

在此处输入图像描述

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

于 2015-11-03T12:18:57.117 回答