我试图确定我的模型的理想核心数(在此示例中,我使用xbeach但我在运行SWAN等其他模型时遇到了同样的问题)加速测试,即我使用mpiexec -n <np> mymodel.exe
内核/进程运行相同的代码<np> = 2, 4, 8, 12, 16, 18, 20, 24, 32, and 36
并查看需要多长时间。我多次运行测试,每次都有不同的结果 - 见图像
根据我的理解,MPI尝试在所有处理器之间均匀分配所有任务(因此让其他应用程序在后台运行可能会减慢速度)但我仍然感到困惑,为什么我要为SUCH提供大量的计算时间。具有相同内核/任务数的相同代码。为什么我的模型需要18分钟才能在18个核心上运行一次,然后在下次运行时需要128分钟?
我在Windows 10上使用MPICH2 1.4.1p1在具有2个NUMA节点的计算机上,每个节点有36个核心,因此任何潜在的后台任务都应该在剩余的核心/节点上轻松处理。它看起来我的内存不足。
总结一下我的问题是: