CPU和GPU的区别、工作原理、及如何tensorflow-GPU安装等操作
2017-12-12 21:33
471 查看
最近深度学习CPU根本不够用,老板配置了GPU 怎么能不会用呢?
原来从来没有关注过的底层东西,于是乎痛下决心搞清楚原理和操作
这里就需要从他么的区别入手
那他么的区别是什么呢?
这里就需要从他的原理出发了,由于其设计目标的不同,它们分别针对了两种不同的应用场景
CPU 需要很强的通用性
为了处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。
While GPU 面对的是类型高度统一的、互相无依赖的大规模数据和不需要被打断的纯净的计算环境
于是乎:CPU和GPU就呈现出非常不同的架构(看图)
鲜绿色:计算单元ALU(Arithmetic Logic Unit)
橙红色:存储单元(cache)
橙黄色:控制单元(control)
GPU:数量众多的计算单元和超长的流水线,只有简单的控制逻辑并省去了Cache
CPU:被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路。
来,小明,你说你看出什么区别了
我看到了黄色的东西,一个大一个小。
就看不到深层的东西?
老师,我饿了。
滚出去。
我给大家说一下啊!
Cache, local memory: CPU > GPU
Threads(线程数): GPU > CPU
Registers(寄存器): GPU > CPU 多寄存器可以支持非常多的Thread
thread需要用到register,thread数目大register也必须得跟着很大才行。
SIMD Unit(单指令多数据流,以同步方式,在同一时间内执行同一条指令): GPU > CPU。
文字很麻烦吧,可以形象的看[这个视频 挺有意思的]
CPU有强大的ALU, 可以在很少的时钟周期内完成算术计算,可以达到64bit
双精度,执行双精度浮点源算的加法和乘法只需要1~3个[时钟周期]
CPU的时钟周期的频率非常高,达到1.532~3gigahertz(千兆HZ, 10的9次方).
GPU是基于大的吞吐量
特点:很多的ALU和很少的cache
缓存的目的不是保存后面需要访问的数据,这点和CPU不同,而是为thread提高服务
如果有很多线程需要访问同一个相同的数据?
缓存会合并这些访问,然后再去访问dram(因为需要访问的数据保存在dram中而不是cache里面)
获取数据后cache会转发这个数据给对应的线程,这个时候是数据转发的角色,由于需要访问dram,自然会带来延时的问题。
GPU的控制单元(左边黄色区域块)可以把多个的访问合并成少的访问。
总的来说:有一个例子说的很好
GPU的工作大部分就是这样,计算量大,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分
CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个
CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别,而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了
-
GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。
-
当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。
GPU适合干什么活?
(1)计算密集型的程序
所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。
可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。
(2)易于并行的程序。
GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。
DRAM
2017/12/12
Win-10 安装 TensorFlow-GPU
原来从来没有关注过的底层东西,于是乎痛下决心搞清楚原理和操作
先来看看第一部分
为什么GPU比CPU更diao呢?这里就需要从他么的区别入手
那他么的区别是什么呢?
这里就需要从他的原理出发了,由于其设计目标的不同,它们分别针对了两种不同的应用场景
CPU 需要很强的通用性
为了处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。
While GPU 面对的是类型高度统一的、互相无依赖的大规模数据和不需要被打断的纯净的计算环境
于是乎:CPU和GPU就呈现出非常不同的架构(看图)
鲜绿色:计算单元ALU(Arithmetic Logic Unit)
橙红色:存储单元(cache)
橙黄色:控制单元(control)
GPU:数量众多的计算单元和超长的流水线,只有简单的控制逻辑并省去了Cache
CPU:被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路。
*结果可想而知:看这个更详细的图片*
来,小明,你说你看出什么区别了
我看到了黄色的东西,一个大一个小。
就看不到深层的东西?
老师,我饿了。
滚出去。
我给大家说一下啊!
Cache, local memory: CPU > GPU
Threads(线程数): GPU > CPU
Registers(寄存器): GPU > CPU 多寄存器可以支持非常多的Thread
thread需要用到register,thread数目大register也必须得跟着很大才行。
SIMD Unit(单指令多数据流,以同步方式,在同一时间内执行同一条指令): GPU > CPU。
文字很麻烦吧,可以形象的看[这个视频 挺有意思的]
CPU有强大的ALU, 可以在很少的时钟周期内完成算术计算,可以达到64bit
双精度,执行双精度浮点源算的加法和乘法只需要1~3个[时钟周期]
CPU的时钟周期的频率非常高,达到1.532~3gigahertz(千兆HZ, 10的9次方).
再看看GPU
GPU是基于大的吞吐量
特点:很多的ALU和很少的cache
缓存的目的不是保存后面需要访问的数据,这点和CPU不同,而是为thread提高服务
如果有很多线程需要访问同一个相同的数据?
缓存会合并这些访问,然后再去访问dram(因为需要访问的数据保存在dram中而不是cache里面)
获取数据后cache会转发这个数据给对应的线程,这个时候是数据转发的角色,由于需要访问dram,自然会带来延时的问题。
GPU的控制单元(左边黄色区域块)可以把多个的访问合并成少的访问。
总的来说:有一个例子说的很好
GPU的工作大部分就是这样,计算量大,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分
CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个
CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别,而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了
-
GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。
-
当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。
GPU适合干什么活?
(1)计算密集型的程序
所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。
可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。
(2)易于并行的程序。
GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。
可能用到的链接(参考链接)
RAM RRAM DRAM三者有什么区别?DRAM
2017/12/12
第二部分: 操作
突然发现这里写的蛮不错的,就拿过来了,我就不写了、哈哈Win-10 安装 TensorFlow-GPU
相关文章推荐
- 如何在Linux 系统 以及windows 系统安装 tensorflow -cpu -gpu 老版本 0.12 ,0.10
- ubuntu 16.04 安装Tensorflow(CPU和GPU)
- 集群管理——(5)ubuntu下安装tensorflow(cpu或者gpu)
- Ubuntu16.04.1如何安装TensorFlow1.1.0(GPU版)
- 第一阶段-入门详细图文讲解tensorflow1.4 -安装(二)Windows CPU or GPU
- 【TensorFlow】Windows+Anaconda3+Tensorflow(CPU&GPU)+Pycharm 安装
- Linux系统下安装TensorFlow(CPU或者GPU版)
- Linux系统下安装TensorFlow(CPU或者GPU版)
- 170614 Windows10+Anaconda2/3+tensorflow-1.2.0rc2(cpu & gpu) 安装
- ubuntu 16.04 安装Tensorflow(CPU和GPU)
- TensorFlow安装方法二【第一步:GPU环境配置部分(装CPU版跳过直接看第二步)】(Windows10 64位 )
- Win10下如何正确安装Python和cpu版的tensorflow
- Windows10中安装tensorflow-cpu为tensorflow-gpu、CUDA、cuDNN
- Windows安装TensorFlow(CPU/GPU)
- 170819 Anaconda两行命令安装tensorflow-gpu+keras-gpu及Gpu vs Cpu验证
- TensorFlow安装方法三【Anaconda方式下查看TensorFlow版本选择性安装】(Windows10 64位 cpu and gpu)
- Windows 10 安装 Cuda, Tensorflow, 和keras,附CPU/GPU切换小技巧
- 如何在64位win7系统安装Anaconda、CPU版tensorflow、keras、pycharm
- Ubuntu16.04.1如何安装TensorFlow1.1.0(CPU版)
- TensorFlow - win7 - CPU/GPU版本安装