|  | 
 
| 安装 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
 19 行是用cpu去计算svd。复制代码
 16 # u, s, vh = torch.linalg.svd(B)
17 device = torch.device("cuda:6" if torch.cuda.is_available() else "cpu")#这一行好像没啥用。
18 B_cpu=B.to('cpu')
19 u_cpu, s_cpu, vh_cpu = torch.linalg.svd(B_cpu)
20 u = u_cpu.to("cuda")
21 s = s_cpu.to("cuda")
22 vh = vh_cpu.to("cuda")
然后再copy给gpu
 
 这样,计算时间会变长(我没测试,想想也会变长),但对于显存比较小的机器(比如16,24G),至少是可以运行。
 
 
 
 
 
 | 
 |