Mathematica中文论坛-非官方

标题: RuntimeError: cusolver error: CUSOLVER_STATUS_NOT_INITIALIZED, when calling [打印本页]

作者: meatball1982    时间: 2024-3-15 09:35
标题: RuntimeError: cusolver error: CUSOLVER_STATUS_NOT_INITIALIZED, when calling
安装 alphaflow,
https://github.com/bjing2016/alphaflow

出现了很多的问题,

libstdc++.so.6出问题,GLIBC3.4.4之类。
安装新的,把新的libstdc++.so.6.0.24  copy到libstdc++.so.6所在目录,rm libstdc++.so.6
ln -s libstdc++.so.6.0.24  libstdc++.so.6

如果是OOM的问题.
set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:32

其它的,
基本上是pytorch和cuda版本不一致导致。
主要是通过pip在安装 。


但出现“RuntimeError: cusolver error: CUSOLVER_STATUS_NOT_INITIALIZED, when calling”
这个问题时,安装了不同版本的pytorch和对应的cuda,gcc后,还是解决不了。

从一个16G显存的,换到24G显存的。都不行(文献里是48G显存的,口水)。



根据
https://blog.csdn.net/w05072/article/details/135460257
https://github.com/rosinality/glow-pytorch/issues/21
https://www.tutorialspoint.com/h ... -gpu-and-vice-versa
https://blog.csdn.net/yaoyao_chen/article/details/130688639

大体思路是,正在跑model , 显示还差不多够用。当需要一些大的矩阵运算时,比如求逆。显卡就搞不定了。

这时,要把数据 copy back to cpu ,计算数学习相关的东西,再把结果copy 给gpu.

尝试,可行。

我是修改
alphaflow-master/alphaflow/utils/diffusion.py


  1. 16 # u, s, vh = torch.linalg.svd(B)
  2. 17 device = torch.device("cuda:6" if torch.cuda.is_available() else "cpu")#这一行好像没啥用。
  3. 18 B_cpu=B.to('cpu')
  4. 19 u_cpu, s_cpu, vh_cpu = torch.linalg.svd(B_cpu)
  5. 20 u = u_cpu.to("cuda")
  6. 21 s = s_cpu.to("cuda")
  7. 22 vh = vh_cpu.to("cuda")
复制代码
19 行是用cpu去计算svd。
然后再copy给gpu

这样,计算时间会变长(我没测试,想想也会变长),但对于显存比较小的机器(比如16,24G),至少是可以运行。









欢迎光临 Mathematica中文论坛-非官方 (http://ilovemathematica.com/) Powered by Discuz! X3.2