Ubuntu16.04+CUDA+Theano+keras配置

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

  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​.deb
    
    sudo apt-get update
    
    sudo 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}(), 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"
}
    -

你可能感兴趣的:(环境搭建,ubuntu)