mpi-selector --list
man mpi-selector
mpi-selector --set <название>
Внимание: данная команда повлияет только на те сессии SSH, которые будут открыты после её выполнения. В текущей сессии используемая реализация не изменится, хотя команда
mpi-selector --query
будет отображать уже новое значение.
#include <mpi.h> #include <stdio.h> #include <unistd.h> int main(int argc, char** argv) { int size, rank; char host[32]; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&size); MPI_Comm_rank(MPI_COMM_WORLD,&rank); gethostname(host,32); printf("Hello, MPI world! I'm number %d from %d and I run on host %s.\n",rank,size,host); MPI_Finalize(); return 0; }
mpi-selector --set openmpi_gcc-1.4.3
which mpicc
/opt/shared/openmpi/1.4.3-gcc/bin/mpicc
mpicc -v
gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux)
mpicc hello_mpi_world.c -o hello_mpi_world.a
#!/bin/bash #PBS -l walltime=00:01:00 #PBS -l select=2:ncpus=4:mpiprocs=4:mem=2000m,place=free #PBS -m n cd $PBS_O_WORKDIR MPI_NP=$(wc -l $PBS_NODEFILE | awk '{ print $1 }') echo "Number of MPI process: $MPI_NP" echo 'File $PBS_NODEFILE:' cat $PBS_NODEFILE echo mpirun -hostfile $PBS_NODEFILE -np $MPI_NP ./hello_mpi_world.a
qsub submit.sh
13485.hpc-suvir1.hpc
'13485' - идентификатор нашей задачи.
Number of MPI process: 8 File $PBS_NODEFILE: cn04 cn04 cn04 cn04 cn39 cn39 cn39 cn39 Hello, MPI world! I'm number 1 from 8 and I run on host cn04. Hello, MPI world! I'm number 0 from 8 and I run on host cn04. Hello, MPI world! I'm number 3 from 8 and I run on host cn04. Hello, MPI world! I'm number 5 from 8 and I run on host cn39. Hello, MPI world! I'm number 6 from 8 and I run on host cn39. Hello, MPI world! I'm number 7 from 8 and I run on host cn39. Hello, MPI world! I'm number 2 from 8 and I run on host cn04. Hello, MPI world! I'm number 4 from 8 and I run on host cn39.