我在集群上使用openMPI-1.6,集群上有8个节点,每个节点有8个内核。我正在使用此命令来运行我的应用程序。集群上的openMPI命令
/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'选项来发送到节点外部的通信。我理解正确吗?
我知道很难说不知道应用程序,但我要求一个通用的参数调整应该是独立于应用程序。