目录
1 关于CUDA
1.1 超级计算简史
- 高性能计算(HPC):涉及多个处理器或者计算机的使用,以高吞吐量和高效率来完成复杂任务。其不仅仅是一个计算架构,还可以认为是包括硬件系统、软件系统、编程平台及并行编程范例的一组元素列表。
- 异构计算:CPU(Central Processor Unit,中央处理器/主机处理器)与GPU(Graphics Processor Unit,图形处理器/设备处理器)技术混合,CPU计算适合处理控制密集型任务,GPU计算合适处理包含数据并行的计算密集型任务。
- 处理器结构:均以冯·诺依曼提出的理念为基础,处理器从存储器中取出指令、解码,然后执行命令。目前多应用哈佛体系结构,由三部分组成:内存(指令内存和数据内存)、中央处理单元(控制单元和算数逻辑单元)、输入/输出接口
- 传统CPU的作用:执行串行代码,包含特殊硬件,如,分支预测单元、多级缓存等
- GPU的作用:是为并行模式计算发挥性能。
- CUDA(Compute Unified Device Architecture,统一计算架构):易用编程接口,为无须学习复杂的着色语言或者图形处理原语而能进行GPU编程提供了可能。它是C语言的扩展,允许使用标准C进行CPU代码编程。CPU派生出运行在GPU上的多线程任务(又称为内核程序),GPU通过调度内核程序进行计算。
- Tesla系列板卡:等我有了钱。
- GeForce板卡:可以作为Tesla卡的替代卡。
- 显示适配器(显卡):我的电脑下:Intel(R) UHD Graphics 630和NVIDIA GeForce RTX 2060(更多关于显卡与GPU详见另一篇文章:【NVIDIA GeForce RTX 2060】_稷思的博客-CSDN博客)。
1.2 并行计算
- 并行计算:主要目标为提高运算速度。
- 串行代码:待解决问题划分为运算块,每个运算块执行一个指定任务,若运算块之间有执行次序则需要串行执行,若没有执行次序,则可以并发执行。
- 并行程序:所有包含并发执行任务的程序均为并行程序。并行算法的实现过程中,分析数据的相关性是最基本的内容,相关性是限制并行性的主要因素。新的并行计算机架构不断出现,导致并行程序可移植性具有挑战性。
- 并行性:任务并行(任务或函数可以独立地、大规模地并行执行)与数据并行(利用多核系统对数据进行分配,CUDA的意义)
1.3 cuda版本支持
CUDA Toolkit | Linux x86_64 Driver Version | Windows x86_64 Driver Version |
---|---|---|
CUDA 11.2.1 Update 1 | >=460.32.03 | >=461.09 |
CUDA 11.2.0 GA | >=460.27.03 | >=460.82 |
CUDA 11.1.1 Update 1 | >=455.32 | >=456.81 |
CUDA 11.1 GA | >=455.23 | >=456.38 |
CUDA 11.0.3 Update 1 | >= 450.51.06 | >= 451.82 |
CUDA 11.0.2 GA | >= 450.51.05 | >= 451.48 |
CUDA 11.0.1 RC | >= 450.36.06 | >= 451.22 |
CUDA 10.2.89 | >= 440.33 | >= 441.22 |
CUDA 10.1 (10.1.105 general release, and updates) | >= 418.39 | >= 418.96 |
CUDA 10.0.130 | >= 410.48 | >= 411.31 |
CUDA 9.2 (9.2.148 Update 1) | >= 396.37 | >= 398.26 |
CUDA 9.2 (9.2.88) | >= 396.26 | >= 397.44 |
CUDA 9.1 (9.1.85) | >= 390.46 | >= 391.29 |
CUDA 9.0 (9.0.76) | >= 384.81 | >= 385.54 |
CUDA 8.0 (8.0.61 GA2) | >= 375.26 | >= 376.51 |
CUDA 8.0 (8.0.44) | >= 367.48 | >= 369.30 |
CUDA 7.5 (7.5.16) | >= 352.31 | >= 353.66 |
CUDA 7.0 (7.0.28) | >= 346.46 | >= 347.62 |
2 关于TensorFlow
2.1 TensorFlow与Python及系统支持
TensorFlow支持多种客户端语言下的安装和运行。截至版本1.12.0,绑定完成并支持版本兼容运行的语言为C和Python,其它(试验性)绑定完成的语言为JavaScript、C++、Java、Go和Swift,依然处于开发阶段的包括C#、Haskell、Julia、Ruby、Rust和Scala。
TensorFlow提供Python语言下的四个不同版本:CPU版本(tensorflow)、包含GPU加速的版本(tensorflow-gpu),以及它们的每日编译版本(tf-nightly、tf-nightly-gpu)。TensorFlow的Python版本支持Ubuntu 16.04、Windows 7、macOS 10.12.6 Sierra、Raspbian 9.0及对应的更高版本,其中macOS版不包含GPU加速。安装Python版TensorFlow可以使用模块管理工具pip/pip3或anaconda并在终端直接运行。
2.2 TensorFlow配置GPU要求
配置GPU时要求系统有NVIDIA GPU驱动384.x及以上版本、CUDA Toolkit和CUPTI(CUDA Profiling Tools Interface)9.0版本、cuDNN SDK7.2以上版本。可选配置包括NCCL 2.2用于多GPU支持、TensorRT 4.0用于TensorFlow模型优化。
对于 1.15 及更早版本,CPU 和 GPU 软件包是分开的:
pip install tensorflow==1.15 # CPU
pip install tensorflow-gpu==1.15 # GPU
支持以下带有 GPU 的设备:CUDA® 架构为 3.5、5.0、6.0、7.0、7.5、8.0 或更高的 NVIDIA® GPU 卡。请参阅支持 CUDA® 的 GPU 卡列表。算力不可以低于3.5。
GPU | 计算能力 |
---|---|
GeForce RTX 2080 | 7.5 |
GeForce RTX 2070 | 7.5 |
GeForce RTX 2060 | 7.5 |
对Windows下的GPU配置,需要将CUDA、CUPTI和cuDNN的安装路径加入%PATH%环境变量,在DOS终端有如下操作:
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\CUPTI\lib64;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include;%PATH%
SET PATH=C:\tools\cuda\bin;%PATH%
3 错误环境卸载
Win10中CUDA、cuDNN的安装与卸载 Win10中CUDA、cuDNN的安装与卸载_Sophia_fez的博客-CSDN博客_windows卸载cudnn
win10 卸载cuda win10 卸载cuda_mjiansun的专栏-CSDN博客_如何卸载cuda
直接进入控制面板卸载带cuda的就可以,然后删除cuda所在文件夹,cuDNN也就随之删除。
4 双环境搭建
4.1 各部分版本确定
当前唯一确定的条件是GPU版本与性能以及想要安装2.X和1.X两个版本,大概19年后python3.7支持TensorFlow了,但是像bert等还是在19年前出的,所以尽量是3.6版本的,各模型兼容性更大。
3.1.1 GPU与cuda
版本不对应会造成二义性,解决方式有很多,以下为个人解决方法。本人电脑配置为Intel(R) UHD Graphics 630+NVIDIA GeForce RTX 2060,进入NVIDIA控制面板后找到的详细信息如下表。根据表1提供的信息,456.87驱动版本除了最新的cuda11.2.0和cuda11.2.1,其他都没有问题,这里我选择CUDA 10.0进行安装,主要是根据后面的TensorFlow确定。
驱动程序版本: | 456.87 | |||
CUDA 核心: | 1920 |
故选择外部base环境版本为:TensorFlow2.0.0+cuda10.0+cuDNN7.4+python3.7.0;虚拟环境(命名为learn)版本(因为我的要尝试更低版本,所以直接安装的cpu版本)
3.1.2 TensorFlow-GPU与cuda、cuDNN
官网链接:在 Windows 环境中从源代码构建 | TensorFlow(里面也有cpu版本的对应)
版本 | Python 版本 | 编译器 | 构建工具 | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-2.4.0 | 3.6-3.8 | MSVC 2019 | Bazel 3.1.0 | 8.0 | 11.0 |
tensorflow_gpu-2.3.0 | 3.5-3.8 | MSVC 2019 | Bazel 3.1.0 | 7.6 | 10.1 |
tensorflow_gpu-2.2.0 | 3.5-3.8 | MSVC 2019 | Bazel 2.0.0 | 7.6 | 10.1 |
tensorflow_gpu-2.1.0 | 3.5-3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 | 7.6 | 10.1 |
tensorflow_gpu-2.0.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.15.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.14.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.24.1-0.25.2 | 7.4 | 10 |
tensorflow_gpu-1.13.0 | 3.5-3.7 | MSVC 2015 update 3 | Bazel 0.19.0-0.21.0 | 7.4 | 10 |
tensorflow_gpu-1.12.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.11.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.9.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.8.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.7.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.6.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.5.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
3.3 配置2.0.0base环境
1 激活环境安装CUDA,镜像安装(可以安装,但是建议下载安装包后本地安装)CUDA Toolkit Archive | NVIDIA Developer
conda install cudatoolkit=10.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64/
#再或者激活镜像环境后安装
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
conda install cudatoolkit=10.0
#再或者,换成中科大的,先删除清华镜像
conda config --remove-key channels
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
#此外,修改c盘user文件夹下的 .condarc 文件,删除defaults
3 下载安装对应版本cuDNN7.4,但是始终安装不上(报错),改成了安装7.6版本的就可以了。类似于安装cuda书写dos语句conda install cudnn=7.6,实际安装版本为7.6.5。下载链接: cuDNN Archive | NVIDIA Developer
4 安装TensorFlow,同样用语句即可。
pip install tensorflow==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
3.4 配置1.11.0虚拟环境
(base) C:\Users\q1348>conda create -n tf113
#提示
environment location: C:\Users\q1348\Anaconda3\envs\tf113
最后结果如下,输入conda info --envs显示当前已创建环境。
安装虚拟环境下的spyder
pip install spyder
最后使用 spyder 打开新的环境即可.(每一个安装环境均有一个spyder)
参考
参考书籍:
1 《面向机器智能的TensorFlow实践》(2017年)(仅限于Linux和Mac os系统)
参考文章链接:
1(Windows8(10)同时安装多个版本的tensorflow:tensorflow 2.0.0 和 tensorflow 1.14)Windows8(10)同时安装多个版本的tensorflow: tensorflow 2.0.0 和 tensorflow 1.14_waitingwinter的博客-CSDN博客
2 anaconda安装tensorflow1.14.0 https://blog.csdn.net/duanerduan/article/details/106577001
3 python安装第三方库遇到 ERROR: Command errored out with exit status 1: (1条消息) python安装第三方库遇到 ERROR: Command errored out with exit status 1:_RIO小哥的博客-CSDN博客
4 NLP:win10+pycharm+tensorflow-gpu+bert吐血整理 https://blog.csdn.net/qq_42192693/article/details/104736719
5 Tensorflow2.0-GPU深度学习环境安装,踩坑后整理一步到位安装总结篇.Win10+Anaconda+Tensorflow2.0-GPU+Pycharm,强烈建议Anaconda很香 Tensorflow2.0-GPU深度学习环境安装,踩坑后整理一步到位安装总结篇.Win10+Anaconda+Tensorflow2.0-GPU+Pycharm,强烈建议Anaconda很香_第一段代码的博客-CSDN博客
6 GPU 支持 https://www.tensorflow.org/install/gpu
7 Tensorflow-gpu1.13.1 和 Tensorflow-gpu2.0.0共存之安装教程 Tensorflow-gpu1.13.1 和 Tensorflow-gpu2.0.0共存之安装教程 - 无聊就看书 - 博客园
8 【conda虚拟环境安装CUDA路径】_一苇以航丶的博客-CSDN博客_conda安装的cuda在哪
9 https://www.jianshu.com/p/a8b8bebc0c88
10 绕过Nvidia官方要求的注册或登陆步骤直接下载cuDNN的方法 绕过Nvidia官方要求的注册或登陆步骤直接下载cuDNN的方法_yinghai444的博客-CSDN博客_cudnn下载
参考视频
1 tensorflow安装教程 TensorFlow安装教程_哔哩哔哩_bilibili