【问题标题】:Possible to run OpenCL program at low priority (be "nice")?可以以低优先级运行 OpenCL 程序(“不错”)?
【发布时间】:2011-07-14 16:44:55
【问题描述】:

我有一个 OpenCL Windows 程序,它可以进行大量的数字运算并愉快地消耗 100% 的 GPU。我希望能够在正常使用计算机时在后台运行它,但现在它会导致相当大的桌面延迟并使任何 3d 应用程序无法使用。

有没有办法在 OpenCL 中设置优先级,以便它将 GPU 功率提供给其他进程并且只使用空闲周期?

【问题讨论】:

    标签: windows opencl


    【解决方案1】:

    不幸的是,大多数 GPU 不支持一次运行多个任务,因此无法分配优先级。这意味着当您的 OpenCL 内核运行时,它是唯一由 GPU 执行的任务,并且在内核完成之前都是如此。

    如果您希望计算机在运行内核(正常的桌面活动、浏览、视频、游戏)时可用,则每次内核迭代都必须非常快。因此,如果您可以减少每组内核启动所花费的时间(即使用 clEnqueueNDRangeKernel 排队的每个作业),您可能会得到您想要的。这可以通过使 NDRange 更小来实现,尽管它需要足够大才能在 GPU 上高效。我发现在 Radeon HD 5870 上最少需要 5120 个工作项。或者您可以减少每个内核中的工作量。

    如果您可以将每个排队作业的执行时间降低到大约 1/60 秒,那么计算机很有可能可用。我已经能够运行 OpenCL 程序,其中每个入队大约需要 1/120 秒,而游戏时却没有注意到任何事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 2019-03-17
      • 2023-03-09
      • 1970-01-01
      相关资源
      最近更新 更多