浅谈GPU: 衡量计算效能的正确姿势(1)

描述

琢磨了好几天,也不知道公众号第一篇正式文章应该怎么写。现在很后悔在朋友圈高调公开公众号,还竟敢宣称有15年行业经验,大家不要信以为真,其实不过是一年经验重复了十几年而已。连知乎的小朋友都知道问问题的正确姿势,我真是有些汗颜。

言归正状,万事开头难,现在骑虎难下,也只好勉力为之。在这里想先介绍些今后文章经常会涉及的一些指标概念,希望能达成基本的共识,到时候交流起来会方便些。

Lateny和Throughput

1 延迟(latency),完成一个任务所需要的时间。

2.吞吐量(throughput),单位时间完成的任务量。

体系结构大神David.A.Patterson在他的著作《计算机组成和设计》用洗衣过程来做譬喻。洗衣过程由清洗,烘干,折叠,收纳四个环节组成,每个环节耗时30分钟,所以每次洗衣任务的latency是2个小时,没有优化以前,8个小时的完成4次洗衣任务,所以throughput只有0.5。

cpu

经过流水线改造以后,效率得到改善,虽然每次洗衣还是花费2小时,但单位时间完成的任务量大大提升,4次洗衣任务只花了3.5个小时。

cpu

我们可以把生活常识映射到处理器的流水线(Pipeline)设计,处理器的指令Pipeline通过实现指令级的并行(Instruction Level Parallelism)来提高throughput。这种ILP的优化对码农们就是免费的午餐,躺着程序性能就上去了。

cpu

另外,如下图,我们也可以通过多核CPU或者内置很多计算单元的GPU来提高程序整体的性能(throughput),这种优化属于线程级并行(Thread Level Parallelism)。相比ILP,TLP对码农不太友好,不再供应免费的午餐,我们需要编写多线程程序,甚至通过专门的接口(CUDA/OpenCL)让CPU/GPU忙碌起来,才能得到性能的提升。

第一篇先写到这儿了,再长就没人看了,接下来会介绍其它几个重要概念。
编辑:lyn

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分