更新CUDA后使用显卡加速StarNet2导致PixInsight崩溃的解决方法

更新CUDA后使用显卡加速StarNet2导致PixInsight崩溃的解决方法

一、起因:

因为本人编程需要,将原本与PixInsight StarNet2稳定协作运行的CUDA10.1+cudnn7.6.5更新到了CUDA11.6+cudnn8.6.0,新版本能在编程调用时稳定运行。

如何查看当前CUDA版本:

win+r输入cmd回车,输入nvcc -V回车查看(当前为V11.6.55)

在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA文件夹下查看(当前为V11.6)

我想更新CUDA,如何查看电脑最高支持的CUDA版本:

win+r输入cmd回车,输入nvidia-smi回车查看(当前最高支持CUDA11.6)

言归正传,当我使用PixInsight并调用StarNet2进行去星操作时,发现执行速度及其缓慢,需要花费数分钟完成一张图的操作,而原先不超过一分钟,打开任务管理器查看GPU运行状态,发现GPU毫无波澜,CPU却在咆哮,显然去星操作没有调用GPU加速执行。既然新版本的CUDA与cudnn能正常完成其他任务,那么问题肯定出在了pi和StarNet2的配置上,而pi本身又没有提供GPU加速的功能,所以只有StarNet2的问题了。

二、问题探索:

  • 我首先更新了StarNet2的本体和ai权重文件,发现并没有什么用,排除。
  • 然后我重新翻阅了田麦老师发布的StarNet++加速教程,发现当时替换了tensorflow.dll文件,于是我查阅资料,找到了适合当前CUDA版本的tensorflow2.6.0,替换后发现还是没有用,排除(不了)。
  • 紧接上一条,我发现下载的tensorflow是CPU版本的,于是我马上替换到了GPU版本,问题似乎解决了......
  • 我重新执行了StarNet2,并打开任务管理器观察,我发现GPU的内存利用率开始有了动静,一路飙升并稳定,但是在大约15秒后,内存利用率跌落到底,pi随之崩溃退出,再此期间,pi控制台没有显示StarNet2的处理进度,这是此类崩溃的最重要特征。

  • 我重新翻阅资料,发现推荐使用的tensorflow2.6.0并不靠谱,好像只是一个网友随便一说的,于是我开始和tensorflow版本死磕,我从2.3.0版本一直尝试到了2.10.0版本,结果无一例外失败了。

  • 走投无路开始病急乱投医,我把PixInsight版本进行了更新,从1.8.8更新到了1.8.9-2,我想可能是1.8.8不支持高版本的tensorflow。更新pi的过程让人十分不愉快,首先它是覆盖安装,安装过后之前文件夹内的所有文件都删除了,我需要重新安装插件,最让人不爽的是它似乎只能安装到C盘默认目录下(还是我没有找到更换的地方,不知道)。当然我把这些都搞定之后,安装上新版的StarNet2并把tensorflow全家桶试了一遍还是老问题

三、问题解决

  • 我大概是想放弃了,我想平时去星也不是特别常用,每次等个几分钟好像也能接受,于是我就放下了这件事。直到有一个星友委托我帮他处理一套LRGB的彗星图,一共四天每天四个通道,这套素材需要执行海量的去星操作,我想还是得把GPU加速的问题搞定了。
  • 我开始到国外论坛上查询和我问题类似的相关帖子,我在这篇帖子中发现了有星友也使用CUDA11.6并且无法加速StarNet2

https://www.astrobin.com/forum/c/astrophotography/deep-sky-processing-techniques/finally-got-starnet-in-pixinsight-to-use-my-gpu-card-for-acceleration-5x-faster-than-cpu/

在帖子最后他说使用CUDA11.6+cudnn8.2+tensorflow2.7的组合并且加速成功了,他还附带了一个配置CUDA,cudnn和tensorflow的教程链接,非常详细

https://www.williamliphotos.com/starnet-cuda

  • 我按照上面的链接教程重新配置了环境变量,并把tensorflow的lib也复制到了cuda中,我满怀期待地再次运行StarNet2,但是问题还是没有解决......

  • 我继续到PixInsight的论坛上搜索,阅读了大量的帖子后终于锁定了一个回复

这位RT星友提到了一个叫ZLIB.dll的东西,他说需要复制这个文件,但是在随后的回贴中楼主表示他执行了复制但是问题还没有解决。我随即检查了我的CUDA文件夹和PixInsight文件夹下都没有发现这个文件,于是我在这个帖子中搜索有关ZLIB.dll的相关信息,发现了RT说较新版本的CUDA需要ZLIB支持,并提供了下载链接,我觉得我终于快找到了问题的答案了

  • 我迅速下载了ZLIB并安装要求将压缩包内的zlibwapi.dll复制到了CUDA的bin文件夹下

  • 然后打开PixInsight并执行了StarNet2,当看到控制台内的去星进度出现并且速度非常快时,我内心十分激动,喜悦溢于言表,困扰我多日的问题终于解决了!

四、结尾

请大家结合自身问题判断是否需要采用我的解决方法,我只做分享,不帮大家解决其他问题。在帖子中使用的最高版本组合为CUDA11.8+cudnn8.7+tensorflow2.9.0(2.10.0也可以)。

五、参考链接

  1. 查看自己显卡支持的最高CUDA版本,和已安装的CUDA版本 https://blog.csdn.net/lk419121010221/article/details/132870977
  2. 我终于使用了比CPU快5倍的GPU加速PixInsight中的StarNet https://www.astrobin.com/forum/c/astrophotography/deep-sky-processing-techniques/finally-got-starnet-in-pixinsight-to-use-my-gpu-card-for-acceleration-5x-faster-than-cpu/
  3. 如何使用GPU的CUDA加速StarNet++V2  https://www.williamliphotos.com/starnet-cuda
  4. 在RTX3070上使用StarNet++的不幸  https://pixinsight.com/forum/index.php?threads/no-luck-with-starnet-on-rtx-3070.15585/page-3
  5. ZLIB下载 http://www.winimage.com/zLibDll/zlib123dllx64.zip (右键链接另存为即可)
  6. tensorflow下载  https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-gpu-windows-x86_64-2.9.0.zip (其他版本修改链接中版本号即可)
  7. cudnn下载  https://developer.nvidia.com/cudnn-archive
  8. CUDA下载  https://developer.nvidia.com/cuda-toolkit-archive
  9. StarNet下载  https://www.starnetastro.com/download/

评 论