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
。我们可以设置e> P到我们想要的任何值,只剩下N要求解。然后确保N从上到下被P平均整除