Ubuntu16.04+CUDA+Theano+keras配置

来源:互联网 发布:ps4网络 编辑:程序博客网 时间:2024/06/01 23:57

    最近忙于各种出差,疏于学业,之前配置的环境有些问题,重新配置一下记录下来。

    1. Ubuntu16.04 安装
      电脑之前安装了Win7和Ubuntu16.04双系统,这里先把之前的Ubuntu系统文件备份后干掉。

      使用Deepin深度系统制作U盘启动盘
      选择UEFI模式安装
      分区SWAP 4096MB
      分区ETX4 / 80G
      分区ETX4 home 80G
      引导安装选择 默认/sda
      这里不要Boot,EFI分区(不好用)
      安装成功后重启发现没有Windows7启动项
      进入终端:Ctrl+Alt+T
      修改grub启动项
      安装完成

    2. 安装CUDA
      在cuda所在目录打开terminal依次输入以下指令:

      sudo dpkg -i cuda-repo-ubuntu1604-8-0-rc_8.0.27-1_amd64​.debsudo apt-get updatesudo apt-get install cuda​

      ubuntu的gcc编译器是5.4.0,然而cuda8.0不支持5.0以上的编译器,因此需要降级,把编译器版本降到4.9:

    在terminal中执行:

        sudo apt-get install gcc-4.9 gcc-5 g++-4.9 g++-5    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10    sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30    sudo update-alternatives --set cc /usr/bin/gcc    sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30    sudo update-alternatives --set c++ /usr/bin/g++

    配置cuda8.0之后主要加上的一个环境变量声明,在文件~/.bashrc之后加上

        gedit ~/.bashrc    export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}    export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

    然后设置环境变量和动态链接库,在命令行输入

        sudo gedit /etc/profile

    在打开的文件里面加上(注意等号两边不能有空格)

        export PATH=/usr/local/cuda/bin:$PATH

    保存之后,创建链接文件

        sudo gedit /etc/ld.so.conf.d/cuda.conf

    在打开的文件中添加如下语句:

        /usr/local/cuda/lib64

    保存退出执行命令行:

        sudo ldconfig

    使链接立即生效。
    3. cudnn
    下载完cudnn后,命令行输入文件所在的文件夹 (ubuntu为本机用户名)

        cd home/ubuntu/Downloads/    tar zxvf cudnn-8.0-linux-x64-v5.1.tgz #解压文件    cd进入cudnn5.1解压之后的include目录,在命令行进行如下操作:    sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件

    再cd进入lib64目录下的动态文件进行复制和链接:(5.1.5为对应版本具体可修改)

        sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库    cd /usr/local/cuda/lib64/    sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件    sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5 #生成软衔接    sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接 

    4. Theano
    1、直接输入命令:

        sudo pip install theano

    2、配置参数文件:.theanorc
    配置libgpuarry与pygpu

        sudo gedit ~/.theanorc

    对打开的文件进行编辑

        [global]    floatX=float32    device=cuda    base_compiledir=~/external/.theano/    allow_gc=False    warn_float64=warn    [mode]=FAST_RUN    [nvcc]    fastmath=True    [cuda]    root=/usr/local/cuda

    3、运行测试例子:

        from theano import function, config, shared, tensor    import numpy    import time    vlen = 10 * 30 * 768  # 10 x #cores x # threads per core    iters = 1000    rng = numpy.random.RandomState(22)    x = shared(numpy.asarray(rng.rand(vlen), config.floatX))    f = function([], tensor.exp(x))    print(f.maker.fgraph.toposort())    t0 = time.time()    for i in range(iters):        r = f()    t1 = time.time()    print("Looping %d times took %f seconds" % (iters, t1 - t0))    print("Result is %s" % (r,))    if numpy.any([isinstance(x.op, tensor.Elemwise) and                  ('Gpu' not in type(x.op).__name__)                  for x in f.maker.fgraph.toposort()]):        print('Used the cpu')    else:        print('Used the gpu')

    可以看到结果:

        /usr/bin/python2.7 /home/hjimce/PycharmProjects/untitled/.idea/temp.py    Using gpu device 0: GeForce GTX 960 (CNMeM is disabled, cuDNN not available)    [GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]    Looping 1000 times took 0.302778 seconds    Result is [ 1.23178029 1.61879349 1.52278066 ..., 2.20771813 2.29967761    1.62323296]    Used the gpu

    说明安装成功
    5. 安装keras

        pip install keras

    配置keras

    $HOME/.keras/keras.json

    修改backend为theano

    {"image_data_format": "channels_last","epsilon": 1e-07,"floatx": "float32","backend": "theano"}
      -
    原创粉丝点击