排了一下午的队,终于轮到我了。
1 典型场景
场景1:
年底有大堆账目需要报销处理,小罗罗的报销流程是这样的:
-
个人统计账单发票,在财务系统中预约
-
找上一级部门A领导审核签字画押
-
(重要账目选择项)找上上一级部门B领导审核签字画押
-
找财务部门C审核签字
-
财务部门走流程,中间有任何问题都回到流程起点找小罗罗
存在的问题:
-
个人没整利索,A不签字
-
A不签字,B不签字
-
B不签字,C拒收
这是典型的事务串行处理流程。
场景2:
部门要举行年终庆典,繁琐的准备工作落到了部门头头A的头上。A领到任务一看,自觉一个人三个月也完不成这事儿,好在A手下有人手众多,因此A将任务分解:
-
B负责联系场地
-
C负责联系参会人员
-
D负责采购纪念品
-
E负责策划庆典
-
A负责回家听消息
整个过程相对顺利,A只是协调了一下B和E之间的意见冲突而已。
这是典型的事务并行处理流程。
2 特点
串行计算:
-
将大任务分解成多道工序,前面的工序没完成,后面所有工作都得老老实实等着。
-
实施起来简单,不需要额外的进行规划,按事务正常的完成路径走即可
-
每一道工序都有明确的输入和输出
-
工序之间无法交流沟通,容易走偏,只能通过严格检查每一道工序的输入输出来保证质量
-
下一道工序负责审核上一道工序的结果
-
安全程度高,事情还没开干,就已经知道最终的结果会怎样
-
效率低,如果中间某道工序非常耗时,那整个工期都会延长
并行计算:
-
将大任务分解成多个小任务,确保小任务之间耦合度最低
-
每个小任务都有自己的输入和输出
-
所有小任务同时开工
-
通常需要选择一名队长,负责小任务计算结果的收集及信息交流
-
小任务之间存在交流与沟通,通常不太容易走岔路
-
安全程度低,在事情没完成之前,你不知道最终的结果会偏离预期多远
-
效率高,不仅计算会消耗计算资源,任务间的沟通交流同样需要消耗计算资源
3 CPU与GPU
近年来GPU加速计算很火热,尤其在数据处理、人工质量等领域,仿佛没有GPU就没法开展工作一样。GPU在显卡中,在以前GPU主要负责图形处理和图形输出,不过近年来GPU并行处理算法不断成熟,很多的CAE软件中也都加入了GPU加速功能。
CPU的内核数量比较少,我们常见的单颗CPU通常为4核、6核、8核、16核,再土豪也不过数十核心。而GPU不同,像普通的台式机显卡GTX1060都拥有GPU核心1280个。
CPU内核数量比较少,擅长一些逻辑运算,有高速缓存,可以提高数据访问的速度。GPU接受来自CPU的指令,有大量的内核,而且是并行计算的,能够完成大规模的数值运算。
虽然CPU的内核少,但每个内核的性能要远强于GPU的内核。前者每个内核都是精英,后者采用的是人海战术,三个臭皮匠顶个诸葛亮。
CPU和GPU有着不同的分工,无法相互替代。CPU更擅长分支预测,而GPU擅长大量数据运算。
NVDIA的官网中,有个很形象的视频来对比CPU和GPU的区别,非常有趣,也很经典。
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册