我在一个集群上使用 openMPI-1.6,它有 8 个节点,每个节点有 8 个核心。我正在使用这个命令来运行我的应用程序。
/path/to/mpirun --mca btl self,sm,tcp --hostfile $PBS_NODEFILE -np $num_core /path/to/application
我进行了实验并获得了以下数据。
num node | num core per node | total core | exe time of application |
1 2 2 8.5 sec
1 4 4 5.3 sec
1 8 8 7.1 sec
2 1 2 11 sec
2 2 4 9.5 sec
2 4 8 44 sec //this is too slow
如您所见,最后一行(2 个节点,8 个内核)的执行时间比其他行慢。我假设使用多个节点会产生开销,但我没想到会出现这种指数级下降。
所以,我的问题是,在使用多个节点的集群上运行作业时是否缺少任何 openMPI 性能参数?我假设mca btl self,sm,tcp
参数自动使用共享内存选项进行节点内部的通信,并将使用“tcp”选项发送到节点外部的通信。我理解正确吗?
我知道在不了解应用程序的情况下很难分辨,但我要求进行一般参数调整,它应该独立于应用程序。