如何将GNU Parallel用于小型MPI作业

时间:2016-10-18 21:31:56

标签: parallel-processing mpi multicore gnu-parallel

我目前正试图在群集上平行几个小的mpi作业,即群集上的每个节点都有16个核心,每个mpi作业最多使用4个核心,因此我想使用GNU Parallel来平行4个MPI通过使用4x4 mpi作业我可以完全使用16个核心的作业,我尝试使用以下2个脚本:

par_mpi.pbs:

#!/bin/bash
NPROCS=16 #use 16 cores
NJOBS=4   #4 small mpi jobs

export WDIR=/work/user/smallmpi
parallel -j $NPROCS --slf $PBS_NODEFILE --workdir $WDIR ./cmd_mpi.sh ::: seq 1 $NJOBS

在cmd_mpi.sh中,我使用4个进程定义了对mpirun的调用:

#!/bin/bash
WDIR=/work/fchen14/gpar/openmp
cd $WDIR
mpirun -np 4 ./mpi_lp #This is the mpi executable

然而,当我运行此脚本时     bash par_mpi.pbs 然后使用“top”命令监视所有内核的CPU使用情况按1,似乎只使用了4个CPU而其余的CPU都处于空闲状态:

top - 16:18:27 up 22 days,  4:24,  3 users,  load average: 9.36, 3.30, 2.07
Tasks: 688 total,  13 running, 675 sleeping,   0 stopped,   0 zombie
Cpu0  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  :  0.0%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.7%si,  0.0%st
Cpu5  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu8  :  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu9  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu10 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu11 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu12 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu13 :  0.3%us,  0.3%sy,  0.0%ni, 98.7%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu14 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu15 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

有人能指出我的程序有什么问题,是否对GNU Parallel有任何基本的了解?欢迎提出任何建议。

非常感谢!

0 个答案:

没有答案