1、CPU(Centrol Processing Unit)
CPU上的大部分面积做了cache 和控制逻辑,天然适合做复杂串行程序;
2、GPU(Graphic Processing Unit):
GPU有更多的晶体管用于数据处理,特别适用于解决并行计算的问题。可以使程序执行速度加快。为处理图形图像数据而产生的;
天然适合做大吞吐量简单计算;
GPU的发展过程:
3、GPU通过多个线程并行减少取数据的等待
4、异构运算:cpu+gpu 结合
1)cpu和gpu频繁通信的话,需要考虑两者的带宽(PCle Bus)
问题:训练模型的时候啥时候用cpu,啥时候用gpu?
5、CUDA
GPU为显示图像做了优化,早起主要是做渲染的,后来vidia厂商推出CUDA,让显卡可以用于图像计算以外的目的。
cuda是Compute Unified Device Architecture的缩写。中文叫统一计算架构。是为了让nvidia gpu可以完成通用计算任务的一种集成技术,最大化的释放计算机的并行化运算能力
6、CUDA程序(.cu)
cudaDeviceSynchronize()同步函数,阻塞接下来串行执行的cpu任务
7、CUDA Keral