pau*_*doo 6 performance gpu opencl
在我学习OpenCL的相对较短的时间里,我经常看到我的应用程序导致操作系统UI的响应速度明显降低(例如,窗口响应拖动几秒钟).我在使用NVidia GPU的Windows Vista和Mac OS X上遇到过这个问题.
在与显示器相同的GPU上使用OpenCL时,我可以做些什么来确保我的应用程序不会显着降低像这样的UI响应?此外,这可以在我的应用程序中不会造成不必要的性能损失吗?(即,如果用户没有做一些UI密集型任务,那么我不希望我的应用程序运行速度比现在慢.)
我知道任何答案都将是特定于平台的(其中平台包括OS/GPU /驱动程序组合).
Dwi*_*ght 16
正如David Gohara博士的OpenCL教程第6集(从43:49开始)所述,此时无法预先安排显卡.因此,对于密集的OpenCL内核和UI(或其他使用GPU的操作)使用相同的图形卡将导致笨拙或冻结的视觉外观.在图形卡获得预先安排的多任务处理(如果有的话)之前,只有一个图形卡无法完全满足您的需求.我根本不相信这是一个特定于平台的问题.
但是,通过将问题分解可以解决这个问题.考虑到任何单个GPU可用的相对速度(您必须进行测试才能找到正确的设置),将OpenCL问题分解为使用输入数据的不同部分多次运行内核,然后合并输出数据当所有内核集完成时.我建议创建需要不到100毫秒(给GPU)上运行的内核集,因此滞后是,如果不引人注意,不显著烦人(100毫秒数字是一个很好的"经验法则",根据该文件).
根据您对程序作为命令行应用程序的评论,我假设您的应用程序将在任何给定时间运行一次,而不是具有实时输出的连续运行应用程序,因为许多OpenCL演示都是如此.我的上述答案仅对非连续应用程序表示满意,因为实时性能并非固有的预期.但是,如果您的应用程序应该是连续的,那么目前唯一可用的解决方案是添加第二个更简单的图形卡,该图形卡仅用于UI.