MPI在一台机器上的可扩展性

MPI在一台机器上的可扩展性,mpi,scalability,Mpi,Scalability,我在一台机器上遇到了一个关于MPI解算器可伸缩性的问题。我想做二十个矩阵求和。这项工作通过两种方式完成: 1.MPI启动20个任务,每个任务对一轮进行一个矩阵求和。 2.MPI启动2个任务,每个任务每轮进行一次矩阵求和,并进行10轮计算。不同的任务在不同的回合之间同步。 记录两种方式每轮矩阵求和的CPU时间。CPU时间不包括内存分配和释放,也不包括矩阵创建。 正如我所期望的,每轮CPU时间在两种方式上应该是相同的,因为每个任务在每轮中只计算一个矩阵求和,并且任务之间没有通信,例如,每个任务的计算

我在一台机器上遇到了一个关于MPI解算器可伸缩性的问题。我想做二十个矩阵求和。这项工作通过两种方式完成: 1.MPI启动20个任务,每个任务对一轮进行一个矩阵求和。 2.MPI启动2个任务,每个任务每轮进行一次矩阵求和,并进行10轮计算。不同的任务在不同的回合之间同步。 记录两种方式每轮矩阵求和的CPU时间。CPU时间不包括内存分配和释放,也不包括矩阵创建。 正如我所期望的,每轮CPU时间在两种方式上应该是相同的,因为每个任务在每轮中只计算一个矩阵求和,并且任务之间没有通信,例如,每个任务的计算是独立的。这意味着该解算器的可伸缩性应该是完美的


但第一种方式(20个MPI任务)的CPU时间是第二种方式(2个MPI任务)CPU时间的十倍以上。可能的原因是什么?它与内存中的缓存有关吗?

矩阵的大小?如果在64x64下,线程切换开销可能会更大。10000x1000,但它是一个约100000个非零元素的稀疏矩阵。什么是线程切换?我认为不同的任务是完全独立的,所以不需要线程切换。一台机器有多少内核?你是如何测量CPU时间的?您使用的是什么定时例程?16核32线程,我通过时钟()测量CPU时间;甚至我在两轮中尝试了10项任务。对于2个任务,CPU时间仍然是CPU时间的4倍以上。