【发布时间】:2012-11-20 15:37:09
【问题描述】:
谁能告诉我为什么没有 GPU 亲和性(我的意思是执行单元亲和性)?我知道在 Opencl 规范 1.2 中我们有一种称为设备裂变的东西,但据我所知,这仅适用于 CPU。
有人知道这方面的更多信息吗?
谢谢
【问题讨论】:
-
呃...如果没有这样的东西,this extension 是干什么用的? )
-
@raina77ow 这是为了允许(图形)程序将自己与具有多个 GPU 的系统中的特定 GPU 相关联。我相信这个问题的重点是为什么不明确允许在 GPU 上运行的(计算)代码将自身与该 GPU 内的特定执行单元绑定。
-
首先,为什么要与特定的执行单元有亲和力?亲和力通常是不对称或非均匀系统中所需要的东西。从 GPU 计算程序员的角度来看,应该假设在 GPU 上运行的计算代码对资源具有对称、统一的访问权限,而不管它位于哪个特定的执行单元上。虽然这可能并非在所有情况下都是完全正确的,或者在某些情况下是有争议的,但拥有这种前景的原因是对未来架构的可扩展性。应鼓励程序员编写可随新 GPU 扩展的代码。
-
感谢您的回答。对我来说,我正在寻找 Affinity,因为它可以让我精确处理 GPU,并且我可以更准确地对硬件进行基准测试。
-
当然,您不需要额外的构造来同时运行多个内核。而且您的整体性能可能较低(可以)将内核代码绑定到特定的执行单元。 GPU 硬件调度器将更好地判断这一点。在 cl 裂变扩展中列出的 3 个原因中,唯一对我来说似乎不是循环的原因是第一个,为高优先级流量保留能力。然而,细分设备可能不是最好的方法。
标签: cuda opencl gpu gpgpu nvidia