试图测试并行程序的弱缩放?

时间:2014-12-04 01:46:49

标签: parallel-processing scaling

我试图理解并行编程环境中的弱缩放。我有一个并行矩阵乘法实现,我想测试弱缩放。

我找到的最佳资源是:https://cseweb.ucsd.edu/classes/wi12/cse260-a/HW/A4/

在这里,它说我们将使用函数N^3 / P = N_0进行扩展。其中N是输入大小,P是处理器的数量,N_0是我们用于1个处理器的数据量(我们保持不变的值。使用此公式,它表示时间表在N_0 = 3250时,运行该程序的方式会有所不同。

Cores   N
4       5160
16      8192
64      13004

我无法弄清楚他们是如何为N推导出这些数字的。我尝试过这么多计算。有人可以对此有所了解吗?

1 个答案:

答案 0 :(得分:2)

请参阅此处查看computational complexity of matrix multiplication。我认为这是他们获得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 1个进程开始。意思是N^3/P = 3250^3/1 = 3.433x10^10。现在我们有了每个流程需要做的工作量的起始值,我们可以通过遵循这个公式来增加数字:3250^3/1 = N^3/P。我们可以将P设置为我们想要的任何内容,只留下N来解决。然后,确保N向上舍入为向下,以便P可以整除。