并行与分布式计算导论(一)衡量并行程序好坏的指标

并行与分布式计算:衡量并行程序好坏的指标(一)

介绍

写给普通学习者: 本文及其后续系列是一套详尽的并行计算与分布式计算,openMP及MPI的入门教程

写给P大学子: 由于授课英语太塑料了,我的学术英语也太差了,并分导的课堂上我总是处于游离边缘。因此我特别在学习之余总结了并分导授课的主要内容(内容来自PPT和教材的阅读),以供后人使用。阅读本系列你将获得:

  • 罗老师并分导的全部知识点(还有分支去梳理考点噢)
  • 所有作业及其详解
  • 用半小时完成两小时塑料英语课堂的学习(ppt reader已经很过分了,用的还是塑料英语)

特别说明,由于Lecture1除了speedup怎么算什么solid的东西都没有,在这里就不着重写了

为了方便,下文将MPI与OpenMP并行程序设计:C语言版(By Michael J. Quinn)简称为教材

特别的,对于P大学子,推荐阅读完教材的第三章之后直接跳到第十七章去学OpenMP

Section 1 衡量并行程序好坏的指标

一言以蔽之,进行并行与分布式计算的原因就是把搬砖的工作分给10个人搬起来就比1个人快

我们很自然的关注快了多少——也就是加速比(Speedup)的问题

  • A m d a h l ′ s   L a w Amdahl's\ Law Amdahls Law
    S p e e d u p = o n e   t h r e a d   e x e c u t i o n   t i m e n   t h r e a d   e x e c u t i o n   t i m e = 1 ( 1 − p ) + p / n Speedup=\frac{one\ thread\ execution\ time} {n\ thread\ execution\ time}=\frac 1 {(1-p)+p/n} Speedup=n thread execution timeone thread execution time=(1p)+p/n1
    其中, p p p是程序可并行的部分( P a r a l l e l   f r a c t i o n Parallel\ fraction Parallel fraction), 1 − p 1-p 1p是程序仅串行的部分( S e q u e n t i a l   f r a c t i o n Sequential\ fraction Sequential fraction)

这个公式的内容和意义都是显然的

此外,我们还会很自然的关注另一个问题——假如我用一个人,干活的时间是二十四小时,用一千个人,干活的时间是二十三小时,那我不就是个有钱的凯子吗?——并行效率(Parallel Efficiency)

P a r a l l e l E f f i c i e n c y = o n e   t h r e a d   e x e c u t i o n   t i m e n ∗ ( n   t h r e a d   e x e c u t i o n   t i m e ) = 1 n ( 1 − p ) + p Parallel Efficiency=\frac{one\ thread\ execution\ time} {n*(n\ thread\ execution\ time)}=\frac 1 {n(1-p)+p} ParallelEfficiency=n(n thread execution time)one thread execution time=n(1p)+p1
这个公式简单来说就是作为一个老板,你不仅要考虑请一群人搬砖节约了多少时间,还要考虑为此你要雇多少人

猜你喜欢

转载自blog.csdn.net/Kaiser_syndrom/article/details/105059391