2010-10-10 3 views
0

J'utilise mpiexec pour exécuter un couple d'exécutables Hello World. Ils s'exécutent chacun, mais le nombre de processus est toujours 1 où il semble qu'il devrait y avoir 4 processus. Est-ce que quelqu'un comprend pourquoi? Aussi je ne suis pas sûr pourquoi stty me donne un argument invalide. Merci!MPI sur le cluster PBS Hello World

est ici la sortie:

/bin/stty: standard input: invalid argument 
    Hello world from process 0 of 1 
    Hello world from process 0 of 1 
    Hello world from process 0 of 1 
    Hello world from process 0 of 1 

Voici le fichier c:

#include <stdio.h> 
#include <mpi.h> 

int main(int argc, char *argv[]) 
{ 
    int rank, size; 
    MPI_Init (&argc, &argv); 
    MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
    MPI_Comm_size(MPI_COMM_WORLD, &size); 
    printf("Hello world from process %d of %d\n", rank, size); 
    fflush(stdout); 
    MPI_Finalize(); 
    return 0; 
} 

Voici le script de soumission:

#!/bin/bash 

#PBS -N helloWorld 
#PBS -l select=4:ncpus=2 
#PBS -j oe 
#PBS -o output 
#PBS -l walltime=3:00 
cd $PBS_O_WORKDIR 


mpiexec ./helloWorld 
+0

duplication possible de [MPI \ _Rank retour même numéro de processus pour tous les processus] (http://stackoverflow.com/questions/20287564/mpi-rank-return-same-process-number-for-all-process) –

Répondre

3

Steven:

ci-dessus devrait marcher; il ressemble à quelque chose le long de la ligne (PBS < -> bibliothèque MPI-> mpiexec) est mal configuré.

La première supposition la plus évidente - est le mpiexec le même programme de lancement mpi qui correspond à la bibliothèque que vous avez compilé? Si vous faites un which mpiexec dans votre script, obtenez-vous quelque chose qui correspond au which mpicc lorsque vous compilez le programme? Avez-vous besoin de faire quelque chose comme un "module load [mpi package]" avant de compiler?

De même, votre système mpiexec est-il compatible PBS? Sinon, vous devrez peut-être spécifier un fichier hôte ($ {PBS_NODEFILE}) et le nombre de processeurs. Quels sont les MPI que vous utilisez, et sur quel système travaillez-vous? Est-ce un système disponible publiquement avec une documentation que nous pouvons regarder?

+0

Quand j'exécute quel mpicc mpiexec je reçois/usr/bin/mpicc/usr/bin/mpiexec. Alors ça a l'air bien. Je ne suis pas sûr de savoir ce qu'est une "charge de module". Je suppose que je n'en ai pas? Je pense que le problème peut être que mon mpiexec n'est pas au courant de PBS. Cependant, je ne suis pas sûr de savoir comment spécifier un fichier hôte. Le système que je cours est privé, mais les pages de manuel pointent vers ce site Web pour la documentation: http://www.mcs.anl.gov/mpi/www –

+0

Ok. Le chargement de module est souvent utilisé sur les grands sites informatiques où plusieurs MPI sont installés; vous le sauriez si vous aviez besoin de l'utiliser. Si vous utilisez OpenMPI (mpiexec -V vous donnera des informations de version), la syntaxe est 'mpiexec -np 8 --hostfile $ PBS_NODEFILE./HelloWorld'. Si vous utilisez MPICH2 (mpich2version vous donnera un tas d'informations), la syntaxe devrait être 'mpiexec -f $ PBS_NODEFILE -np 8./HelloWorld'. Voyez si l'un ou l'autre donne de meilleurs résultats. –

+0

lors de l'exécution de mpiexec -version je reçois: Version 0.83, configurez les options: '--prefix =/usr' '--with-default-comm = mpich2-pmi' '--with-pbs =/usr/pbs' Version 0.83, configurez les options: '--prefix =/usr' '--with-default-comm = mpich2-pmi' '--with-pbs =/usr/pbs' (lorsque je lance mpiexec -V ou mpich2version Je n'obtiens rien. -V n'est pas une balise reconnue La commande mpich2version n'est pas trouvée Quand je localise mpich2version 'Je n'ai rien non plus.) Aucune de ces commandes n'a la bonne syntaxe. En outre, lorsque j'écho $ PBS_NODEFILE je n'ai rien. Je ne suis pas sûr si je devrais obtenir quelque chose. –