Opencl 如何确定主机';什么是CPU?

Opencl 如何确定主机';什么是CPU?,opencl,Opencl,我们有一个多设备系统,它将主要任务分配给多个设备。每个子任务包括: 排队写入缓冲区 排队内核 排队读取缓冲区 所有排队都是异步的,命令队列是有序的。我们将回调分配给排队读取缓冲区的cl\u事件,在这里我们确定主任务是否完成。如果不是,我们将为队列再安排一个子任务 不幸的是,我们发现,让主机的CPU保持忙碌不允许它处理来自其他设备(GPU)的回调,而且大多数时候它们都不参与工作。这个想法是将主机的cpu从我们用来完成主要任务的设备列表中排除 你应该研究设备裂变。如果您的平台支持此功能,您将能够创建

我们有一个多设备系统,它将主要任务分配给多个设备。每个子任务包括:

  • 排队写入缓冲区
  • 排队内核
  • 排队读取缓冲区
  • 所有排队都是异步的,命令队列是有序的。我们将回调分配给排队读取缓冲区的
    cl\u事件
    ,在这里我们确定主任务是否完成。如果不是,我们将为队列再安排一个子任务


    不幸的是,我们发现,让主机的CPU保持忙碌不允许它处理来自其他设备(GPU)的回调,而且大多数时候它们都不参与工作。这个想法是将主机的cpu从我们用来完成主要任务的设备列表中排除

    你应该研究设备裂变。如果您的平台支持此功能,您将能够创建具有任何cpu核心组合的opencl设备。此扩展将允许您为主机应用程序保存一定数量的内核


    我喜欢它如何允许您创建共享不同级别缓存的子设备。您可能对CL_DEVICE_PARTITION_BY_NAMES_EXT感兴趣(在页面上搜索“CL_DEVICE_PARTITION_BY NAMES_EXT”)。

    如何确定它是否是不影响其他设备的主CPU?我非常确定主机仍将在剩余的内核上运行。如果没有,您可以尝试设置应用程序的关联性。检查此窗口的“开始”命令。我不确定这是否限制了opencl设备查询的cpu核心数。主机cpu可能只有一个核心。我想从调度器使用的设备列表中删除它。是否有任何方法将cl\U设备id映射到系统设备id?我发现OpenCL将多个物理CPU组合到一个OpenCL CPU中。是的。这就是为什么您要使用设备裂变来创建多个cpu设备,或具有特定内核的设备。然后,主机应用程序会自动使用剩余的内核/CPU。为什么不能只轮询非CPU的设备?因为主机可能有多个CPU