CPU|GPU程序执行流程
1、CPU基于低延时设计,由运算器(ALU,Arithmetic and Logic Unit 算术逻辑单元)和控制器 (CU,Control Unit),以及若干个寄存器和高速缓冲存储器组成,功能模块较多,擅长逻辑控制,串行运算。
2、GPU基于大吞吐量设计,拥有更多的ALU用于数据处理,适合对密集数据进行并行处理,擅长大规模并发计算,因此GPU也被应用于AI训练等需要大规模并发计算场景。
CPU和GPU在并行处理的优化方向
CPU:目标在于减少memory latency(CPU|GPU在memory获取数据所需要的时间)
GPU:目标在于提高throughput(吞吐率)
CPU:
适合复杂逻辑的运算
优化方向在于减少memory latency (内存延迟)
相关的技术有,cache hierarchy, pre-fetch, branch-prediction,multi-threading
不同于GPU,CPU硬件上有复杂的分支预测器去实现branch-prediction
由于CPU经常处理复杂的逻辑,过大的增大core的数量并不能很好的提高throughput
GPU:
适合简单单一的大规模运算。比如说科学计算,图像处理,深度学习等等
优化方向在于提高throughput (吞吐率)
相关的技术有,multi-threading(多线程),warp schedular(warp 调度)
不同于CPU,GPU硬件上有复杂的warp schedular去实现多线程的multi-threading
由于GPU经常处理大规模运算,所以在throughput很高的情况下,GPU内部的memory latency上带来的性能损失不是那么明显
然而CPU和GPU间通信时所产生的memory latency需要重视
QiuckLearnFromPicture
略