Parallel processing 尝试测试并行程序的弱伸缩性?
我试图理解并行编程环境中的弱伸缩性。我有一个并行矩阵乘法实现,我想测试弱伸缩性 我找到的最好的资源是: 这里,它说我们将使用函数Parallel processing 尝试测试并行程序的弱伸缩性?,parallel-processing,scaling,Parallel Processing,Scaling,我试图理解并行编程环境中的弱伸缩性。我有一个并行矩阵乘法实现,我想测试弱伸缩性 我找到的最好的资源是: 这里,它说我们将使用函数N^3/p=N_0进行缩放。其中N是输入大小,P是处理器的数量,N_0是我们为一个处理器使用的数据量(我们保持不变的值。使用这个公式,它表示当N_0=3250时,程序的运行时间表将如下所示 Cores N 4 5160 16 8192 64 13004 我想不出他们是如何推导出这些N的数的。我已经做了很多计算。有人能解释一下吗?请看
N^3/p=N_0
进行缩放。其中N是输入大小,P
是处理器的数量,N_0
是我们为一个处理器使用的数据量(我们保持不变的值。使用这个公式,它表示当N_0=3250
时,程序的运行时间表将如下所示
Cores N
4 5160
16 8192
64 13004
我想不出他们是如何推导出这些N的数的。我已经做了很多计算。有人能解释一下吗?请看这里的。我想这就是他们得到N^3/p公式的地方。基本上说,乘以NxN矩阵需要O(N^3)
时间。在P个进程之间拆分每个进程理论上需要N^3/P
时间
现在,让我们来看看他们是如何获得表中的数字的。请注意,如果您为表中的每个条目计算N^3/p
,您将获得N_0
的相对稳定值:
P N N^3/P
4 5160 3.435x10^10
16 8192 3.436x10^10
64 13004 3.436x10^10
他们是如何得到这些数字的?好吧,让我们从一个过程的N_0=3250
开始。这意味着N^3/p=3250^3/1=3.433x10^10
。现在我们有了每个过程需要做的工作量的起始值,我们可以通过遵循以下公式来增加这些数字:3250^3/1=N^3/p
。我们可以设置