搭建环境弄了半天,主要是因为各个环境版本号的问题辗转腾挪了很久,再次记录一下最终成功run起来的软硬件版本号:
- cpu 8700K,gpu rtx2080
- ubuntu 18.04 64位
- gcc g++版本调整为7.3(ubuntu18.04的自带版本)
- NVIDIA驱动 410,手动方式安装,参考
https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-18-04-bionic-beaver-linux
- CUDA cuda_10 (参考https://docs.nvidia.com/cuda/或者https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/538832/)
- cudnn libcudnn7_7.4(参考6的链接,但发现附带examples的测试无法通过不影响tensorflow运行!环境变量配置参考https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions但要注意\是换行的意思!)
- ubuntu18系统自带了python3.6(千万不要通过apt-get方式卸载系统自带的python3或者python,如果想修改系统python版本,可通过update-alternative来进行),然后安装anaconda for python3.6版本,我的理解是anaconda内置了pip和conda,所以通过pip或者conda安装的python lib都是默认安装在了anaconda的环境(~/anaconda3/bin/python);再用pycharm启动python工程时也要选择这个anaconda的环境(~/anaconda3/bin/python)
- 如果原环境已安装了tensorflow,卸载python环境原来的tensorflow,用pip install的方式安装最新的tensorflow-gpu(1.13.0,之前的版本并不支持cuda10!)
ps1 用上面1-8的各软件版本,然后运行tensor-flow程序时提示:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory;解决方案是运行如下命令:sudo ldconfig /usr/local/cuda-9.0/lib64
ps2 cudnn的意义在于哪里呢?“通过 TensorFlow(或 Theano、CNTK),Keras 可以在 CPU 和 GPU 上无缝运行。在 CPU 上运行 时,TensorFlow 本身封装了一个低层次的张量运算库,叫作 Eigen;在 GPU 上运行时,TensorFlow 封装了一个高度优化的深度学习运算库,叫作 NVIDIA CUDA 深度神经网络库(cuDNN)”,可见这是用英伟达的gpu进行深度学习所依赖的重要组件。
彩蛋环节为搞完这一套软件后跑了个简单的tensorflow模型进行基准测试的结果:
Shape: (10000, 10000) Device: /cpu:0
Time taken: 0:00:05.056056
Shape: (10000, 10000) Device: /gpu:0
Time taken: 0:00:00.798914
可见即使是超频到5G的6核12线程的天梯图顶端的8700K在并行计算方面跟GPU的差距之大,大概就像空手道跆拳道之流和真正的中国功夫的差距那么大吧,哈哈!