可以以低优先级运行OpenCL程序(“很好”)?

时间:2011-03-14 00:46:28

标签: windows opencl

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

有没有办法在OpenCL中设置优先级,以便它可以为其他进程提供GPU电源并仅使用备用周期?

1 个答案:

答案 0 :(得分:7)

不幸的是,大多数GPU不支持一次运行多个任务,因此无法分配优先级。这意味着当您的OpenCL内核运行时,它是GPU执行的唯一任务,直到内核完成为止。

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

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