背景:在服务器上跑代码的时候,有时候会遇到程序在某一行代码卡死(阻塞),既不报错,也不停止运行,就堵在那里。
此时就可以考虑是代码在哪里碰到了load函数,load函数无法正常加载CUDA扩展的问题。
下面以碰到的例子来讲清楚这个问题的解决方案,以后碰到类似的情况应该都是以这种情况来考虑就行了:
example
我在加载如下代码gpu这一行的时候,阻塞:
导致的原因是:当你遇到load函数无法正常加载CUDA扩展的问题时,可能是由于之前的编译尝试未能成功完成,但是编译过程中生成的锁文件(lock file)没有被删除,导致后续的编译尝试被阻塞。锁文件是为了防止同一时间有多个进程尝试编译同一个CUDA扩展,以避免编译冲突或文件损坏。
解决方法:即找到lock存在的目录,删除掉就可以了。
这里的lock文件显然是存在gpu_path下,切换到此目录,删除掉lock文件就可以了: