如何更新 cupy/CUDA 以使其再次工作并修复我的 conda 环境?

Posted

技术标签:

【中文标题】如何更新 cupy/CUDA 以使其再次工作并修复我的 conda 环境?【英文标题】:How do I update cupy/CUDA so that it works again and fixes my conda environment? 【发布时间】:2020-08-20 00:51:25 【问题描述】:

我在 Ubuntu 18.04(64 位)上尝试使用一个函数,该函数使用 cupy 重新采样一些数据,但收到错误 AttributeError: type object 'cupy.core.core.Indexer' has no attribute '__reduce_cython__'。我看到 issue on github 出现同样的错误,这表明它是由于版本不匹配或缺少依赖项造成的。

首先我尝试使用 conda 更新 cupy,但是当我尝试导入 cupy 时,我会收到一个错误,提示没有正确安装 cupy,并建议尝试 pip install cupy --no-cache-dir -vvvv 修复它。这似乎不起作用,并且由于某种原因,站点包中的文件夹被称为 ~upy(此命令运行时有很多输出/错误,但我不确定它将保存这些消息的位置)。

我尝试按照问题中的建议运行 nvcc --version 以检查我的 cuda 版本,但收到一个错误,指出 nvcc 是一个无法识别的命令。我以前使用过 cupy/CUDA,但我尝试使用 sudo apt install nvidia-cuda-toolkit 更新 cuda。现在 nvcc 工作并输出Cuda compilation tools, release 9.1, V9.1.85。 (请注意,在 /usr/local/cuda 下,version.txt 文件显示“CUDA Version 10.1.168”。)

我仍然遇到错误,所以我尝试sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" "*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*"conda uninstall cupy 删除文件以便我可以重新开始,但后来我了解了 conda 的 --revisions 参数。现在我正试图回到第 11 版,但得到以下输出:

PackagesNotFoundError: The following packages are missing from the target environment:
  - conda-forge/linux-64::gnutls==3.6.13=h79a8f9a_0
  - conda-forge/linux-64::openh264==2.1.1=h8b12597_0
  - anaconda/linux-64::cupti==10.1.168=0
  - conda-forge/linux-64::openssl==1.1.1g=h516909a_0
  - anaconda/linux-64::cudnn==7.6.5=cuda10.1_0
  - anaconda/linux-64::tensorflow==2.2.0=gpu_py37h1a511ff_0
  - conda-forge/linux-64::ca-certificates==2020.6.20=hecda079_0
  - conda-forge/linux-64::conda==4.8.3=py37hc8dfbb8_1
  - anaconda/linux-64::tensorflow-base==2.2.0=gpu_py37h8a81be8_0
  - conda-forge/linux-64::nettle==3.4.1=h1bed415_1002
  - anaconda/linux-64::cupy==6.0.0=py37hc0ce245_0
  - anaconda/linux-64::cudatoolkit==10.1.243=h6bb024c_0
  - anaconda/linux-64::_tflow_select==2.1.0=gpu
  - conda-forge/linux-64::lame==3.100=h14c3975_1001

在我进一步解决问题之前,有什么关于我应该如何解决这个问题的建议吗?我的软件更新程序现在给我an error message 说软件包系统已损坏。

Check if you are using third party repositories. If so disable them, since they are a common source of problems.
Furthermore run the following command in a Terminal: apt-get install -f
Transaction failed: The package system is broken, with the rest of the message as follows:
 The following packages have unmet dependencies:

nvidia-cuda-toolkit: Depends: nvidia-profiler (= 9.1.85-3ubuntu1) but 9.1.85-3ubuntu1 is installed
                     Depends: nvidia-cuda-dev (= 9.1.85-3ubuntu1) but it is not installed
                     Depends: opencl-dev but it is a virtual package
                     Depends: libgcc1 (>= 1:3.0) but 1:8.4.0-1ubuntu1~18.04 is installed

由于我没有记录发生的每个步骤,因此这里列出了我为解决此问题而运行的命令,以防它比我上面提到的有用或更具启发性:

  485  pip list
  486  pip freeze | grep cupy
  487  nvcc --version
  488  conda update cupy
  489  conda install numba cudatoolkit pyculib
  490  conda update cupy
  491  uname -a
  492  lspci | grep -i nvidia
  493  uname -m && cat /etc/*release
  494  gcc --version
  495  uname -r
  496  cat /var/lib/apt/lists/*cuda*Packages | grep "Package:"  
  497  pip --update cupy
  498  pip install cupy --upgrade
  499  pip install cupy --no-cache-dir -vvvv
  500  pip install cupy
  501  nvcc --version
  502  sudo apt install nvidia-cuda-toolkit
  503  nvcc --version
  504  conda install -c conda-forge cupy
  505  pip freeze
  506  sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*"  "*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*"
  507  apt-get install -f
  508  sudo apt-get install -f
  509  conda uninstall cupy
  510  conda list
  511  conda list --revisions
  512  conda env list
  513  conda install --revision 11
  514  conda list --revisions
  515  conda install --revision 13

通过卸载 CUDA 和 cupy,然后重新安装修复。

我遵循install instructions 末尾列出的 CUDA 卸载步骤,以及另一篇文章中的一些其他清除命令(我认为是 sudo apt-get --purge remove "*nvidia*")。我删除了之前创建的 ~upy 和 ~upy-6.0.0-py3.7.egg-info 文件夹。然后我再次浏览了 CUDA 的所有安装说明,并使用 conda forge 安装了 cudatoolkit 和 cupy。按照他们网站上推荐的cupy说明对我不起作用,在未能制造***后产生了一个很长的错误。成功的命令是:

conda install -c nvidia cudatoolkit
conda install -c conda-forge cupy

【问题讨论】:

可以分享环境的内容吗?您是否在新环境中尝试过所有这些? 【参考方案1】:

对我来说

conda install -c conda-forge cupy

已将使用前一步安装的 cudatoolkit 降级,也降级为不存在的 cuda 版本。

【讨论】:

这是他在问题最后写的……

以上是关于如何更新 cupy/CUDA 以使其再次工作并修复我的 conda 环境?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复我的代码以使其自动化?

我如何修复此代码以使其修剪尾随零和小数点

如何修复无效的随机字符串以使其 JSON 有效

如何将 React 组件分离到不同的文件中以使其正常工作并避免 TypeErrors?

如何修复我的代码以使其发送 json 数据作为对邮递员 GET 请求的响应?

更新视图中的重复值以使其唯一