0

最近我需要做一些实验,需要在 AMD 硬件上运行多个不同的内核。但是在开始编码之前我有几个问题,因此我真的需要你的帮助。

首先,我不太确定 AMD HW 是否可以在一台设备上支持并发内核执行。因为当我参考 OpenCL 规范时,他们说命令队列可以按顺序和无序创建。但我并不是“乱序”的意思是“并发执行”。有没有人知道这方面的信息?我的硬件是 AMD APU A8 3870k。如果这个处理器不支持,还有其他 AMD 产品支持吗?

其次,我知道有一个扩展“设备裂变”可以用来将一个设备分成两个设备。这仅适用于 CPU。但是在 OpenCL 规范中,我看到了一些东西,即“clcreatesubdevice”,它也用于将一个设备分成两个?所以我的问题是这两种技术有什么区别吗?我的理解是:device fission只能在CPU上使用,clcreatesubdevice在CPU和GPU上都可以使用。那是对的吗?

感谢您的回复!

4

1 回答 1

0

真正的并发内核不是必需的功能,会给驱动程序开发人员带来很多麻烦。据我所知,如果没有子设备拆分,AMD 不支持此功能。正如您所提到的,“乱序”不是当前的,只是队列的乱序执行。

但是,以一半的速度并行运行它们而不是以全速顺序运行有什么意义呢?如果您以这种方式执行此操作,您可能会降低整体性能。

如果您在其中一个 GPU 中耗尽资源,我建议您使用更多 GPU 设备(或 GPU + CPU)。优化也是一个不错的选择。但是对于真实场景来说,拆分从来都不是一个好的选择,仅用于学术目的或测试。

于 2013-05-15T16:16:12.710 回答