关于显卡、显卡驱动、CUDA的思考

文章多图,又长又水

如果想当教程看的话,请仔细并完整地阅读本文,因为笔者将过程中的一些反面教材都写下了。

对了,本文存在干货:win10,cuda8.0,pytorch0.4.0的环境配置

一、导语

最近发现自己用了5年的笔记本,拥有独立显卡
在这里插入图片描述
关于显卡、显卡驱动、CUDA的思考_第1张图片
也就是说,他有GPU!!!
关于显卡、显卡驱动、CUDA的思考_第2张图片
当然,有等于无。查了一下对这款显卡的评价,网友骂骂咧咧:
关于显卡、显卡驱动、CUDA的思考_第3张图片
关于显卡、显卡驱动、CUDA的思考_第4张图片
确实,我玩英雄联盟都卡的跳帧,也因此几乎不玩任何游戏(王者手游不算),严重怀疑我爸当年给我挑这款笔记本是为了让我好好学习。

二、显卡、GPU、显卡驱动、CUDA、Cudnn等

先明确一下几个概念:

  1. 显卡就是GPU,硬件,实际中干活的那个;
  2. 显卡驱动,字面意思,相当于监工,驱动着显卡来干活,没有它你不知道怎么去指示显卡搬砖,底层接口;
  3. CUDA,通用的并行计算架构,应用程序接口(API),相当于老板,他管着楼上的监工,应用层上的东西了,让用户能够轻松一点地使用GPU加速运算跑网络炼丹啥的。
  4. cudnn,这个其实没啥,主要是一些专门用于深度神经网络计算的库。

显卡有自己的型号,驱动有自己的版本,CUDA也一样有自己的版本,每一种CUDA有与之对应的cudnn的版本。让用户很烦的一点就是型号和版本之间有何对应的兼容性限制,安装时得注意,但是官方也没有给出一个什么型号的显卡应该用什么版本的CUDA、驱动的文档(可能是我没找到),大部分靠网友们博客的指导。。NVIDIA厂商应该想的是自己产的显卡越来越厉害,推出的CUDA越来越新,得让大家买新的显卡才能赚钱,所以新版本的CUDA就不支持老一点的显卡。。。

关于这方面的知识还是相当复杂的吗,详见显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?看不懂得东西还是很多的,也是一门学问,想起了被微机原理支配的恐惧。

三、奇怪的想法

1 在自己的笔记本上装上CUDA能使用GPU计算吗?

为此特地做了个小实验,牺牲了C盘三个多G的空间装上了CUDA10.2,安装过程顺利。前面详细描述了失败的过程,可以不看,也可以瞅瞅,还是蛮有(qi)趣(ren)的。下面有根分割线,分割线以下的内容是成功的部分。
关于显卡、显卡驱动、CUDA的思考_第5张图片
关于显卡、显卡驱动、CUDA的思考_第6张图片
接下来就要看看能不能用它来加速计算了。
关于显卡、显卡驱动、CUDA的思考_第7张图片
哦豁不行,之前装的torch是1.4.0+cpu版本的,还得重新装个cuda10.2版本的。。。

pip install ……

装好了,再来亿次。

安装了torch1.4.0cu101,但是用不了。。。
关于显卡、显卡驱动、CUDA的思考_第8张图片
应该是没有装显卡驱动的问题。去NVIDIA官网下载驱动程序。
关于显卡、显卡驱动、CUDA的思考_第9张图片
上一次来这个网站还是给实验室服务器刚买回来的时候,给他装驱动,当时旁边都是大佬师兄们,听他们指使,让装啥就装啥,什么也不懂。这回过来倒是看懂了一些东西。实验室的显卡是两个大泰坦,Tesla倒是在很多论文里看到作者用。自己的配置。。。
关于显卡、显卡驱动、CUDA的思考_第10张图片
下载类型一开始选的Studio,我是内容创作者,不过被打脸了。
关于显卡、显卡驱动、CUDA的思考_第11张图片
关于显卡、显卡驱动、CUDA的思考_第12张图片
所以类型还是选游戏那个(可是我不玩游戏啊。。。)

下载完了之后,安装没成功。。。在安装的第一步兼容性检测上就说不兼容,查了一下,大概是要把之前的驱动给卸干净了,再重新装。可能还要重装系统,怕了怕了。只是想试试显卡加速计算的效果,不敢再倒腾小破笔记本了。后面有机会的话,搞明白其中的道道再回来填坑吧。
——————————————————分割线———————————————————————
不对劲,我明明早就装好了驱动。(之前脑子进水以为是显卡驱动的问题)
关于显卡、显卡驱动、CUDA的思考_第13张图片
关于显卡、显卡驱动、CUDA的思考_第14张图片
那为啥import torch失败了?

猜测pytorch版本与CUDA不对应。之前装pytorch一直是通过国内源安装的,因为快。最近发现pytorch官网的下载速度也上来了!贴一个官方的下载源。

还是好慢……

还是不行,装完了cuda10.2版本的torch1.5.0,torch.cuda.is_available()返回的还是不可用。。。
关于显卡、显卡驱动、CUDA的思考_第15张图片
关于显卡、显卡驱动、CUDA的思考_第16张图片
那到底是什么原因呢?显卡型号,cuda版本,显卡驱动的版本,还有torch的版本之间到底有什么对应关系?官网给了给的一些信息,GeForce820M这款显卡从CUDA2.1就开始支持了,而且是向下兼容的。按理说也不会是CUDA版本太高了吧。。。
关于显卡、显卡驱动、CUDA的思考_第17张图片
很烦,搁置了几天,看了两篇博客,重新燃起了希望。。。
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。
关于显卡、显卡驱动、CUDA的思考_第18张图片
引用博客二的一段话:
关于显卡、显卡驱动、CUDA的思考_第19张图片
所以说之前的问题在于我装的是10.2版本的CUDA?重头来过,继续搬砖。下载8.0的CUDA、对应的cudnn、对应的pytorch,好慢啊。。。

噩耗。。。这回装好了cuda,cudnn,pytorch也算是好了吧。。。然而在import torch的时候出错了。
关于显卡、显卡驱动、CUDA的思考_第20张图片
可能是缺东西,我想从官网上下载指定的包,但是对应于cu8.0的包都已经没了,最早的都是9.2的包,各大国内源也都翻了,唯一一个包就是上面出问题的那个。。。难道真就这么快把过去的版本淘汰了???暂时放弃了。。。

理论上说,应该是可以用的,很想体验一下这块小破显卡的水准的。
————————————————————分割线————————————————————————
兄弟们我回来了。2020/5/26补充:
总算搞定了。事情的转机是这样的,我看了一下CUDA8.0对应的pytorch版本除了1.01、1.00,还有0.4.0,虽然隔得比较久了,但是下载下来试了一下,竟然可以!
关于显卡、显卡驱动、CUDA的思考_第21张图片
在装torchvision时,顺带也装了pillow、six库,具体干啥的不太清楚,知道的可以评论区指点迷津。
关于显卡、显卡驱动、CUDA的思考_第22张图片
然后就可以快乐地调包了。

import torch
print(torch.__version__) # 返回torch版本
print(torch.cuda.is_available()) # 返回cuda是否可用
print(torch.cuda.current_device()) # 返回使用的gpu

关于显卡、显卡驱动、CUDA的思考_第23张图片
我的老显卡GeForce 820M太旧了,官方不再支持了。。。后续会看看拿它来加速计算的效果如何。

对了,至于pytorch1.0.1失败的原因,我看到了两种解决方案:

  1. https://blog.csdn.net/xwy990/article/details/80995893关于显卡、显卡驱动、CUDA的思考_第24张图片
  2. https://www.jianshu.com/p/d654e5534fc1
    关于显卡、显卡驱动、CUDA的思考_第25张图片
    我自己没尝试因为网站进不去(家里网不行+外网),如果有小伙伴试过敬请指教。

2 问题有点长

我在知乎也问了一下,虽然没什么人回答。
一块装有ubuntu系统的移动固态,怎么同时用在自己的笔记本(CPU)和实验室服务器呢?
实验等到回学校再搞搞吧。
待更新、、、、、、、、、、、、、、、、、

五、CPU和GPU怎么配合工作

你可能感兴趣的:(萌芽)