User Tools

Site Tools


Sidebar

strutture:cnaf:cnaf_rd:infrastruttura:utilizzo_cluster:job_mpi

Table of Contents

Job MPI

Intel MPI

Programma di test:

#include "mpi.h"
#include <stdio.h>
#include <string.h>
 
int
main (int argc, char *argv[])
{
    int i, rank, size, namelen;
    char name[MPI_MAX_PROCESSOR_NAME];
    MPI_Status stat;
 
    MPI_Init (&argc, &argv);
 
    MPI_Comm_size (MPI_COMM_WORLD, &size);
    MPI_Comm_rank (MPI_COMM_WORLD, &rank);
    MPI_Get_processor_name (name, &namelen);
 
    if (rank == 0) {
 
	printf ("Hello world: rank %d of %d running on %s\n", rank, size, name);
 
	for (i = 1; i < size; i++) {
	    MPI_Recv (&rank, 1, MPI_INT, i, 1, MPI_COMM_WORLD, &stat);
	    MPI_Recv (&size, 1, MPI_INT, i, 1, MPI_COMM_WORLD, &stat);
	    MPI_Recv (&namelen, 1, MPI_INT, i, 1, MPI_COMM_WORLD, &stat);
	    MPI_Recv (name, namelen + 1, MPI_CHAR, i, 1, MPI_COMM_WORLD, &stat);
	    printf ("Hello world: rank %d of %d running on %s\n", rank, size, name);
	}
 
    } else {
 
	MPI_Send (&rank, 1, MPI_INT, 0, 1, MPI_COMM_WORLD);
	MPI_Send (&size, 1, MPI_INT, 0, 1, MPI_COMM_WORLD);
	MPI_Send (&namelen, 1, MPI_INT, 0, 1, MPI_COMM_WORLD);
	MPI_Send (name, namelen + 1, MPI_CHAR, 0, 1, MPI_COMM_WORLD);
 
    }
 
    MPI_Finalize ();
 
    return (0);
}

Compilazione:

$ module load ips-xe-2013 intel-mpi
$ mpiicc -o test test.c

LSF

Esempio di job LSF che fa utilizzo di Intel MPI:

#BSUB -J impi		        # Job name	
#BSUB -o %J.out			# Job standard output
#BSUB -e %J.err			# Job standard error
#BSUB -N			# Job report
#BSUB -B			# Send mail
#BSUB -q normal			# Job queue
#BSUB -a intelmpi               # Application
#BSUB -m rd-coka-02             # Host selection
#BSUB -n 10                     # Number of process
#
# commands
module load ips-xe-2013 intel-mpi
mpirun.lsf /home/GUEST/mcaberletti/test_intel_mpi/test

Salvare in un file, ad esempio impi.job e sottometterlo con:

$ bsub < impi.job

Slurm

Con Slurm occorre tenere presente che il comando sbatch non fa lo spawn di processi, ma riserva solamente le risorse. Per questo occorre indicare il numero di processi Esempio di job:

#!/bin/bash
#SBATCH -J test_impi                                    # Job name
#SBATCH -p coka-test                                    # Queue
#SBATCH -e %J.err                                       # Stderr
#SBATCH -o %J.out                                       # Stdout
#SBATCH -n 10                                           # Task number
#SBATCH -w rd-coka-[01-02]                              # Host selection
#SBATCH -D /home/GUEST/mcaberletti/test_intel_mpi       # Working dir
#SBATCH --mail-type=ALL                                 # Send all notification via mail
#SBATCH --mail-user=mcaberletti@rd-ui
 
# commands
module load ips-xe-2013 intel-mpi
srun ./test

Salvare in un file, ad esempio impi.job e sottometterlo con:

$ sbatch impi.job
strutture/cnaf/cnaf_rd/infrastruttura/utilizzo_cluster/job_mpi.txt · Last modified: 2013/11/22 14:44 by caberletti@infn.it