并行计算: 是一种将特定计算,分解成可以同时进行的独立的较小计算的计算方式。然后重新组合或同步计算结果,形成原来较大计算的结果
eg: 八核手机比单核手机执行更快,因为八核用的原理是因为执行了并行计算
CPU:中央处理器,主要为串行指令而优化(大白话:响应速度快)。
GPU:图形处理器,也称显示芯片等,主要为大规模的并行运算而优化(大白话:能同时处理大规模数据计算)
>> 内核数量:处理器中实际执行计算的单元,CPU通常有4个、8个或16个核心,而GPU可能有数千个
显卡:是硬件, 主流显卡是Nvidia的GPU,
显卡系列:GeForce、Quadro、Tesla、p40
驱动:是软件,没有显卡驱动,就不能识别GPU硬件,不能调用其计算资源,Nvidia在Linux上的驱动安装特别麻烦
CUDA:是Nvidia推出的只能用于自家GPU的并行计算框架(CUDA是软件架构)。只有安装这个框架才能够进行复杂的并行计算
问1 为什么深度学习和神经网络需要GPU?
答案:a、深度学习本身需要大量计算, GPU的并行计算能力,恰当地满足了深度学习的需求
b、 本质上,神经网络是高度并行的(embarrassingly parallel),用神经网络做的许多计算都可以很容易地分解成更小的计算,每个计算都是独立于其他计算的,这意味着任何计算都不依赖于任何其他计算的结果 例如:卷积
问2:CUDA和深度学习框架关系:
答: 主流的深度学习框架也都是基于CUDA进行GPU并行加速的,几乎无一例外。还有一个叫做cudnn,是针对深度卷积神经网络的加速库
问3: GPU一定比CPU快么?
GPU只对特定的(专门的)任务更快, 如果一个任务已经足够小了,GPU不见得比CPU快,那么是没必要迁移到GPU工作的。
CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂
GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境
问4: 什么类型的程序适合在GPU上运行?
1、计算密集型的程序, 就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时,但是读内存的延迟大概是几百个时钟周期
2、易于并行的程序, GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情
网友评论