我有一個OpenCL Windows程序,它可以處理大量的數據,並且快樂地使用100%的GPU。我希望能夠在正常使用計算機的情況下在後臺運行它,但是現在它會導致相當大的桌面滯後並導致任何3D應用程序無法使用。可能以低優先級運行OpenCL程序(「很好」)?
有沒有辦法在OpenCL中設置一個優先級,以便它可以產生GPU的能力給其他進程並只使用備用週期?
我有一個OpenCL Windows程序,它可以處理大量的數據,並且快樂地使用100%的GPU。我希望能夠在正常使用計算機的情況下在後臺運行它,但是現在它會導致相當大的桌面滯後並導致任何3D應用程序無法使用。可能以低優先級運行OpenCL程序(「很好」)?
有沒有辦法在OpenCL中設置一個優先級,以便它可以產生GPU的能力給其他進程並只使用備用週期?
不幸的是,大多數GPU不支持同時運行多個任務,因此無法分配優先級。這意味着當OpenCL內核運行時,它是GPU執行的唯一任務,在內核完成之前就是這種情況。
如果您希望計算機在運行內核時可用(正常的桌面活動,瀏覽,視頻,遊戲),每個內核迭代必須非常快速。因此,如果您可以減少每組內核啓動所花費的時間(即每個作業使用clEnqueueNDRangeKernel入列),那麼您可能會得到您要查找的內容。這可以通過使NDRange更小來實現,儘管它需要足夠大才能在GPU上高效運行。就像5120工作項目一樣,我發現它是Radeon HD 5870的最低要求。或者你可以減少每個內核的工作量。
如果您可以將每個入隊作業的執行時間減少到1/60秒,那麼計算機很可能可用。我已經能夠運行OpenCL程序,其中每次入隊需要大約1/120秒的時間,而沒有任何注意事項。