本文已参加「新人创作礼」活动,一起敞开创作之路。

@[toc]

在anaconda环境中运用conda指令装置cuda、cudnn、tensorflow(-gpu)、pytorch

定论

  • 运用conda虚拟环境
  • 运用conda指令装置
  • 最重要的是版别联系(python、cuda、cudnn、pytor或许tensorflow框架)的对应。

参考资料

tensorflow2.x装置

理清GPU、CUDA、CUDA Toolkit、cuDNN联系以及下载装置【==精华==】

nvidia-smi 和 nvcc 成果的版别为何不一致

解释

nvcc(Nvidia CUDA Compiler ):cuda编译器,下载了cuda就包含了nvcc。

cudatoolkit:东西渠道

cudnn:东西包

相关指令

检查cudnn版别: cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2(检查cudnn版别)

检查原系统的显卡驱动的办法是在shell中输入: nvidia-smi(原系统装置有cuda toolkit才会有该指令)。能够看到显卡驱动版别及cuda版别。

检查CUDA版别指令:nvcc -Vnvcc --versioncat /usr/local/cuda/version.txt

运用conda虚拟环境能够忽略这个cudnn版别检查

版别联系

显卡驱动:NVIDIA-SMI 450.51.05 Driver Version: 450.51.05

cuda版别(cudaToolkit):CUDA Version: 11.0

在同一台机器上(即同一个CUDA Driver版别)能够装置多个版别的CUDA(如CUDA 9.0、CUDA 10.1……只需求满意当时CUDA Driver版别支撑装置的CUDA版别即可

同一个CUDA 版别支撑装置多个版别的cuDNN

cuda(cudaToolkit)与NVIDIA显卡驱动的版别联系

tensorflow最新版别的装置要求

tensorflow-gpu与cuda、cudnn的版别联系

tensorflow和python的版别联系

cudnn与cuda的版别联系

版别挑选总结:

  • 显卡版别一定不能低,而且支撑向后兼容,因而越高越好。nvidia-smi检查Driver Version

  • 关于pytorch:

    • 能够进官网的install部分直接确认
  • 关于tensorflow:

    • 首要确认tensorflow和python的版别(python3.6支撑大都版别,是个不错的挑选)

    • 如果需求gpu支撑,检查tensorflow对应的tensorflow-gpu所需求的cuda和cudnn版别

试验

创立环境cuda9

conda create -n cuda9 python=3.6

装置cudnn=7.6.5版别(cuda在下面pytorch装置中装置了)

conda install cudnn=7.6.5

装置pytorch(这个能够进pytorch官网install部分找到指令)

conda install pytorch torchvision torchaudio cudatoolkit=10.1

装置tensorflow。

测试,不指定版别号时装置的是1.14版别,此时要自己再装置对应gpu版别。装置2.x版别时,需求指定详细版别,如果装不成功,可能是版别问题(即python、cuda、cudnn、tensorflow之间的版别问题)或许网络问题。

conda install tensorflow=2.1

别的:

  • 装置2.x版别时,好像会自动装置GPU版别(有可能是我装了1.x版别gpu的所以自动更新原因,不考究)。详细包是
 tensorflow-gpu                           2.2.0-h0d30ee6_0 --> 2.1.0-h0d30ee6_0
  • python3.6版别适用大都。

测试:

预期成果便是:都会显示true

# In[]:
import torch
# cpu
print(torch.__version__)
# gpu
print(torch.cuda.is_available())
# In[]:
import tensorflow as tf
# cpu
print(tf.__version__)
# v1 to test gpu
print(tf.test.is_gpu_available())
# v2 to test gpu
print(tf.config.list_physical_devices('GPU'))