Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 什么';并行成本和并行工作之间的区别是什么?_Performance_Algorithm_Optimization_Parallel Processing_Gpgpu - Fatal编程技术网

Performance 什么';并行成本和并行工作之间的区别是什么?

Performance 什么';并行成本和并行工作之间的区别是什么?,performance,algorithm,optimization,parallel-processing,gpgpu,Performance,Algorithm,Optimization,Parallel Processing,Gpgpu,我读过一篇论文,其中(并行)算法的并行成本定义为CP(n)=p*TP(n),其中p是处理器的数量,T是处理时间,n是输入。如果CP(n)近似为常数,即如果算法在同一输入上使用两个处理器而不是一个处理器,则该算法是成本最优的,只需要一半的时间 还有另一个概念叫做并行工作,我没有完全理解。 报纸说,它衡量的是执行并行行动的数量。 一个算法是工作最优的,如果它执行的运算量和它的顺序对应的运算量一样多(渐近)。成本最优算法总是工作最优的,但反之亦然 有人能解释一下并行工作的概念,并说明与并行成本的异同吗

我读过一篇论文,其中(并行)算法的并行成本定义为CP(n)=p*TP(n),其中
p
是处理器的数量,
T
是处理时间,
n
是输入。如果CP(n)近似为常数,即如果算法在同一输入上使用两个处理器而不是一个处理器,则该算法是成本最优的,只需要一半的时间

还有另一个概念叫做并行工作,我没有完全理解。 报纸说,它衡量的是执行并行行动的数量。 一个算法是工作最优的,如果它执行的运算量和它的顺序对应的运算量一样多(渐近)。成本最优算法总是工作最优的,但反之亦然


有人能解释一下并行工作的概念,并说明与并行成本的异同吗?

听起来并行工作只是对所有并行进程运行的指令总数的一种度量,但只对并行进程进行一次计数。如果是这样的话,那么它与平行成本方程中的时间项有更密切的关系。可以这样想:如果并行版本的算法运行的指令比顺序版本的多——这意味着它不是最优的,那么假设所有指令的持续时间相等,则必然需要更多的时间。通常,这些额外指令位于并行算法的开头或结尾,并被视为并行算法的开销。它们可以对应于额外的簿记、沟通或结果的最终汇总

因此,一个非工作最优的算法不可能是成本最优的。

另一种称为“并行成本”的方法是“上下文切换成本”,尽管它也可能来自不同线程之间的相互依赖性

考虑分类

如果您并行实现,其中每个线程只进行下一次比较,那么以“并行”方式运行它将有巨大的成本,到了这一点,它将本质上是算法的一个混乱的顺序版本,并且您的并行工作将本质上为零,因为大多数线程只等待大部分时间

现在将其与原始数组的每次拆分进行比较并实现一个线程-线程不需要来自其他线程的数据,而对于较大的起始数组,旋转这些线程的成本将由所做工作的并行性质来支付。。。如果系统具有无限的内存带宽。实际上,线程的数量不值得超过内存访问通道,因为通过共享对内存的顺序访问,线程之间仍然存在不可见的(从代码角度来看)依赖关系 我认为并行成本和并行工作是同一枚硬币的两面。它们都是加速的措施, 后者是支持前者的理论概念

长的

我们考虑n维向量相加作为一个易于并行化的问题,因为它可以分解成n个独立的任务。

该问题本质上是工作最优的,因为如果算法并行运行,并行工作不会改变,因此始终需要添加n个向量分量

考虑到并行成本,如果不在(虚拟)机器上执行该算法,则无法实现并行成本,在虚拟机器上会出现内存带宽不足等实际限制。因此,只有在硬件(或硬件访问模式)允许问题和时间的完美执行和划分的情况下,工作最优算法才能是成本最优的

成本最优是一个更强烈的需求,正如我现在意识到的,这只是另一个例子

在正常情况下,成本最优算法也将是工作最优的, 但是如果通过缓存、内存访问模式等获得的速度是超线性的,
i、 e.两个处理器的执行时间是预期的一半,而不是十分之一,因此执行更多工作的算法可能仍然是成本最优的。

为额外的上下文提供一个到论文的链接会很有帮助。你可以简单地“并行化”在一个处理器上运行任何顺序算法,并使所有其他处理器空闲。这是一个最优的工作,但它的并行成本比原始的顺序算法要低一倍,相当于处理器的数量。@b另一方面,这是一个讲座的私人脚本,所以我想我不应该发表它。看来作者的意思是,你的算法瘫痪是没有任何额外成本的。这并不总是正确的,例如,他们中的一些人需要额外的家务,如果他们不这样做,那么证明时间是最优的是微不足道的,如果不是,那么它仍然可以是成本最优的(近似值可能接近您想要的时间),谢谢您的评论和回答。我现在有了更好的理解,并添加了自己的详细答案。如果并行版本执行更多操作,但更好地利用缓存,它仍然可以是成本最优的,但不会是工作最优的,因为它执行更多指令。