我有一个过程可以很好地响应我本地计算机上的CTRL+C
。它似乎也在起作用。
但是在EC2实例上,它会冻结并成为一个已经不存在或僵尸的过程。
kill -9 <PID>
不删除它,我必须重新启动EC2实例才能正确清理它。
当它运行时,它还会加载一个内部开发的共享库,我对它没有任何影响,并且无法访问其中的任何源代码以查看它正在执行的操作。该库也使用CUDA并且似乎启动了多个线程。
我尝试在主线程上安装一个信号处理程序并且确实安装了但是调用_exit
并没有关闭整个过程,它似乎还在等待。
为什么可能会在这里阻止CTRL+C
干净地退出流程?我可以覆盖或检查其他线程可以做什么吗?
答案 0 :(得分:0)
事实证明,在我的电脑上,我有一台GTX 680并且在安装CUDA时安装了驱动程序。在EC2上,该卡是GRID K520,由CUDA安装的驱动程序不起作用。我下载并安装了最新的稳定卡特定驱动程序然后工作。
发现是在运行nvidia-smi
后发现的,它不会打印有关该卡的任何详细信息,而只会显示Killed
。再次运行nvidia-smi,它会锁定控制台。
不幸的是,我没有测试过CUDA应用程序正在运行但依赖于驱动程序似乎在日志中打印一条消息,说它已加载并假设它正在运行。
更新驱动程序包括从nvidia下载最新的驱动程序(使用.run版本)。然后:
sudo modprobe -r nvidia_uvm
sudo modprobe -r nvidia
最后使用如下命令安装它:
sudo ./NVIDIA-Linux-x86_64-3xx.xx.xx.run
然后我重新启动了实例并使用nvidia-smi验证了它
此链接非常有见地 - CUDA 7.5 unstable on EC2