文章多图,又长又水
如果想当教程看的话,请仔细并完整地阅读本文,因为笔者将过程中的一些反面教材都写下了。
对了,本文存在干货:win10,cuda8.0,pytorch0.4.0的环境配置
最近发现自己用了5年的笔记本,拥有独立显卡
也就是说,他有GPU!!!
当然,有等于无。查了一下对这款显卡的评价,网友骂骂咧咧:
确实,我玩英雄联盟都卡的跳帧,也因此几乎不玩任何游戏(王者手游不算),严重怀疑我爸当年给我挑这款笔记本是为了让我好好学习。
先明确一下几个概念:
显卡有自己的型号,驱动有自己的版本,CUDA也一样有自己的版本,每一种CUDA有与之对应的cudnn的版本。让用户很烦的一点就是型号和版本之间有何对应的兼容性限制,安装时得注意,但是官方也没有给出一个什么型号的显卡应该用什么版本的CUDA、驱动的文档(可能是我没找到),大部分靠网友们博客的指导。。NVIDIA厂商应该想的是自己产的显卡越来越厉害,推出的CUDA越来越新,得让大家买新的显卡才能赚钱,所以新版本的CUDA就不支持老一点的显卡。。。
关于这方面的知识还是相当复杂的吗,详见显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?看不懂得东西还是很多的,也是一门学问,想起了被微机原理支配的恐惧。
为此特地做了个小实验,牺牲了C盘三个多G的空间装上了CUDA10.2,安装过程顺利。前面详细描述了失败的过程,可以不看,也可以瞅瞅,还是蛮有(qi)趣(ren)的。下面有根分割线,分割线以下的内容是成功的部分。
接下来就要看看能不能用它来加速计算了。
哦豁不行,之前装的torch是1.4.0+cpu版本的,还得重新装个cuda10.2版本的。。。
pip install ……
装好了,再来亿次。
安装了torch1.4.0cu101,但是用不了。。。
应该是没有装显卡驱动的问题。去NVIDIA官网下载驱动程序。
上一次来这个网站还是给实验室服务器刚买回来的时候,给他装驱动,当时旁边都是大佬师兄们,听他们指使,让装啥就装啥,什么也不懂。这回过来倒是看懂了一些东西。实验室的显卡是两个大泰坦,Tesla倒是在很多论文里看到作者用。自己的配置。。。
下载类型一开始选的Studio,我是内容创作者,不过被打脸了。
所以类型还是选游戏那个(可是我不玩游戏啊。。。)
下载完了之后,安装没成功。。。在安装的第一步兼容性检测上就说不兼容,查了一下,大概是要把之前的驱动给卸干净了,再重新装。可能还要重装系统,怕了怕了。只是想试试显卡加速计算的效果,不敢再倒腾小破笔记本了。后面有机会的话,搞明白其中的道道再回来填坑吧。
——————————————————分割线———————————————————————
不对劲,我明明早就装好了驱动。(之前脑子进水以为是显卡驱动的问题)
那为啥import torch失败了?
猜测pytorch版本与CUDA不对应。之前装pytorch一直是通过国内源安装的,因为快。最近发现pytorch官网的下载速度也上来了!贴一个官方的下载源。
还是好慢……
还是不行,装完了cuda10.2版本的torch1.5.0,torch.cuda.is_available()返回的还是不可用。。。
那到底是什么原因呢?显卡型号,cuda版本,显卡驱动的版本,还有torch的版本之间到底有什么对应关系?官网给了给的一些信息,GeForce820M这款显卡从CUDA2.1就开始支持了,而且是向下兼容的。按理说也不会是CUDA版本太高了吧。。。
很烦,搁置了几天,看了两篇博客,重新燃起了希望。。。
https://www.cnblogs.com/marsggbo/p/11838823.html
https://blog.csdn.net/csdn_zhishui/article/details/88019158#1CUDA_1
尤其是第一篇,盲猜是个业界大牛祥写的,先感谢一下。
问题很可能是CUDA与对应的驱动程序版本不兼容。
引用博客一的一段话:
运行CUDA应用程序需要系统至少有一个具有CUDA功能的GPU和与CUDA工具包兼容的驱动程序。每个版本的CUDA工具包都对应一个最低版本的CUDA Driver,也就是说如果你安装的CUDA Driver版本比官方推荐的还低,那么很可能会无法正常运行。CUDA Driver是向后兼容的,这意味着根据CUDA的特定版本编译的应用程序将继续在后续发布的Driver上也能继续工作。通常为了方便,在安装CUDA Toolkit的时候会默认安装CUDA Driver。
引用博客二的一段话:
所以说之前的问题在于我装的是10.2版本的CUDA?重头来过,继续搬砖。下载8.0的CUDA、对应的cudnn、对应的pytorch,好慢啊。。。
噩耗。。。这回装好了cuda,cudnn,pytorch也算是好了吧。。。然而在import torch的时候出错了。
可能是缺东西,我想从官网上下载指定的包,但是对应于cu8.0的包都已经没了,最早的都是9.2的包,各大国内源也都翻了,唯一一个包就是上面出问题的那个。。。难道真就这么快把过去的版本淘汰了???暂时放弃了。。。
理论上说,应该是可以用的,很想体验一下这块小破显卡的水准的。
————————————————————分割线————————————————————————
兄弟们我回来了。2020/5/26补充:
总算搞定了。事情的转机是这样的,我看了一下CUDA8.0对应的pytorch版本除了1.01、1.00,还有0.4.0,虽然隔得比较久了,但是下载下来试了一下,竟然可以!
在装torchvision时,顺带也装了pillow、six库,具体干啥的不太清楚,知道的可以评论区指点迷津。
然后就可以快乐地调包了。
import torch
print(torch.__version__) # 返回torch版本
print(torch.cuda.is_available()) # 返回cuda是否可用
print(torch.cuda.current_device()) # 返回使用的gpu
我的老显卡GeForce 820M太旧了,官方不再支持了。。。后续会看看拿它来加速计算的效果如何。
对了,至于pytorch1.0.1失败的原因,我看到了两种解决方案:
我在知乎也问了一下,虽然没什么人回答。
一块装有ubuntu系统的移动固态,怎么同时用在自己的笔记本(CPU)和实验室服务器呢?
实验等到回学校再搞搞吧。
待更新、、、、、、、、、、、、、、、、、