PS:由于自己的智商掉线,此过程持续了近三天的时间,非常痛苦,记录一下,以明我不再犯错的决心之志/(ㄒoㄒ)/~~
系统与软件版本- win11 版本:专业版22000.258
- WSL2
- Docker Desktop 版本:4.7.1 (77678)
- CUDA driver for WSL 版本:512.15
- 宿主机上的CUDA版本为11.0、对应cudnn版本为8.0.5(因为写代码使用的是tensorflow2.4.0)
因为我已实现在win11下用docker创建运行我代码的某个镜像,现在考虑在该镜像实例中(容器)调用GPU,加速代码运行速度。
即我已完成:
- 启用WSL2
- 安装Docker Desktop
注意哦,此步是在宿主机上安装:官网链接
PS:好像下载的就是最新的nvidia windows 驱动程序,其中已带有了对WSL的CUDA支持。(【小白谨慎)
tips:可以在宿主机的终端中,输入nvidia-smi查看当前驱动程序版本。
- 方法1:打开宿主机的终端,执行命令:
docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
输出如下内容,即证明可访问
> Windowed mode > Simulation data stored in video memory > Single precision floating point simulation > 1 Devices used for simulation GPU Device 0: "Pascal" with compute capability 6.1 > Compute 6.1 CUDA device: [NVIDIA GeForce GTX 1060] 10240 bodies, total time for 10 iterations: 9.040 ms = 115.995 billion interactions per second = 2319.891 single-precision GFLOP/s at 20 flops per interaction
(PS:懒得执行了,直接copy我参考的大佬的博文里的)
- 方法2:在你喜爱的容器内,执行命令nvidia-smi
同上理可看到如下输出,即证明可访问
注意!!!,此时仅仅是可以访问,对应要在一些深度学习框架中真正使用之,还需要在你喜爱的容器内,配置相应的CUDA和cudnn环境。
因为我宿主机和容器内用的都是tensorflow2.4.0,而且我容器内的系统版本是Ubuntu16.04,所以只要在官网中下载对应的cuda(版本为11.0)和cudnn(版本为8.0.5),并在容器安装即可。
CUDA11.0官网链接
cudnn官网链接
我使用的是run的安装方式,因为听说用deb格式安装的话,会在安装过程中替换掉已经安装好的nvidia显卡驱动。
下载好run文件后,执行命令sudo sh cuda_11.0.3_450.51.06_linux.run就进入安装过程,具体安装过程截图找不到了,首先是输入accept,然后再直接选install即可。
PS:安装过程中,并没有提醒是否移除已有的nvidia显卡驱动,也没有安装相应的驱动,而是在安装结束后多输出一些信息,如下:
上述信息是警告,提醒CUDA没有对应的驱动,可以执行命令安装之:
sudo sh cuda_11.0.3_450.51.06_linux.run --silent --driver
不谙世事的我…一开始乖乖执行了,但现在觉得不执行也可以,因为在容器内执行命令nvidia-smi已经有输出驱动的版本,说明驱动已经安装好了,只是cuda安装程序检测不到cuda for wsl的驱动?
Anyway,接下来按常规操作,配置环境路径,输入命令sudo vim ~/.bashrc,在该文件末尾加入:
export PATH=/usr/local/cuda-11.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保持退出,再执行命令source ~/.bashrc 刷新一下环境变量。
最后执行命令nvcc -V,输出cuda版本(如下)即证明cuda安装成功。
下载对应版本的cudnn的三个文件:
分别执行命令:
sudo dpkg -i libcudnn8_8.0.5.39-1+cuda11.0_amd64.deb sudo dpkg -i libcudnn8-dev_8.0.5.39-1+cuda11.0_amd64.deb sudo dpkg -i libcudnn8-samples_8.0.5.39-1+cuda11.0_amd64.deb
安装结束后,输入命令:
cp -r /usr/src/cudnn_samples_v8/ ~ cd ~/cudnn_samples_v8/mnistCUDNN/ make clean && make ./mnistCUDNN
输出如下即证明cudnn安装成功。
中间的输出省略。。太长了
最后看到test passed!即可
- 创建一个需要使用宿主机GPU的容器时,使用命令:
docker run -it --gpus all --shm-size=8gb 镜像名
- 容器需要挂载宿主机的文件夹时,即共享一些文件(也叫容器数据卷?),使用命令:
docker run -it --gpus all -v宿主机文件夹地址:容器内对应地址 --shm-size=8gb 镜像名
- 将配置好环境的容器生成新的镜像(commit命令),使用命令:
docker ps #查看当前运行的容器及其id docker commit -a="作者名字" -m="描述信息" 容器id 新镜像名字:版本号 docker images #查看本机已有的镜像查看linux版本信息
- 查看linux内核版本
uname -a
- 查看linux发行版本(release版本)
cat /etc/issue参考博文
https://www.cnblogs.com/booturbo/p/13960935.html
https://blog.csdn.net/chenxizhan1995/article/details/117855448
https://www.cnblogs.com/coco9821/p/14859325.html



