我遇到一台机器上MPI解算器的可扩展性问题。我想做二十个矩阵求和。这项工作以两种方式完成: 1. MPI启动了20个任务,每个任务对一轮进行一次矩阵求和。 2. MPI启动2个任务,每个任务每轮做一次矩阵求和,进行10轮计算。不同的任务在不同轮次之间同步。 对于两种方式,记录每轮的矩阵求和的CPU时间。 CPU时间不包括内存分配和释放,也不包括矩阵创建。 正如我所料,每轮的CPU时间以两种方式应该是相同的,因为每个任务只计算每轮中的一个矩阵求和,并且任务之间没有通信,例如,每项任务的计算都是独立的。这意味着这个解算器的可扩展性应该是完美的。
但第一种方式的CPU时间(20 MPI任务)是第二种方式(2 MPI任务)的CPU时间的十倍以上。可能的原因是什么?它与内存中的缓存有关吗?