【小白的CFD之旅】23 串行与并行
夏日的早晨,被酷热和蚊子骚扰了一夜的小白刚进入梦乡就被老蓝的电话给惊醒了。
“8点开会!”老蓝说话永远那么简短有力,根本不给人请假的时间就挂了电话。
小白一看时间,都7点半了,得,这懒觉睡不成了。小白跳下床,洗漱完毕往实验室奔去。
到了实验室才发现大伙儿已经早就到齐了,小白找了张椅子挨着小牛师兄坐下,发现小牛师兄满眼血丝,还在打盹儿。
“今天召集大家来呢,主要是因为负责项目的小秦毕业了,但这项目还没完成,需要安排一下人手,小牛是总负责,你来讲一下。”老蓝扫了众人一眼后说道。
小牛师兄站起身,走到投影仪前将要做的项目内容详细的介绍了一遍,小白第一次参加这种会议,只感觉小牛师兄的逻辑很清晰。
“现在这项目需要补充两个人,我觉得小白不错,这阵子学得挺快。还需要再找个人,小陈要不要参加?”小牛师兄说。
小陈名字叫陈曦,和小白同一年进入实验室,是个很有意思的小女生,长得很萌,之前一直在学习有限元仿真计算。
“嗯,可以啊,不过我学的是固体计算,不知道后面用不用得上。”陈曦说。
“后面肯定要用到的,你和小白合作,争取尽快把项目接过来,趁那帮研三的还没离校尽快上手”小牛师兄说道。
“还有个问题,咱们实验室的工作站需要升级了,需要加CPU和内存,后期我们采用并行计算加快进度。”小牛师兄对老蓝说。
“嗯,这个我来解决,你回头把型号和数量统计给我就行。没其他问题的话我们就到这里吧。”老蓝说道。
并行效率
会很快开完了,小白与众人一起返回实验室。
”师兄,前两天在网上看到个消息,说世界排名第一的超级计算机在中国,拥有几百万个CPU呢。“小白碰到小牛师兄说。
“没错,的确是在中国,咱们国家的超级计算机还是比较强的,不过俺们老百姓用不起啊。”小牛师兄说。
“CPU越多算的越快么?”小白问道。
“我们可以把CPU看做是一个个的人,那你觉得相同的一件事情,是人越多做得越快么?”小牛师兄反问道。
“这肯定不是噢,有的时候人多反而效率越低,比如说一个和尚跳水吃,两个和尚抬水吃,三个和尚没水吃。”小白说。
“就是这个理啊,CPU多了也是这样,并非CPU越多计算速度和效率越高,有时候反而下降。”小牛师兄说。
并行机制
“多个CPU到底如何同时工作的呢?”小白问。
“呃,这事情说起来其实有点儿复杂,如果你有兴趣的话,可以找一本并行程序设计的书看看。不过我们可以简单的八一八。”小牛师兄说。
“前面说过,我们可以将CPU比作一个个干活儿的人。如果你是任务发布者,你会怎么做呢?“小牛师兄问。
“直接把任务分解后分发给每一个人?”小白说。
“NO,你这样做的话会很麻烦。如果任务比较简单的话倒是可以,但是如果很复杂的短期内无法完成的任务就很麻烦。最常见的做法是:先给这个团队找个队长,然后将任务下发给队长,队长再将任务一层层的下发下去,这样在一个周期结束后,队长将队员的结果收集起来进行汇总,层层汇总上来,最终交到你的手里。对于庞大的工作任务,这种管理机制是经常使用的。“小牛师兄说。
“并行计算也是这样,通常在众多CPU中会有一个队长,专门负责在每一个周期内任务的下发与汇总。“
“并行计算通常这样运作:任务提交后,作为队长的CPU接受任务,并将任务分解后下发给各成员CPU,成员CPU接到自己的任务后进行计算求解,完毕后将结果上传给队长CPU,队长CPU收集所有的队员结果进行检查和汇总,之后进入下一个循环周期。”
并行劣势
“并行计算其实也有很多的麻烦事情要解决。最常见的就是CPU间的通讯。就像一群人合力办一件事,甲说要这么做,乙说要那么做,丙说不按他的方案的话就罢工,这可怎么办?本来一件事情两天就能做完,结果花三天时间进行沟通,事情还没开始干。并行计算也是这样,CPU队长收集队员的数据并进行数据汇总需要花费时间。“
“还有一些情况并不适合并行计算。比如说具有明显流程性的操作,一个任务的开始必须建立在另一个任务结束的基础上,对于此类工作则不适合并行计算。“
“正因为有诸多问题,因此利用N个CPU并不能获得N倍计算速度的提升,一般情况下1+1都小于2。”小牛师兄最后说。
单机多核与多机单核
“并行计算涉及到多个CPU,这些CPU可能位于一台或多台计算机上。现在单CPU拥有多个核心的情况已经非常普遍,而一台计算机上拥有几个CPU的情况在工作站上也很常见,这些有什么不一样么?”小白问。
“在本质上并没有什么不同,但是由于物理结构的不一样,计算效率相差比较大。通常CPU内部核心间带宽最大,通讯速度最快。而多路CPU间通讯次之,多机器互联的CPU通讯受限于网络传输速度,速度最慢。”小牛师兄解释道。
- 本系列根据真实经历改编,如有雷同实属巧合,请勿人肉
- 转载请务必保证文字完整
对系列感兴趣的朋友可微信扫描下方二维码,关注微信公众号第一时间接收文章更新。