gpt4 book ai didi

multithreading - 如何计算阿姆达尔定律的线程有效性

转载 作者:行者123 更新时间:2023-12-03 13:05:21 26 4
gpt4 key购买 nike

它很容易找到和理解阿玛达尔定律的函数定义,但是我能够找到的所有工作示例对于我的小豌 bean 脑来说太模糊或太学术/大脑。

阿玛达尔定律采用以下参数:F(无法通过多线程改进的任务百分比)和N(要使用的线程数)。

如何精确计算F

您如何看待一段代码,并确定是否可以通过多线程进行改进?

最佳答案

相对容易地说出代码的哪些部分肯定不会从多线程中受益:顺序部分。如果必须按顺序执行一系列小步骤,则多线程不会有帮助,因为您始终需要等待一个步骤完成才能开始下一个步骤。从这个意义上说,许多常见任务不是(有必要)按顺序进行的:例如,在列表中搜索许多项目。如果要从列表中提取每个红色项,则可以在多个线程中共享列表的一部分,并将每个部分中的所有红色项收集到最终结果列表中。并发编程的困难在于找到解决实际问题的有效方法。

在较低的层次上,您可以讨论数据依赖性:如果某个指令或块本身使用该块的计算结果,则该指令或块取决于前一个块。因此(伪代码):

Block one:
load r1 into r2
add r1 to r3 into r4


Block two:
load r4 into r1
add 3 to r4 into r4

第二块取决于第一块:它们必须按顺序执行。这里:
Block one:
load r1 into r2
add r1 to r3 into r4

Block two:
load r1 into r3
add 3 to r1 into r1

事实并非如此。这对并发不是直接有用,但是希望它能更具体地说明这一点。它还说明了处理并发性的另一个问题:由于抽象块的功能可以并行运行,但是在此处给出的具体示例中,它们正在读取/写入一些相同的寄存器,因此编译器/管道程序/无论需要做什么。做更多的工作,使他们一起运行。这都是非常复杂的,但是在 http://www.amazon.com/Computer-Architecture-Quantitative-Approach-Edition/dp/1558605967中涵盖得很漂亮。

哪些其他部分无法从多线程中受益,则取决于您的编程环境和计算机体系结构。

至于如何获得一个百分比,在实际案例中可能涉及一些挥舞之手-我怀疑您是否会得到一个准确的数字。如果将代码划分为功能单元,并分析每个功能单元的执行时间,那将为您提供大致适当的权重。然后,如果使用多线程可以改善占执行时间90%的部分,那么您可以说90%的“任务”可以得到改善。

关于multithreading - 如何计算阿姆达尔定律的线程有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10182559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com