先写在前面吐槽一下:CUDA10 把 libcublas.so 把挪了个位置,所以基于 CUDA9 写的程序,在 Cuda10 需要用这个文件的话会出现问题

ImportError: libcublas.so.8.0: cannot open shared object file: No such file or directory

于是,如果你很不幸,因为某些原因,在2019年2月25日左右的时候,用了一台 CUDA10 的机器,同时想用 PyTorch,你需要一些技巧性操作才可以。这是一个时效性问题,我想过一段时间,可以通过 pipapt 安装并正常使用。

具体来说,你装了一台 Ubuntu18.04,那时候还没有 CUDA10,CUDA9 只支持到 Ubuntu16.04,于是你通过 Stackoverflow 上的操作,装上了 Cuda9.2。但在某一天,别的程序需要 CUDA10,于是你升级了。现在你的电脑是 Ubuntu18.04 + Cuda10,一切很完美。

但当你某一天打开 Tensorflow (1.12.0) 的时候,你发现 import tensorflow 报了如上错误,因为此时 pip3 安装的 Tensorflow 是 1.12.0 的版本,该版本不支持 CUDA10。你有两个选择,把 CUDA10 降回 CUDA9;或者让 Tensorflow 升级成支持 CUDA10 的版本。一般的原则是,不要选择降版本,一是迟早新版本会取代旧版本,二是别人如果用你的程序,也要经历一次降版本的痛苦,何必害人害己呢。所以所有困难自己抗,想办法把 Tensorflow 升级成支持 CUDA10 的就行。

几经搜索,Issue 上有了提了一些办法,想来这两个都没有什么大改动,升级起来应该是容易的。之前安装都是通过 pip,看 Tensorflow 的 Releases 的时候,发现了版本 1.13.0 开始支持 Cuda10,因此我们要做的就是从源码安装 Tensorflow。

主要跟着官方教程走,同时需要安装的是 Bazel,通过 Bazel 的官方教程装起来也容易,需要注意的是,最新版 Bazel 是 0.22.0,但目前 Tensorflow 1.13.0 RC2 支持的 Bazel 是 0.21.0,注意下载相应的版本即可。

编译 Tensorflow 有一大片 Warning,好在没有报错。这一步吃尽电脑资源,耗时也最大。

bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

尽量关掉 Chrome 等占用内存高的程序,我中途电脑 Freeze 的半小时,好在最后也安装好了。
希望这篇文章对你有所帮助。