cuda版本:
1.Nvidia控制面板里的cuda版本, 或使用nvidia-smi命令显示的cuda版本
是cuda的driver api版本
2.nvcc -V中的cuda版本,是cuda的runtime api版本,即cudatoolkit的版本
cudatoolkit的版本不能高于cuda driver api的版本,所以nvidia-smi的版本可以理解为所下载的cuda(即cudatoolkit)的最高版本
若nvcc -V命令有效,说明已安装cudatoolkit,若未安装,可以去官网安装,一般安装完还需要安装cudnn
此外,值得一提的是,cudatoolkit可以存在多个(通过虚拟环境隔开),可以看到pytorch官网里面提供的conda命令中就带有cudatoolkit (注意,此处推荐使用pip下载,使用conda可能会下载cpu版的pytorch),至于pip命令中没带cudatoolkit, 一般是自己提前下好cudatoolkit , 也有说法是pip的下载命令里也整合了cuda, 这边本人不是很清楚。
pytorch版本的选择
pytorch版本和cuda版本一般有一定的适配关系
一般来说,先查看nvidia-smi在cuda driver api的版本,决定所需要下载的cuda的版本(不得高于driver版本),然后再看与cuda版本适配的torch版本
如,我的电脑中,Nvidai控制面版显示的cuda(driver api)版本为11.6, 因此可以支持cuda(runtime api, 即cudatoolkit)11.6及以下的版本,然后去pytorch官网查看cuda和torch版本对应关系
Previous PyTorch Versions | PyTorch
如下,一般官网命令都搭配好了版本
本人选择的是cu116版本对应的pytorch
直接使用pip install torch==1.12.1+cu116 .............命令下载,并且在torch、torchvison后都要+cu116, 最后下载的是gpu版本
本人的cuda driver API是11.6 ,一年前从官网装过cuda(cudatoolkit), nvcc -V返回的是11.2, 而pytorch适配的是cuda11.6,因此推测, 只要pytorch适配的cuda版本低于等于驱动版本,就都可以用, 即便cudatoolkit是11.2(当然也有可能是pip命令下载时整合了cudatoolkit11.6?) 最终输入torch.cuda.is_available()返回的也是True,训练代码目前也没有问题