背景信息:
我有一台第 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 驱动程序源代码来检查是否确实发生了这种情况。(Ubuntu + Mesa咳嗽)