浅谈阿姆达尔定律!不太明白的看这里!

flowersmokes122 2007-12-29 12:16:48
其内容为:速度的提升受程序中串行部分的限制,所谓串行部分,是指程序中不能并行执行的部分。现在让我们看一个简单的例子。有一个程序由五个部分组成,每个部分占用 100 个单位时间。这里,我们假设第一部分、第三部分和第五部分是串行的,其中不包含任何并行处理。我们又假设第二部分和第四部分含有数据和任务并行处理。执行这个程序最初需要 500 个单位时间。如果我们改变第 2 部分和第4 部分的运行方式,让它们在两个处理器上运行,则这两个部分只需要 50 个单位时间。如此一来,执行整个程序只需要 400 个单位时间,也就是说,速度提高了 25%。我们继续假设有 4 个处理器,则第 2 部分和第 4 部分的执行时间缩短为 25 个单位时间,让我们再来看看速度的提升。由于我们有四个处理器处理同样的工作,这两个部分的执行时间变为 25 单位时间。这样一来,整个程序的执行时间就缩短到了 350 个单位时间,也就是说,速度提升了 40%。

现在,阿姆达尔定律的重点在于,串行部分的执行时间不会缩短。试想一下,我们有许多处理器,可以把那两个部分的执行时间缩短到几乎为零。但因为有串行部分的存在,整个程序的执行时间仍为 300 个单位时间。这就是阿姆达尔定律的关键所在。从根本上说,您将受到程序代码中串行部分的限制。如果用阿姆达尔定律来预测这个简单的例子,结果是无论您有多少处理器,您最多只能把速度提高 70%。
...全文
956 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
denghui0815 2008-10-16
  • 打赏
  • 举报
回复
串行部分的存在 主要是因为数据依赖
优化的极限就是 认为并行部分不需要时间 只计算串行的时间
你的例子就是3个串行 极限为300
intel_iclifort 2008-10-16
  • 打赏
  • 举报
回复
简单地说, 如果原程序的执行时间是 1, 无法并行的部分需要花费的时间是 p, 那么你能得到的理论最大加速比只能是 1/p.

这个结果和你使用多快速度的处理器(核), 多少个处理器(核)无关.
intel_www 2008-10-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 MaChunCheng 的回复:]
可以每个串行部分都用多个处理器呢
[/Quote]

能用多个处理器就不叫串行部分了呀。
MaChunCheng 2008-10-13
  • 打赏
  • 举报
回复
可以每个串行部分都用多个处理器呢
OpenHero 2007-12-30
  • 打赏
  • 举报
回复
intel的一本书上有详细的讲解,好象是多线程编程 那本书

566

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧