【小白的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的最 ...
随机推荐
- 查看Linux版本的命令
查看内核版本 [root@q1test01 ~]# cat /proc/version Linux version -.ELsmp (bhcompile@crowe.devel.redhat.com) ...
- windows7下安装apache+PHP5.3
Apache+PHP 安装与配置 最近在学习PHP,所以就在windows7下安装了PHP的开发环境.之所以没有选择集成的软件,如WAMP.AppServ等套件,是为了单独安装这些软件,有助于更加深入 ...
- 比较MessageListActivity使用不同的layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 使用Dockerfile文件构建基于centOS系统的nodejs镜像
实际示例: [root@node01 node]# ls dev-web dev-web.tar.gz Dockerfile node-v8.14.0-linux-x64.tar.gz package ...
- ios中core Plot (2)
#import "ViewController.h" @interface ViewController () //指定要画得view @property(nonatomic,as ...
- (原)linux下caffe模型转tensorflow模型
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7419352.html 参考网址: https://github.com/ethereon/caffe- ...
- 抗衡Win Linux全凭这些桌面环境
2012年01月25日 元老级桌面环境KDE Linux操作系统最早使用在服务器上,而桌面操作系统并不是Linux的重点突围.但是,近几年Linux桌面操作系统有崛起的趋势,抢夺了部分桌面操作 ...
- java unicode转码为中文 实例
package com.infomorrow.parser_report; import org.junit.Test; public class Decode { @Test public void ...
- Tensorflow CNN入门
一.概论 以图像识别来举例,比如我们让计算机如何识别一张猫的图片识别出猫呢? 老式的计算机视觉是如何做的呢? 比如OpenCV: 首先理解很多算法,比如如何检测线条(Edge Detection) 如 ...
- C#获取Web和非Web程序的目录
几种方法如下:非Web程序 1.AppDomain.CurrentDomain.BaseDirectory 2.Environment.CurrentDirectory 3.HttpRuntime.B ...