我们有多设备系统,可以在它们之间分配主要任务。每个子任务包括:
所有队列都是异步的,命令队列是有序的。我们将回调分配给{em>入队读缓冲区的cl_event
,我们确定主要任务是否完成。如果不是,我们会为队列再安排一个子任务。
不幸的是,我们发现保持主机CPU忙不允许它处理来自其他设备(GPU)的回调,并且大多数时候他们不参与工作。我们的想法是从我们用来完成主要任务的设备列表中排除主机的cpu。
答案 0 :(得分:2)
你应该研究设备裂变。如果您的平台支持此功能,您将能够创建具有任何cpu核心组合的opencl设备。 Look here for details.此扩展程序允许您为主机应用程序保存一些内核。
我喜欢它如何允许您创建共享各种级别的缓存内存的子设备。您可能对CL_DEVICE_PARTITION_BY_NAMES_EXT(在页面上搜索“CL_DEVICE_PARTITION_BY NAMES_EXT”)感兴趣。