并行程序两个定律

并行程序两个定律

使用并行程序的目的:

  1. 为了获得更好的性能
  2. 由于业务模型的需要,需要多个执行实体

Amdahl定律

Amdahl定律定义了串行系统并行化后的加速比的计算公式和理论上限
加速比定义:加速比=优化前系统耗时/优化后系统耗时
加速比越高,表明优化效率越高
推导公式:
n:处理器个数
T:时间
T1:表示优化前耗时(只有一个处理器时的耗时)
Tn:使用n个服务器优化后的耗时
F:程序中只能串行执行的比例
在这里插入图片描述
当cpu处理器数量趋于无穷大的时候(理想化),加速比=1/F,加速比跟系统串行率成反比,所以就是串行率越低,则优化效果越好
程序当中的串行行为会影响系统的速度,仅仅增加CPU处理器数量不一定能起到有效的作用,也要提高系统内并行化的模块比重
增加cpu处理器数量意味着投入的资本需要更多,所以需要在一定的cpu数量下,合理增加并行处理器数量,如果只提高cpu数量,而不降低程序的串行化比重,也无法对系统性能有多大的提高

Gustafson定律

推导公式:
在这里插入图片描述
当串行比例很小,并行比例很大,那么加速比就是处理器的个数

两个定律是否互相矛盾

两个理论的结论不同,但是并不是说其中一个是错误的,只是偏重点不同
Amdahl强调:当串行比例一定时,加速比是有上限的,不管有多少个CPU参与计算,都不能突破这个上限
Gustafson强调:如果可被并行化的代码所占比重足够多(串行比重小),那么加速比就能睡着CPU的数量线性增长
理想状态下(几乎不可能):

  1. 系统没有可被串行化的代码(即F=1,全部串行),加速比就是1(没有提高系统性能)
  2. 系统中可串行代码比重达到100%(即F=0,全部并行),加速比就是n(处理器个数)

参考书籍

《Java高并发程序设计》-------------------------葛一鸣,郭超著

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Traceback (most recent call last): File "paddle\fluid\ir.py", line 24, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "paddle\fluid\proto\pass_desc_pb2.py", line 16, in <module> ModuleNotFoundError: No module named 'framework_pb2' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "main.py", line 1, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "index.py", line 7, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "leis\jietuwj.py", line 8, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "paddleocr\__init__.py", line 14, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "paddleocr\paddleocr.py", line 21, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "paddle\__init__.py", line 62, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "paddle\distributed\__init__.py", line 15, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "paddle\distributed\spawn.py", line 24, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "paddle\distributed\utils\launch_utils.py", line 27, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "paddle\distributed\fleet\__init__.py", line 31, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "paddle\distributed\fleet\fleet.py", line 33, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "paddle\fluid\ir.py", line 28, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "paddle\fluid\proto\pass_desc_pb2.py", line 16, in <module> ModuleNotFoundError: No module named 'framework_pb2' [15508] Failed to execute script 'main' due to unhandled exception!
05-11

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值