zoukankan      html  css  js  c++  java
  • 记录fedora32配置cuda,cudnn,keras,theano,tensorflow

    服务器双显卡 nvidia 的 卡

    系统是fedora32 workstation  配置镜像源 (清华源会很卡)

    首先 安装 驱动。

    驱动建议安装最新的驱动。因为高驱动版本可以安装低cuda版本,而低驱动版本无法安装高cuda版本。

    去nvidia官网下载驱动,xxxx.run文件。安装时需要禁用nouveau,具体操作是在

    /etc/modprobe.d/blacklist.conf (如果没有blacklist.conf 新建一个)添加以下内容
    
    
    blacklist nouveau
    options nouveau modeset=0
     
    然后令下次启动生效
    sudo cp /boot/vmlinuz-5.6.6-300.fc32.x86_64 /boot/vmlinuz-5.6.6-300.fc32.x86_64.bak
    sudo cp /boot/initramfs-5.6.6-300.fc32.x86_64.img /boot/initramfs-5.6.6-300.fc32.x86_64.img.bak
    dracut /boot/initramfs-$(uname -r).img $(uname -r) --force
    grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
     
     
    然后  重启  安装驱动
    bash NVIDIA-Linux-x86_64-410.93.run -no-opengl-files

    -no-x-check:安装驱动时关闭X服务
    -no-nouveau-check:安装驱动时禁用nouveau
    -no-opengl-files:只安装驱动文件,不安装OpenGL文件

    但是出现了问题

    编译出错,说要安装kernel-source或者kernel-devel

    dnf install kernel-devel

    然后重启编译,提示需要特定的gcc,dnf install gcc-xx.x.x (具体需要的版本号,一般和kernel-devel有关)

    然后编译后提示 找不到 nvidia.ko

    一般出现这个错误,需要检查1内核版本,2nouveau是否禁用

    uname –r 查看内核版本,然后看看安装的kernel-devel是哪个版本,我这里因为kernel-devel是5.8,

    而内核是5.6,需要更新内核,dnf update kernel 然后重启。

    lsmod | grep nouveau   此命令用于检查是否启动了nouveau

    但是发现重启后,会自动加载nouveau。还是出现找不到nvidia.ko 

    解决办法,将运行级别改为3 。

    修改方法为:

    1.首先删除已经存在的符号链接

    rm /etc/systemd/system/default.target

    2.默认级别转换为3(文本模式)
    ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
      或者默认级别转换为5(图形模式)    一般安装完驱动后再改回来用这个。
    ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

    3.重启

    reboot 

    安装nvidia驱动,首先是编译,然后就是安装了,我这里会询问自动更新X的配置文件等等。

    驱动装完后,可以用nvidia-smi命令和nvidia-settings命令看看

    我的默认安装的日志在 /var/log/nvidia-installer.log  如果有报错可以看看是什么问题

    安装CUDA,这里不要安装最新的版本,需要查询tensorflow与cuda的关系以及python版本的关系。

    https://tensorflow.google.cn/install/source_windows    这里查看linux,macos都在

    最后折腾了半天,安装的是基于python3.6,cuda 10.0  tensorflow-gpu 1.14 keras 2.2.5

    然后就是下载cuda ,安装需要输入accept来同意条款,然后安装选项,只需要cudatookit就可以了,驱动不需要安装,sample和demo都不需要(看需求)。我这里提示了安装不完整,然后提示了驱动要大于多少多少,因为驱动是提前安装的最新的高版本符合所以,就不管他。如果怕安装失败,可以重新安装。

    安装方式,直接 bash ./cuda_xxxxxxx.run 即可

    然后是安装cudnn,建议去anaconda的镜像源里,pkgs下的main下的linux-64下的(其他系统版本自行选择)

    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/   然后在网页里ctrl+F 搜索 cudnn 寻找对应的cudnn以及对应的cuda。我这里选择的是cudnn7.6.。cudnn一定要下载对应的自己装的cuda版本号。下载tar.bz2。然后解压即可。

    然后将安装的cuda的环境变量设置一下,我的在/usr/local/cuda-xxxx

    还有/etc/ld.so.conf 的设置 ,以及 tensorflow 需要的  ~/.bashrc 里的 export ld_library_path (对应的是cuda下的的lib64)

    cudnn 的安装很简单,将解压的文件夹 放入对应的cuda下就好了。

    fedora32带的python是3.8,python3.8无法安装tensorflow1.14,需要安装python3.6

    dnf install python36

    但是发现 默认的python仍然是python3.8版本。这个需要删除原来的软连接,添加新的软连接即可。

    ln –s  xxxxx/bin/python3.6  xxxxxx/bin/python

    但是pip仍然是python3.8的

    但是又没有找到pip3.6.  解决办法

    $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   # 下载安装脚本
    $ sudo python get-pip.py    # 运行安装脚本
    这里注意,第二行的python和要安装的pip是一致的,
    sudo python3.6 get-pip.py 生成的pip是python3.6的
    sudo python3.8 get-pip.py 生成的pip是python3.8的
    pip弄好了之后,一定要看看 pip –V 看看是哪个python版本的pip。然后配置镜像。
    
    
    关于theano,需要安装libarray,cmake编译。
    可以参考
    https://www.cnblogs.com/XUEYEYU/p/10914689.html
    首先 安装 theano  pip install theano
    然后需要cmake  dnf install cmake
    需要 cython  dnf install cython
    
    
    thenao安装文档
    http://deeplearning.net/software/libgpuarray/installation.html#download
    
    
    git clone https://github.com/Theano/libgpuarray.git
    cd libgpuarray
    mkdir Build
    cd Build
    # you can pass -DCMAKE_INSTALL_PREFIX=/path/to/somewhere to install to an alternate location
    cmake .. -DCMAKE_BUILD_TYPE=Release # or Debug if you are investigating a crash
    make
    make install
    cd ..
    # This must be done after libgpuarray is installed as per instructions above.
    python setup.py build
    python setup.py install
    关于使用GPU配置文件设置, 
    可以参考https://blog.csdn.net/sinat_31824577/article/details/53140406
    ~/.theanorc
    
    
    [global]  
    device=cuda
    floatX=float32 
    
    [cuda]
    root=/usr/local/cuda
    
    [nvcc]
    fastmath = True
    optimizer_including=cudnn

    但是 import theano的时候出错,这时候,(GPU)

    应该import pygpu来看看到底怎么回事

    1 无法找到 gpuarray 
    2 无法找到 xxx.so文件 
    这两个问题 考虑 设置环境变量 ~/.bashrc /etc/ld.so.conf  
    ldconfig 用来生效新的链接库
    例如
    在 /etc/ld.so.conf/下面新建一个costum.conf (文件名随意取)
    然后 在里面输入so等文件的路径 例如

    # libgpuarray
    /usr/local/lib  
    # cuda
    /usr/local/cuda/lib64

    然后 root权限 执行 ldconfig 更新

    如果提示 说 blas 的问题 ,安装 blas
    dnf install blas
    然后在 ~/.theanorc 里添加
    [blas]
    ldflags=-lblas





    然后theano可以运行了,用的是c接口 ,
    dnf install g++   
    
    
    检查是否用gpu,可以参考代码
    https://blog.csdn.net/lixintong1992/article/details/51141934
    
    
    
     
    经过测试发现theano做后端显存占用600MB大约10s,
    tensorflow 显存直接满,大约4s 而且theano加载模型会比较慢。
    建议 watch –n1 nvidia-smi  看一下 显卡的使用情况 和 cpu 的使用情况 ,切换cpu、gpu来对比一下。测试代码可以去keras github example上找一个。
    https://github.com/keras-team/keras/tree/master/examples
    tensorflow 提示

    找不到libcudnn7 文件

     ,需要设置 ~/.bashrc   
    加入export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$xxxxxx(cuda位置)/lib64
    然后 source ~/.bashrc 即可。
     
    切换cpugpukeras代码
    参考https://www.cnblogs.com/XUEYEYU/p/keras-learning-7.html
    import os
    os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
    # The GPU id to use, usually either "0" or "1"
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"   #使用gpu
    os.environ["CUDA_VISIBLE_DEVICES"] = "-1"  #为使用CPU  
    os.environ["CUDA_VISIBLE_DEVICES"] = "0,1"  #使用CPU两块GPU  
     
    关于keras切换后端 参考
    https://www.cnblogs.com/XUEYEYU/p/10913200.html
    更改~/.keras/keras.json
     
    目前暂未解决的问题   切换tty 会黑屏  只能用图形界面。
     
     
  • 相关阅读:
    JavaUtil_04_验证码生成器
    Java微信公众平台开发_02_启用服务器配置
    Log4j2_学习_01_Log4j 2使用教程
    Java_Time_01_获取当前时间
    Eclipse_配置_00_资源帖
    Eclipse_插件_02_jd-eclipse插件的安装
    noip模拟题题解集
    小结:高斯消元
    10月刷题总结
    【vijos】1892 树上的最大匹配(树形dp+计数)
  • 原文地址:https://www.cnblogs.com/XUEYEYU/p/13726100.html
Copyright © 2011-2022 走看看