
背景資料:
我有一個第 8 代 Intel UHD Graphics 620,我正在其上進行一些 OpenCL 計算。這些非常非常複雜,並且最多可以使用 500MB 的視訊記憶體。根據 Windows 報告,該卡據稱有 1,534 MB,並且透過我之前進行的一些 Minecraft 視訊記憶體測試證明了這一點。
該電腦共有 8GB 系統內存,其中最多 4GB 可與 GPU 共享。沒有專用 GPU。
我的問題:
但 OpenCL 的情況是這樣的:
- 計算開始。遊標開始稍微閃爍,但電腦可以使用。
- 現在核心已完全載入到記憶體中(記憶體使用率低於 50%)並且 GPU 開始使用。 GPU-Z 顯示 100% 使用率。
- 現在電腦死機了。什麼都不起作用,甚至連遊標移動也不起作用。
- 幾秒鐘後,GPU 停止計算並無限期凍結該 OpenCL 程式。
GPU-Z 先前的日誌顯示 GPU 無法更新遊標位置等內容,因為執行 OpenCL 操作時負載太大。
我的問題:我如何告訴特定的可執行檔使用有限的 GPU 功率進行 OpenCL 操作,或者我如何告訴 Windows 停止將遊標移動等操作放在 GPU 上,並告訴 GPU 當它 100% 用於 OpenCL 時就可以了。
PS 溫度不是問題。我可以訪問 OpenCL 應用程式的源代碼,但最好有一個我可以應用而無需從原始碼重建它的解決方案。
答案1
坦白說,我試著經營一家加密礦工在我的整合GPU。哦,我是多麼年輕和愚蠢。
不用說,我想這個問題可以理論上得到解決如果您以某種方式告訴 Windows 使用軟體(基於 CPU)渲染 GUI 元素並讓 GPU 完全自由。那麼 GPU 驅動程式就沒有理由停止密集的運算,因為如果 Windows 讓 GPU 單獨處理 OpenCL 以外的所有任務,就不會有任何運算時間的競爭。
至少這是我的思考過程,我們不能透過查看 Windows 和 Intel 驅動程式原始碼來檢查是否確實發生了這種情況。 (烏班圖 + 梅薩咳嗽)