文章目录
零、背景
1. 驱动版本极低
众所周知,GPU driver 决定 CUDA版本,CUDA版本决定PyTorch版本,这在很多古老的服务器或者集群上屡见不鲜。比如,我遇到的情况是
- nvidia-driver是384.98,决定了CUDA版本上限是9.0,也就决定了PyTorch版本最多是1.1,很多mmlab的包起步PyTorch1.3,呵呵哒
- 此外初始gcc是4.8.5,初始CUDA是8.0
是不是地狱开局?管理员拒绝更新,你只好瑟瑟发抖不知所措。
2. 初尝试
我自己用PyTorch官网的安装方法,
conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=9.2 -c pytorch
换过各种版本的CUDA,试了四个版本的PyTorch(1.3, 1.5, 1.7, 1.8),最后都是提示driver太老了
3. Build from source
最终呢,还是在导师的推荐下,自己摸索着build from source来安装PyTorch。踩过很多坑之后,我庄重的宣布,Build from source 还是只能装与driver版本相符的CUDA的PyTorch。
一、理解
所谓GPU与PyTorch
简单来说,显卡(GPU)是一个处理矩阵速度很快的硬件,这玩意需要一个叫做驱动(driver)的底层程序来控制。一个显卡可以支持若干个版本的driver,也就是说可以用多套控制系统来控制GPU这个硬件。Driver可以在NVIDIA官网进行下载和安装,但是需要sudo权限,本文不涉及这一块的内容。
但是我们所写的python是高级语言,不能直接控制driver,所以就需要CUDA这个通用并行计算架构来做“中间商”,也就是说,
p y t h o n ( p y t o r c h ) → C U D A → D r i v e r