【docker】基于cuda基础镜像的容器找不到nvcc
docker镜像制作,cuda镜像,bash nvcc: command not found,cuda-base/runtime/devel版本
·
问题描述
-
之前基于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
更多推荐
已为社区贡献1条内容
所有评论(0)