给定一个并行程序和一个定义明确的硬件,如何确定其计算与通信比率(CCR)。这是为了确定程序的粒度和后续分析。文献描述了这个术语并使用它来与程序的粒度相关,但我还没有找到任何东西来估计 CCR 是高还是低。
问问题
2466 次
1 回答
1
要比较计算和通信,您必须使用一个通用单位来衡量两者。一般来说,我会用时间来衡量。然后您可能会发现程序的比率为 80:20(计算:通信)
虽然有人可能会断言 50:50 的比例对于交流来说是一个很高的价值,但这些数字实际上仅在与其他并行程序的可比数字相关时才有意义。因此,如果程序 A 和程序 B 解决了相同的问题,但 A 的比率为 80:20,而 B 的比率为 70:30,那么您可以声明 A 在时钟的每个滴答中比 B 执行的计算更多。如果他们没有解决同样的问题,您可能会发现自己在比较苹果和橙子。
虽然计算通常比通信更受欢迎,但这些因素也是相对的。给定程序 A 和 B,确定 B 确实(相对)进行了更多的通信,但也有可能 B 总体上比 A 花费的时间更少——也许 B 花时间在进程之间发送更大的消息,而 A 进行更多的重复计算以避免发送更大的消息消息。根据您喜欢的任何理由选择您喜欢的程序。
如果您对这些问题有足够的经验,您通常可以通过检查程序结构对比率做出一些有根据的猜测,但最终您将不得不对其进行测量以得出任何明智的结论。
于 2012-04-23T16:30:33.517 回答