2019 Mac13.6安装cuda+cudnn+pytorch

2019 Mac13.6安装cuda+cudnn+pytorch

本次主要记录一些自己遇到的问题的解决方案

CUDA、cuDNN

大致流程参照 2018 MAC安装CUDA、cuDNN(Gaming Box1070)

顺序是:GPU Driver、CUDA Driver、CUDA Toolkit、cuDNN

安装驱动时要注意:

1
2
MacOS与NVIDIA GPU Driver的版本要匹配,才能驱动显卡
CUDA Driver与NVIDIA GPU Driver的版本要一致,CUDA才能找到显卡

关键地址:

我自己安装好后的配置是:

  • GPU Driver Version: 387.10.10.10.40.105

  • CUDA Driver Version: 418.105

  • CUDA:10.1.105

  • cuDNN:7.4.

版本查看方式:

1
2
cat $CUDA_HOME/version.txt # CUDA
cat $CUDA_HOME/include/cudnn.h | grep CUDNN_MAJOR -A 2 #cuDNN

Pytorch with CUDA

Pytorch官方 说的很清楚:

1
MacOS Binaries dont support CUDA, install from source if CUDA is needed

目前要with CUDA有两个方式:从源码安装、安装第三方pip包

从源码安装

参照:https://github.com/pytorch/pytorch#from-source

这条路我没走通。虽然成功编译了pytorch,但执行import torch时遇到了错误:

1
ModuleNotFoundError: No module named 'torch._C'

按照google结果,我应该在 torch 目录的以下两个文件复制:

1
2
cp _C.cpython-37m-darwin.so _C.so
cp _dl.cpython-37m-darwin.so _dl.so

但我的 torch 目录下没有这两个文件

第三方pip包

参照:https://github.com/TomHeaven/pytorch-osx-build

我下载的是:pytorch-1.0-py27-py37-cuda10-cudnn74

这是别人编译好的pip包,下载后用pip安装即可:

1
pip install torch-1.0-cp37-cp37m-macosx_10_13_x86_64.whl

No module named ‘torch._C’
Library not loaded: @rpath/xxxx.10.0.dylib
在运行 import torch 时报的错,比如:

1
2
3
4
5
6
7
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jerry/anaconda3/lib/python3.7/site-packages/torch/__init__.py", line 84, in <module>
from torch._C import *
ImportError: dlopen(/Users/jerry/anaconda3/lib/python3.7/site-packages/torch/_C.cpython-37m-darwin.so, 9): Library not loaded: @rpath/libcufft.10.0.dylib
Referenced from: /Users/jerry/anaconda3/lib/python3.7/site-packages/torch/lib/libtorch_python.dylib
Reason: image not found

libcufft是cuda的库,这里只是文件名没找到而已,而库文件其实是在 $CUDA_HOME/lib下的,所以手动链接一下就行,下面是对同类错误的库进行统一处理:

1
2
3
4
5
6
sudo ln -s $CUDA_HOME/lib/libcufft.10.dylib $CUDA_HOME/lib/libcufft.10.0.dylib
sudo ln -s $CUDA_HOME/lib/libcurand.10.dylib $CUDA_HOME/lib/libcurand.10.0.dylib
sudo ln -s $CUDA_HOME/lib/libcublas.10.dylib $CUDA_HOME/lib/libcublas.10.0.dylib
sudo ln -s $CUDA_HOME/lib/libcudart.dylib $CUDA_HOME/lib/libcudart.10.0.dylib
sudo ln -s $CUDA_HOME/lib/libnvrtc.dylib $CUDA_HOME/lib/libnvrtc.10.0.dylib
sudo ln -s $CUDA_HOME/lib/libcusparse.10.dylib $CUDA_HOME/lib/libcusparse.10.0.dylib

在import torch的时候报错

1
2
3
4
5
6
7
8
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/site-packages/torch/__init__.py", line 84, in <module>
from torch._C import *
ImportError: dlopen(/usr/local/lib/python3.7/site-packages/torch/_C.cpython-37m-darwin.so, 9): Library not loaded: @rpath/libcufft.10.0.dylib
Referenced from: /usr/local/lib/python3.7/site-packages/torch/lib/libtorch_python.dylib
Reason: image not found

尝试了以上办法,还是import不了。也Google找了一下其他办法,有人说是brew install libomp一下就可以解决了,我这边是没有效果。

后来看到Tomheaven提供的pip包是需要cuda和cuDNN一一对应的,一开始没发现。

比如说如果要装pytorch1.4的话,cuda和cuDNN的版本就必须是10和7.4。因此我卸载了之前装的cuda和cuDNN重装了对应版本的。

再来安装pytorch时,还是有个问题

1
2
$ pip install /Users/shirleytse/Downloads/torch-1.0-cp37-cp37m-macosx_10_13_x86_64.whl 
ERROR: torch-1.0-cp37-cp37m-macosx_10_13_x86_64.whl is not a supported wheel on this platform.

把pip改成pip3就可以了。

检查pytorch是否安装成功

img

------------- 本 文 结 束     感 谢 您 的 阅 读 -------------