【小白的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通讯受限于网络传输速度,速度最慢。”小牛师兄解释道。
郑重申明
- 本系列根据真实经历改编,如有雷同实属巧合,请勿人肉
- 转载请务必保证文字完整
对系列感兴趣的朋友可微信扫描下方二维码,关注微信公众号第一时间接收文章更新。
【小白的CFD之旅】23 串行与并行的更多相关文章
- 【小白的CFD之旅】小结及预告
这是小白系列的索引,后续会继续更新. 已更新的部分 01 引子02 江小白03 老蓝04 任务05 补充基础06 流体力学基础07 CFD常识08 CFD速成之道09 初识FLUENT10 敲门实例1 ...
- 《小白的CFD之旅》招募写手
<小白的CFD之旅>系列招募写手. 由于工作繁忙,<小白的CFD之旅>系列更新缓慢,现招募志愿者写手.这是一个分享平台,欢迎各位愿意分享自己CFD学习经历的朋友们. <小 ...
- 【小白的CFD之旅】13 敲门实例【续3】
接上文[小白的CFD之旅]12 敲门实例[续2] 4 Results4.1 计算监测图形4.2 Graphics4.2.1 壁面温度分布4.2.2 创建截面4.2.3 显示截面物理量4.2.4 Pat ...
- 【小白的CFD之旅】12 敲门实例【续2】
接上文[小白的CFD之旅]敲门实例[续] 主要内容 3 Solution3.1 Solution Methods3.2 Solution Controls3.3 Monitors3.4 Report ...
- 【小白的CFD之旅】11 敲门实例【续】
主要内容: 接上文[小白的CFD之旅]10 敲门实例 2.4 Materials设置2.5 Cell Zone Conditions2.6 Boundary Conditons2.7 Dynamic ...
- 【小白的CFD之旅】01 引子
小白的CFD之旅 写在前面 CFD是计算流体力学的英文简称,是计算机辅助工程(CAE)的主要分支,目前广泛应用与科学研究.工程设计中.这是一门综合了数学.计算机及流体力学的综合学科,涉及到众多的专业理 ...
- GCD中的dispatch_sync、dispatch_sync 分别与串行、并行队列组合执行小实验
平常开发中会经常用gcd做一下多线程任务,但一直没有对同步.异步任务在串行.并行队列的执行情况做个全面的认识,今天写了个demo跑了下,还是有些新发现的. 代码如下: - (void)touchesB ...
- java面试一日一题:再谈垃圾回收器中的串行、并行、并发
问题:请讲下java中垃圾回收器的串行.并行.并发 分析:该问题主要考察在垃圾回收过程中垃圾回收线程和用户线程的关系 回答要点: 主要从以下几点去考虑, 1.串行.并行.并发的概念 2.如何考虑串行. ...
- 【小白的CFD之旅】09 初识FLUENT
按黄师姐的推荐,小白回头查找起 FLUENT的资料来.通过网络及图书馆查找相关资料,小白对于FLUENT有了基本的认识. FLUENT是一个CFD软件包,目前隶属于ANSYS公司 目前FLUENT的最 ...
随机推荐
- 转:Ogre源码分析之Root类、Facade模式
Ogre源码分析(一)Root类,Facade模式 Ogre中的Root对象是一个Ogre应用程序的主入口点.因为它是整个Ogre引擎的外观(Façade)类.通过Root对象来开启和停止Ogre是最 ...
- Highcharts X轴纵向显示
xAxis: { categories: ['苹果', '橘子', '梨', '葡萄', '香蕉'], labels:{ rotation: 90, style:{ fontSize: '13px', ...
- Oracle用分区表分区交换做历史数据迁移
一. 说明: OLTP库中有些表数据量大,且每月有持续的大量数据添加.因为历史数据在此库中不再做訪问,而是在另1个OLAP库中做分析.所以会对历史数据迁移至OLAP库中.对这样的历史数据迁移的操作.较 ...
- spring事务——try{...}catch{...}中事务不回滚的几种处理方式
当希望在某个方法中添加事务时,我们常常在方法头上添加@Transactional注解 @ResponseBody @RequestMapping(value = "/payment" ...
- C-pthread_cond_wait 详解
pthread_cond_wait() 用于阻塞当前线程,等待别的线程使用 pthread_cond_signal() 或 pthread_cond_broadcast 来唤醒它. pthread_c ...
- MATLAB 的循环语句
1.MATLAB while循环语法 在MATLAB 中 while循环的语法如下: while <expression> <statements> end while 循环反 ...
- windbg !logexts(自带的监控API)
Logexts.dll windbgth自带了跟进API的功能,这样我们可以方便的跟踪整个API的调用具体的示意图如下: !logexts.logi 将Logger注入目标程序,初始化监控,但是并不开 ...
- HTML页面中显示HTML标签<xmp>
最近做东西遇到一个HTML页面中显示HTML标签的需求,比如要显示</span> 解决方法如下 HTML页面中显示HTML标签代码,可以使用<xmp>html标签内容</ ...
- C语言中 不定义结构体变量求成员大小
所谓的求成员大小, 是求成员在该结构体中 用 sizeof(结构体名.结构体成员名) 求来的. 很多时候我们需要知道一个结构体成员中的某个成员的大小, 但是我们又不需要定义该结构体类型的变量(定义的话 ...
- JAVA环境变量的脚本
简单的一个脚本,用于自动设置环境变量.把代码拷贝,另存为javaEnv.bat.安装完Java 2 SDK之后,开一个命令行窗口,输入javaEnv java2SDKDir(java2SDKDir是你 ...