linux - 从 Linux 中的 OpenCL 卡住中恢复

标签 linux graphics opencl recovery

我正在带有 NVIDIA 卡的 Ubuntu 机器上编写我的第一个 OpenCL 内核。偶尔,该应用程序会完全卡住整个计算机。鼠标不动,重启的唯一方法是用力按下电源按钮。

我意识到卡住的原因是我不小心读取了全局只读 float 组的最后一个索引。虽然这是我不打算经常做的事情,但它可能会在未来发生。

我的问题是 - 如果再次发生这种情况,是否有任何方法可以防止计算机完全关闭?我知道,例如,Windows 可以关闭损坏的 GLSL 内核并通过重新启动图形驱动程序来恢复。这里可能有类似的东西吗?

最佳答案

您可能无法完全恢复,但可以使用 SysRq(有时称为 System Request 或 Magic SysRq)更好地恢复。通过执行特定的组合键,您可以让 Linux 以某种理智的方式重新启动(杀死进程和卸载文件系统)。此键序列在 http://en.wikipedia.org/wiki/Magic_SysRq_key 中有详细描述。在此不再赘述。

在某些情况下,您仍然可以通过 SSH 连接到设备。如果这是你的情况,你可能会更幸运。如果你可以 SSH,你可以尝试许多其他选项,例如:卸载/重新加载崩溃的模块,重新启动 xserver,或者至少以正常方式重新启动。

虽然我不是“HURD”方面的专家,但我相信它旨在更好地处理此类情况。我能想到的唯一其他解决方案是使用两张显卡,一张用于 X,一张用于 OpenCL。根据您正在做的事情,您可能必须将 NVIDIA 传递给虚拟机,以便将其与您的主机完全隔离。

关于linux - 从 Linux 中的 OpenCL 卡住中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195105/

相关文章:

winforms - 图形.DrawLines : Parameter is not valid

javascript - WebGL 2.0 错误 : glDrawArrays: attempt to access out of range vertices in attribute 0

c - OpenCL:私有(private)内存的目的和有效用途是什么?

php - 通过 PHP 编码执行 Linux-CentOS 命令行

c - 如何实现或模拟 MADV_ZERO?

linux - 在windows命令提示符下查看日志文件类似于linux中的tail命令

php - 来自 Kannel 的空白短信

c++ - 开罗表面的文本旋转

parallel-processing - NDRange 内工作项、工作组的最大数量

c++ - libOpenCL.so 使用 VFP 寄存器参数,输出不