问题:
近期在Windows 10 Pro 64位系统下,想基于Pytorch GPU版本进行时间序列LSTM模型的训练,机器配置为数年前的硬件,显卡是Nvidia GeForce GT730,CUDA版本是11.4, 如下所示:
在安装了Nvidia Windows相关驱动及CUDA工具包之后,根据官方推荐,进行了如下安装:
Previous PyTorch Versions | PyTorch
# CUDA 11.3
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
成功安装后,显示版本已具备CUDA功能,如下:
但在将程序调整为GPU相关的支持后,当运行时会提示下面的警告:
显示GT 730是较旧版本,具备CUDA Capability 3.5, 而Pytorch版本目前支持 Capability 3.7以上的效能,因而可以断定该Pytorch GPU能力无法在GT 730的CUDA上发挥。
这点判断可以从以下命令行可以直观看到:
从网络多种资源(包括官方支持), 得到的信息是Pytorch 1.5以前的版本(有说 1.3.1) 才提供Capabilities 3.5的内置支持。
可能解决办法:
可以参考以下链接,Pytorch技术人员提供了当前版本Pytorch能够支持GT730 3.5 CUDA Capability的方法:
PyTorch for Tesla k40c with cuda 11.2 - #4 by ptrblck - PyTorch Forums
为使最新版本具备支持GT 730 CUDA的能力,需要按照其中的建议进行编译:
https://github.com/pytorch/pytorch#from-source
鉴于Tensorflow版本可以发挥GPU能力,本人对上述方案尚未实际尝试,仅供参考。
Pytorch CUDA Compute Capability各版本支持情况
有高手将Pytorch各官方版本的CUDA Capability支持情况用Python脚本进行了分析汇总,可以参见以下链接:
GitHub - moi90/pytorch_compute_capabilities
https://github.com/moi90/pytorch_compute_capabilities/blob/main/table.md
截止2022年10月底的列表如下, Appreciate MOI90's smart work again!
其中相关讨论有时间也可以参考:
https://discuss.pytorch.org/t/gpu-compute-capability-support-for-each-pytorch-version/62434/7
package | architectures |
---|---|
pytorch-1.12.1-py3.7_cuda11.6_cudnn8.3.2_0 | sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.12.1-py3.7_cuda11.3_cudnn8.3.2_0 | sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.12.1-py3.7_cuda10.2_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.12.0-py3.7_cuda11.6_cudnn8.3.2_0 | sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.12.0-py3.7_cuda11.3_cudnn8.3.2_0 | sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.12.0-py3.7_cuda10.2_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.11.0-py3.7_cuda11.5_cudnn8.3.2_0 | sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.11.0-py3.7_cuda11.3_cudnn8.2.0_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.11.0-py3.7_cuda11.1_cudnn8.0.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.11.0-py3.7_cuda10.2_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.10.2-py3.7_cuda11.3_cudnn8.2.0_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.10.2-py3.7_cuda11.1_cudnn8.0.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.10.2-py3.7_cuda10.2_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.10.1-py3.7_cuda11.3_cudnn8.2.0_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.10.1-py3.7_cuda11.1_cudnn8.0.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.10.1-py3.7_cuda10.2_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.10.0-py3.7_cuda11.3_cudnn8.2.0_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.10.0-py3.7_cuda11.1_cudnn8.0.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.10.0-py3.7_cuda10.2_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.9.1-py3.7_cuda11.1_cudnn8.0.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.9.1-py3.7_cuda10.2_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.9.0-py3.7_cuda11.1_cudnn8.0.5_0 | sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.9.0-py3.7_cuda10.2_cudnn7.6.5_0 | sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.8.1-py3.7_cuda11.1_cudnn8.0.5_0 | sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.8.1-py3.7_cuda10.2_cudnn7.6.5_0 | sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.8.1-py3.7_cuda10.1_cudnn7.6.3_0 | sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.8.0-py3.7_cuda11.1_cudnn8.0.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80, sm_86 |
pytorch-1.8.0-py3.7_cuda10.2_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.8.0-py3.7_cuda10.1_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.7.1-py3.7_cuda11.0.221_cudnn8.0.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80 |
pytorch-1.7.1-py3.7_cuda10.2.89_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.7.1-py3.7_cuda10.1.243_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.7.1-py3.7_cuda9.2.148_cudnn7.6.3_0 | sm_37, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.7.0-py3.7_cuda11.0.221_cudnn8.0.3_0 | sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, sm_80 |
pytorch-1.7.0-py3.7_cuda10.2.89_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.7.0-py3.7_cuda10.1.243_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.7.0-py3.7_cuda9.2.148_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.6.0-py3.7_cuda10.2.89_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.6.0-py3.7_cuda10.1.243_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.6.0-py3.7_cuda9.2.148_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.5.1-py3.7_cuda10.2.89_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.5.1-py3.7_cuda10.1.243_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.5.1-py3.7_cuda9.2.148_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.5.0-py3.7_cuda10.2.89_cudnn7.6.5_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.5.0-py3.7_cuda10.1.243_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.5.0-py3.7_cuda9.2.148_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.4.0-py3.7_cuda10.1.243_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.4.0-py3.7_cuda10.0.130_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.4.0-py3.7_cuda9.2.148_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.3.1-py3.7_cuda10.1.243_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.3.1-py3.7_cuda10.0.130_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.3.1-py3.7_cuda9.2.148_cudnn7.6.3_0 | sm_35, sm_37, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.3.0-py3.7_cuda10.1.243_cudnn7.6.3_0 | sm_30, sm_35, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.3.0-py3.7_cuda10.0.130_cudnn7.6.3_0 | sm_30, sm_35, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.3.0-py3.7_cuda9.2.148_cudnn7.6.3_0 | sm_35, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.2.0-py3.7_cuda10.0.130_cudnn7.6.2_0 | sm_35, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.2.0-py3.7_cuda9.2.148_cudnn7.6.2_0 | sm_35, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.2.0+cu92-py3.7_cuda9.2.148_cudnn7.6.2_0 | sm_35, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.1.0-py3.7_cuda10.0.130_cudnn7.5.1_0 | sm_35, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.1.0-py3.7_cuda9.0.176_cudnn7.5.1_0 | sm_35, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.0.1-py3.7_cuda10.0.130_cudnn7.4.2_2 | sm_35, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.0.1-py3.7_cuda10.0.130_cudnn7.4.2_0 | sm_35, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.0.1-py3.7_cuda9.0.176_cudnn7.4.2_2 | sm_35, sm_50, sm_60, sm_70 |
pytorch-1.0.1-py3.7_cuda9.0.176_cudnn7.4.2_0 | sm_35, sm_50, sm_60, sm_61, sm_70 |
pytorch-1.0.1-py3.7_cuda8.0.61_cudnn7.1.2_2 | sm_35, sm_37, sm_50, sm_52, sm_53, sm_60, sm_61 |
pytorch-1.0.1-py3.7_cuda8.0.61_cudnn7.1.2_0 | sm_35, sm_37, sm_50, sm_52, sm_53, sm_60, sm_61 |
pytorch-1.0.0-py3.7_cuda10.0.130_cudnn7.4.1_1 | sm_30, sm_35, sm_50, sm_60, sm_61, sm_70, sm_75 |
pytorch-1.0.0-py3.7_cuda9.0.176_cudnn7.4.1_1 | sm_35, sm_37, sm_50, sm_52, sm_53, sm_60, sm_61, sm_70 |
pytorch-1.0.0-py3.7_cuda8.0.61_cudnn7.1.2_1 | sm_20, sm_35, sm_37, sm_50, sm_52, sm_53, sm_60, sm_61 |
这个问题花费了不少时间,为避免无为的时间浪费,特此共享。