【docker】基于cuda基础镜像的容器找不到nvcc

问题描述
  • 之前基于11.1.1-cudnn8-runtime-ubuntu18.04的基础镜像制作新镜像,新建容器后查看cuda版本 nvcc --version,报错如下

    bash nvcc: command not found
    
  • 11.1.1-cudnn8-runtime-ubuntu18.04是包含cuda11.1.1和cudnn8.0.5的runtime版本基础镜像

问题分析
  • 网上查了nvcc --version报错的原因看到两类

    • 一类是默认已经安装了cuda(包含nvcc)只是没有添加环境变量导致找不到命令,这种情况在~/.bashrc中添加

      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.1/lib64
      export PATH=$PATH:/usr/local/cuda-11.1/bin
      export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.1
      

      然后source ~/.bashrc生效后重新执行nvcc --version解决

    • 另一类是认为没有安装cuda,需要重新安装cuda再添加环境变量。这种情况需要注意不要通过命令直接安装cuda:sudo apt-get install nvidia-cuda-toolkit,这样安装的cuda版本是9.1,很有可能和驱动版本不匹配,报错如下

      在这里插入图片描述

  • 而基础镜像是自带cuda的,但是查看容器内cuda文件夹下并不包含bin文件,可以确认并没有安装nvcc = nvidia cuda compiler

    在这里插入图片描述

  • 原因在于cuda-runtime的镜像版本没有cuda的编译工具nvcc

问题解决
  • 使用cuda-devel基础镜像来制作镜像,如 11.1.1-cudnn8-devel-ubuntu18.04
  • 测试发现devel和runtime版本大小相差0.15G左右
  • 下载地址:docker hub: cuda镜像搜索结果
补充:不同tag的cuda镜像区别
  • base:基于cuda,包含最精简的依赖,用于部署预编译的cuda应用,需要手动安装所需的其他依赖
  • runtime:基于base,添加了cuda toolkit共享的库,涵盖了运行环境的最小集合如动态库等,但没有cuda的编译工具nvcc
  • devel:基于runtime,添加了编译工具链、调试工具、头文件、静态库,用于从源码编译cuda应用,是有nvcc的

参考文章:
docker hub cuda镜像搜索结果
nvcc command not found解决方法
cuda-base/runtime/devel的区别

created by shuaixio, 2022.06.19

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值