Install Nvidia driver, CUDA 9.1 and Tensorflow 1.5 on Fedora 27/28 gaunthan Posted on Mar 29 2018 ? Linux Driver ? ? Linux Tutorial ? > 如果你的系统装有conda,可以直接使用conda安装tensorflow-gpu,命令为`conda install tensorflow-gpu`,那样就免去了安装cuda和cudnn的工作。 ## Preface 玩Linux真的不能太浪,不然隔天启动电脑,就会发现图形界面进不去了... 花了好几天尝试了几个不同的distros,安装Nvidia驱动都不是太麻烦。但安装CUDA就总是会出现版本不一致的错误。好在有热心人为我们打包好了我们所需要的东西。 感谢negativo17的杰出工作,我们可以轻易地完成Nvidia和CUDA的安装。 ## Install Nvidia And CUDA 首先运行以下命令添加仓库: sudo dnf config-manager --add-repo=https://negativo17.org/repos/fedora-nvidia.repo 然后运行以下命令进行安装 sudo dnf install nvidia-settings kernel-devel dkms-nvidia vulkan.i686 nvidia-driver-libs.i686 cuda nvidia-driver-cuda cuda-devel cuda-cudart -y 安装完成后请重启你的系统再进行后续操作。 重启后,请运行`__GL_SYNC_TO_VBLANK=0 glxgears`确保安装无误:  *(由于更新上图时使用的是我的主机电脑,不是初写本文时的笔记本电脑,因此上图输出的帧率会有很大的差别。不过这并不妨碍理解本文)* 由于锁帧的原因,直接运行`glxgears`可能FPS稳定在60左右,添加"__GL_SYNC_TO_VBLANK=0"环境变量则能够解除这一限制。从上图可以看出,独显的3D加速功能已经正常启用了。 你也可以通过运行`nvidia-smi`检查显卡驱动信息:  ## Install cuDNN 7.0 Tensorflow的运行还需要安装 cuda-cudnn,可以使用以下命令安装: sudo dnf install cuda-cudnn -y 如果速度过慢导致安装失败,请使用浏览器打开以下链接,直接下载rpm文件: https://negativo17.org/repos/nvidia/fedora-27/x86_64/cuda-cudnn-7.0.5.15-3.fc27.x86_64.rpm 你也可以尝试用`wget`命令下载。 ## Install Tensorflow 1.5 由于Tensorflow官方版本(本文写作时,官方打包版本是1.6)不支持CUDA 9.1,只支持CUDA 9.0。因此安装官方版本后,运行时会遇到不匹配错误。 这种情况下的解决方法通常是退而其次安装CUDA 9.0。但是由于仓库中没有CUDA 9.0,安装过程会比较费劲。按照官方的建议,我们可以直接从源码打包。 当然,在做任何“从头编译”的工作前,先看看有没有前辈已经完成并分享工作成果,才是正确的姿势。幸运的是,Github上有人维护了一个repo,提供了已经构建好的Tensorflow wheel及其平台信息:[yaroslavvb/tensorflow-community-wheels](https://github.com/yaroslavvb/tensorflow-community-wheels/issues)。 如果你已经按照前文所述安装好了CUDA 9.1,可以运行以下命令安装Tensorflow: curl -OL https://raw.githubusercontent.com/xd009642/tensorflow-gpu-fedora27-whl/master/tensorflow-1.5.0rc0-cp36-cp36m-linux_x86_64.whl pip3 install tensorflow-1.5.0rc0-cp36-cp36m-linux_x86_64.whl --user ## Validation 运行以下python代码测试下安装是否成功吧: ```python import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() print(sess.run(hello)) ``` 如果安装无误,你应该会看到类似下图的输出:  ## Prevent updating 在生产环境中更新显卡驱动和内核是一件很麻烦的事,可能导致许多软件出现问题。如果没有特殊要求,一般不会轻易升级它们。 虽然我们不会更新它们,但总会更新其他软件。而在执行`dnf update`命令时,内核和驱动的更新也会被囊括进去,导致我们不敢轻易来一次fully update。其实,可以修改`/etc/dnf/dnf.conf`文件,在文件中指定要忽略的包来解决这一问题: ``` [main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True exclude=kernel* *nvidia* *cuda* ``` 上面最后一行指定了执行dnf命令时要忽略的包,因此在执行dnf命令时,相关的包都不会出现在更新列表中。 ## References - [Nvidia driver, CUDA tools and libraries - negativo17.org](https://negativo17.org/nvidia-driver/) - [Github: yaroslavvb/tensorflow-community-wheels](https://github.com/yaroslavvb/tensorflow-community-wheels) - [Disable vertical sync for glxgears](https://stackoverflow.com/questions/17196117/disable-vertical-sync-for-glxgears) - [prevent kernel for upgrade](https://forums.fedoraforum.org/showthread.php?305081-prevent-kernel-for-upgrade) 赏 Wechat Pay Alipay Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition Learning and Transferring Mid-Level Image Representations using Convolutional Neural Networks