715遇见的问题

1.【报错】环境变量设置

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

问题所在:现在还是在用cuda9.0在运行tensorflow,需要修改路径到cuda10.0.

检查环境变量:

进入/home/leicheng下查看环境变量
终端输入【env】查看环境变量
主要查看这段话:
PATH=/opt/python3/bin:/usr/local/matlab2018b/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/python3/bin

这个表示当前的变量,看有没有我们需要的--这个是修改之后的,之前报错的时候是错误的。

关于环境变量的2个文件:

开启终端时,会先进入所有人都生效的文件/etc/profile 或者 ./bashrc里面加载路径;
其次在进入到自己的账户下/home/leicheng就会自动加载当前用户的环境变量文件/home/leicheng/.bashrc

后者后载入,所以会更优先。

所以我们可以通过修改/home/leicheng/.bashrc,修改自己的配置。通过修改/etc/profile修改所有人的配置。

【记1】犯得一个错:

之前看网上的说,su root之后,cd ~ ,去修改 vim ./bashrc
在这个文件里面修改就是对所有人生效。

这是错的,这是root的文件。可以查看这个文件的权限就知道啦

leicheng@csrc-Precision-7920-Tower:~$ ll /etc/profile
-rw-r--r-- 1 root root 745 715 15:33 /etc/profile

leicheng@csrc-Precision-7920-Tower:~$ ll /root/.bashrc
ls: cannot access '/root/.bashrc': Permission denied

【记2】关于切换root:

【错误的做法】su可以直接切换  但是 su root 直接切换不会把环境变量一起改成root的

【正确的做法】应该使用 su - root  此时就能切换到root用户,并且环境变量也改成root的啦

【leicheng用户下的env】
leicheng@csrc-Precision-7920-Tower:~$ env
PATH=/opt/python3/bin:/usr/local/matlab2018b/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/python3/bin
(有matlab  输入which matlab能返回)

【su 切换下的env】
leicheng@csrc-Precision-7920-Tower:~$ su root
root@csrc-Precision-7920-Tower:/home/leicheng# env
PATH=/usr/local/cuda-10.0/bin:/opt/python3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
(没有matlab  输入which matlab不会返回)

【su - 切换下的env】
leicheng@csrc-Precision-7920-Tower:~$ su - root
root@csrc-Precision-7920-Tower:~# env
PATH=/usr/local/cuda-10.0/bin:/opt/python3/bin:/opt/python3/bin:/usr/local/matlab2018b/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
(有matlab  输入which matlab能返回)


正常情况当然是(有matlab  输入which matlab能返回)
因为加入matlab是在/etc/profile文件中改的,所以所有用户都可以使用才是正确的。但是使用su root切换就没有。

【简化】su - root   可以直接省略root(不输入切换目的地,则默认是root)
leicheng@csrc-Precision-7920-Tower:~$ su -
Password: 
root@csrc-Precision-7920-Tower:~# 

2.cuda与cudnn

问题:因为之前gv100用的是cuda9,运行速度很慢,以为原因是cuda版本低,所以想换成cuda10。

操作:

1.找到相应版本的文件

在网上看版本号
https://tensorflow.google.cn/install/source#tested_build_configurations
在这里插入图片描述
我们选择tf-gpu-1.13.0 cudnn7.4 cuda10.0

2.下载cuda10.0

在这里插入图片描述
这个的安装是简单的,基本都是默认。注意文件下载到mac下,然后scp传到/home/leicheng下,然后切换root,把文件移动到/root下,然后开始安装,过程中默认路径【/usr/local/cuda-10.0】直接ok就行。

因为之前本来就有cuda9.0,当时有文件/usr/local/cuda-9.0,所有二者本来也不冲突。

注意:发现/usr/local/下其实还有一个文件/usr/local/cuda,这个文件是个软连接指向了/usr/local/cuda-9.0

root@csrc-Precision-7920-Tower:/usr/local# ls
bin   cuda-9.0  games    lib  matlab2018b  share
cuda  etc        include  man  sbin         src

root@csrc-Precision-7920-Tower:/usr/local# ll cuda
lrwxrwxrwx  1 root root   20 715 12:57 cuda -> /usr/local/cuda-9.0/


所以之后这个软连接是需要改的

中间还会问你要不要安装example,选择安装,后面可以测试是否安装成功,检测gpu是不是有问题等。

查看是否成功安装:
cat /usr/local/cuda/version.txt
因为cuda在修改之后是指向cuda-10.0的,所以就等价于:
cat /usr/local/cuda-10.0/version.txt

返回:

root@csrc-Precision-7920-Tower:~# cat /usr/local/cuda/version.txt
CUDA Version 10.0.130

3.下载cudnn7.4

在这里插入图片描述
下载这个版本,完了之后本地解压:
解压之后可以得到以下文件:
cuda/include/cudnn.h
cuda/NVIDIA_SLA_cuDNN_Support.txt
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.7
cuda/lib64/libcudnn.so.7.4.2
cuda/lib64/libcudnn_static.a
(这要是在本地解压的,可以看看这些文件是什么关系)

使用以下两条命令复制这些文件到CUDA目录下:
cp cuda/lib64/* /usr/local/cuda-10.0/lib64/
cp cuda/include/* /usr/local/cuda-10.0/include/


(tensorflow)  leicheng625@leicheng625deMacBook-Pro  ~/Downloads/cuda/lib64  ll 
total 1367912
lrwxr-xr-x@ 1 leicheng625  staff    13B 12 12  2018 libcudnn.so -> libcudnn.so.7
lrwxr-xr-x@ 1 leicheng625  staff    17B 12 12  2018 libcudnn.so.7 -> libcudnn.so.7.4.2
-rwxr-xr-x@ 1 leicheng625  staff   333M 12 12  2018 libcudnn.so.7.4.2
-rw-r--r--@ 1 leicheng625  staff   330M 12 12  2018 libcudnn_static.a

发现3个文件是相互连接的,所以复制完之后,检查一下连接还在不在,不在的话,就重新建立一下链接。但是必须删除原来的链接,不能让名字反复被占用。
libcudnn.so -> libcudnn.so.7 就不能在来一个libcudnn.so指向别的文件了

so

0.查看已有的链接
ldconfig -v就可以查询啦

root@csrc-Precision-7920-Tower:/usr/local/cuda/lib64# ldconfig -v

太长了不展示


发现libcudnn.so已经占用了,所以要去/usr/local/cuda-9.0/lib64/里面把这个软连接破了,就是删除里面的文件:
libcudnn.so libcudnn.so.7.0 libcudnn.so.7.5.0
这样他们之间的链接就没有啦

1.建立软连接
sudo ln -sf libcudnn.so.7.0 libcudnn.so
表示后面那个指向前面这个
得到libcudnn.so -> libcudnn.so.7 

2.取消链接
直接删除libcudnn.so
这样libcudnn.so就不会指向libcudnn.so.73.f表示强制建立


4.使用这命令创建好我们想要的链接
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ln -sf libcudnn.so.7.4.2 libcudnn.so.7

就得到这样啦
lrwxr-xr-x@ 1 leicheng625  staff    13B 12 12  2018 libcudnn.so -> libcudnn.so.7
lrwxr-xr-x@ 1 leicheng625  staff    17B 12 12  2018 libcudnn.so.7 -> libcudnn.so.7.4.2
-rwxr-xr-x@ 1 leicheng625  staff   333M 12 12  2018 libcudnn.so.7.4.2
-rw-r--r--@ 1 leicheng625  staff   330M 12 12  2018 libcudnn_static.a
查看是否成功安装:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

因为cuda在修改之后是指向cuda-10.0的,所以就等价于:
cat /usr/local/cuda-10.0/include/cudnn.h | grep CUDNN_MAJOR -A 2

返回:

root@csrc-Precision-7920-Tower:~# cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 4
#define CUDNN_PATCHLEVEL 2
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

4.修改路径

东西都配置好了,我们要修改PATH,因为之前还是cuda-9.0的,所以要改成cuda-10.0的。

因为是要对所有用户一起修改,就去/etc/profile里面修改。
在最后添加上:

export PATH=/usr/local/matlab2018b/bin:$PATH 
export PATH="/opt/python3/bin:$PATH"
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH

3.tensorflow的安装

1.下载源码包

阿里云-tensorflow: http://mirrors.aliyun.com/pypi/simple/tensorflow/
http://mirrors.aliyun.com/pypi/simple/tensorflow-gpu/
官网-anaconda: https://repo.anaconda.com/archive/
清华-anaconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=N&O=D

下载好:gpu版本和cpu版本的tensorflow-1.13.0-linux.whl

2.联网安装源码包

然后离线安装包的时候发现:
1.不需要卸载原来的tensorflow-1.12.0,直接pip install tensorflow-1.13.0-linux.whl文件就行。
2.正常离线安装包这样操作就行了,但是有相关依赖的东西,所以报错了。就需要联网安装。

# pip install tensorflow-1.13.0-linux.whl发现不行

使用:
# pip --proxy 10.0.5.5:5000 install tensorflow-1.13.0-linux.whl 就搞定啦


这个命令是用 pip --help 找到的
借用别的机器的网安装完成  

3.tf验证安装完成

tf提供看了函数帮助查看是不是安装成功,已经是否能检测到gpu
>>> tf.test.is_built_with_cuda()--看是不是安装好了cuda
>>> tf.test.is_gpu_available()--看能不能检测到gpu



>>> tf.test.is_built_with_cuda()
True

>>> tf.test.is_gpu_available()
2019-07-15 23:23:43.523568: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 AVX512F FMA
2019-07-15 23:23:43.768544: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x55b39325ef80 executing computations on platform CUDA. Devices:
2019-07-15 23:23:43.768574: I tensorflow/compiler/xla/service/service.cc:158]   StreamExecutor device (0): Quadro GV100, Compute Capability 7.0
2019-07-15 23:23:43.768585: I tensorflow/compiler/xla/service/service.cc:158]   StreamExecutor device (1): Quadro GV100, Compute Capability 7.0
2019-07-15 23:23:43.789654: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 3200000000 Hz
2019-07-15 23:23:43.793122: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x55b393922a30 executing computations on platform Host. Devices:
2019-07-15 23:23:43.793211: I tensorflow/compiler/xla/service/service.cc:158]   StreamExecutor device (0): <undefined>, <undefined>
2019-07-15 23:23:43.794019: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1433] Found device 0 with properties: 
name: Quadro GV100 major: 7 minor: 0 memoryClockRate(GHz): 1.627
pciBusID: 0000:17:00.0
totalMemory: 31.72GiB freeMemory: 822.62MiB
2019-07-15 23:23:43.795971: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1433] Found device 1 with properties: 
name: Quadro GV100 major: 7 minor: 0 memoryClockRate(GHz): 1.627
pciBusID: 0000:73:00.0
totalMemory: 31.71GiB freeMemory: 30.89GiB
2019-07-15 23:23:43.797105: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1512] Adding visible gpu devices: 0, 1
2019-07-15 23:23:43.801320: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-07-15 23:23:43.801353: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990]      0 1 
2019-07-15 23:23:43.801380: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1003] 0:   N Y 
2019-07-15 23:23:43.801394: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1003] 1:   Y N 
2019-07-15 23:23:43.803379: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/device:GPU:0 with 597 MB memory) -> physical GPU (device: 0, name: Quadro GV100, pci bus id: 0000:17:00.0, compute capability: 7.0)
2019-07-15 23:23:43.804777: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/device:GPU:1 with 30046 MB memory) -> physical GPU (device: 1, name: Quadro GV100, pci bus id: 0000:73:00.0, compute capability: 7.0)
True

4.关于cifar10的运行

导入相应的地方:然后

python cifar10_train.py --train_dir cifar10_train/ --data_dir cifar10_data/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值