Script RSL

Back to    Contents

Previous : mpirun   Next :  globusrun   Up to : Usare MPICH-G2


Quando  non e' possibile utilizzare direttamente il comando mpirun per l'ambiente di esecuzione sui vari hosts e' troppo eterogeneo (es. eseguibili in directory diverse o con nomi diversi) si rende necessario scrivere  un proprio script RSL (Globus Resource Specification Language).  Riportiamo di  seguito una lista di caratteristiche che lo script RSL deve avere per funzionare bene con MPICH-G2 :

Il modo piu' semplice per scrivere  uno script RSL e' comunque quello di modificarne uno gia' fatto da mpirun. Con il comando :

/usr/local/mpich-g2/bin/mpirun -dumprsl -np 6 myprog 123 456 > myprog.rsl


si ottiene lo script RSL che userebbe mpirun, ma senza eseguirlo e redirezionandolo in un file di testo. Il risultato sara' simile a questo :


+
( &(resourceManagerContact="cluster.unipr.it")
   (count=2)
   (label="subjob 0")
   (environment=(GLOBUS_DUROC_SUBJOB_INDEX 0)
                (LD_LIBRARY_PATH /usr/local/GlobusToolkit2.2/lib/)
                (GLOBUS_HOSTANAME cluster.unipr.it))
   (arguments=" 123 456")

   (directory="/home/cattani/")
   (executable="/home/cattani/myprog")
)
( &(resourceManagerContact="pp4.ce.unipr.it")
   (count=2)
   (label="subjob 1")
   (environment=(GLOBUS_DUROC_SUBJOB_INDEX 1)
                (LD_LIBRARY_PATH /opt/GlobusToolkit2.2/lib/)
                (GLOBUS_LAN_ID 0))

   
(arguments=" 123 456")
   (directory="/home/Ildico/cattani/globus")
   (executable="/home/Ildico/cattani/globus/myprog")
)
( &(resourceManagerContact="pp2.ce.unipr.it")
   (count=2)
   (label="subjob 2")
   (environment=(GLOBUS_DUROC_SUBJOB_INDEX 2)
                (LD_LIBRARY_PATH /opt/GlobusToolkit2.2/lib/)
                (GLOBUS_LAN_ID 0))

   (arguments=" 123 456")
   (directory="/home/Ildico/cattani/globus/")
   (executable="/home/Ildico/cattani/globus/myprog")

questo utilizzando un file machines di questo tipo :

"cluster.unipr.it" : 2
"pp4.ce.unipr.it" : 2
"pp2.ce.unipr.it" : 2



Oltre a consentire l'esecuzione di programmi MPI su sistemi diversamente configurati a livello di directory e path, gli script RSL permettono di effettuare una configurazione piu' profonda dell'esecuzione di globusrun,  e di sfruttare alcune funzionalita' particolari di MPICH-G2:

  1. Settare il range di indirizzi IP.  E' possibile specificare l'indirizzo di una interfaccia di rete o di un set di interfaccia con la variabile di ambiente MPICH_GLOBUS2_USE_NETWORK_INTERFACE.  Ad esempio :  (MPICH_GLOBUS2_USE_NETWORK_INTERFACE 140.221.8.0/24)
  2. Settare il range di porte TCP/IP.  E' possibile indicare a Globus un range di porte per effettuare le comunicazioni attraverso la variabile d'ambiente GLOBUS_TCP_RANGE. Questo puo' essere utile quando sia necessario passare attraverso un firewall in cui solo un certo range di porte puo' accettare connessioni dall'esterno.
  3. Settare il buffer TCP. Con la variabile di ambiente MPICH_GLOBUS_TCP_BUFER_SIZE si puo' impostare la dimensione del buffer TCP. Notare che le dimensioni dovranno essere le stesse per tutti i subjob.
  4. Comunicare ad MPICH-G2 che due subjob sono sulla stessa LAN. Per fare questo utilizzare la viariabile GLOBUS_LAN_ID.
  5. Indicare il nome dell'host. Questa possibilita' si e' rilevata determinante per poter eseguire i programmi con MPICH-G2 anche fuori della LAN di Parma2. Infatti e' possibile aggiungere allo script RSL una stringa per settare la variabile di ambiente GLOBUS_HOSTNAME che non viene prodotta automaticamnete da mpirun. Inizialmente tentando di eseguire job contemporaneamente sul cluster Parma2 che sul cluster al Centro di Calcolo ottenevamo errori di questo tipo :
    globusrun: pr_tcp.c:1548: outgoing_open: Assertion `rc == 0' failed.
    /usr/local/mpich-g2/bin/mpirun: line 192:  3111 Abortito                                                      ${GLOBUSBINDIR}/globusrun -mpirun 1 -w -f $globusrun_rsl_file


          Il problema e' scomparso aggiungendo la stringa (GLOBUS_HOSTANAME cluster.unipr.it) allo script, come riportato sopra.




Una volta che si e' ottenuto lo script RSL desiderato di puo' lanciare  l'esecuzione con :  

/usr/local/mpich-g2/bin/mpirun -globusrsl myprog.rsl



Previous : mpirun   Next :  globusrun    Up to : Usare MPICH-G2

Back to Contents