Gu´ıa pr´actica del usuario de aleph.eii.us.es Faustino Palmero Acebedo Grupo de F´ısica No Lineal. Universidad de Sevilla Resumen Este documento pretende ser una gu´ıa b´asica para el uso del cluster de computaci´on del grupo de F´ısica No Lineal de la Universidad de Sevilla. No se pretende escribir una gu´ıa exhaustiva donde se detallen el uso de compiladores, con todas sus opciones, programas como matlab, gesti´on avanzada de colas, etc.., simplemente se intentar´a, en pocas p´aginas, indicar las “recetas”m´ınimas necesarias para empezar a trabajar. 1. Introducci´on El cluster aleph.eii.us.es est´a formado actualmente por seis m´aquinas SUN, cada una de ellas con doble procesador AMD Opteron, y cada procesador con doble n´ucleo. En definitiva, para el sistema cada m´aquina aparece como un nodo de cuatro procesadores. Se ha instalado como sistema operativo una distribuci´on de Linux, basada en Red Hat, espec´ıfica para cluster HPC (High Perfomance Computing, es decir, en traducci´on libre, Supercomputaci´on), denominada “Rocks”. A su vez, est´an instalados compiladores de fortran, librer´ıas en paralelo, matlab (en una sola m´aquina), phyton, octave, y muchas cosas m´as. En principio una de las m´aquinas act´ua de nodo principal (aleph.eii.us.es), que en la nomenclatura del sistema operativo utilizado se denomina “frontend”. Esta m´aquina se encarga de gestionar el cluster y dar acceso desde y hacia el exterior al sistema. Aqu´ı est´a instalado matlab, y aqu´ı es donde se compila y se ejecutan programas de forma interactiva. Las otras cinco m´aquinas, que se denominan “computer nodes”, y a las que u´ nicamente se pueden acceder desde aleph, son nodos de computaci´on, denominadas compute-0-0 (o tambi´en c0-0, que es su segundo nombre o alias), compute-0-1 (con alias c0-1), y c0-2, c0-3 y c0-4, y en principio est´an destinadas a ejecutar programas mediante un sistema de colas. La memoria RAM de tres m´aquinas es de 4 Gb y de las otras tres 8 Gb. En concreto, aleph, c0-0 y c0-1 tienen ocho y c0-2, c0-3 y c0-4 tienen cuatro. En todo el texto, a la hora de indicar alg´un comando, utilizar´e este formato de letra. A su vez, todos los comandos en el cluter tienen un help, al que normalmente se accede tecleando $ man nombrecomando. Figura 1: Im´agenes del cluster en sus primeros tiempos, cuando s´olo ten´ıa tres nodos. 1 2. Acceso al cluster El nombre completo del cluster es aleph.eii.us.es, y s´olo se puede acceder desde el exterior al frontend. Una vez dentro es posible acceder a los nodos de computaci´on, aunque no se aconseja. Cada uno de los usuarios tiene una cuenta que se encuentra en el directorio /home/nombreusuario (es en este directorio donde uno se sit´ua cuando se accede al cluster). Cada usuario, a la hora de acceder a su cuenta, tiene que suministrar su nombre de usuario y su contrase˜na (password). 2.1. Acceso desde una m´aquina linux Supondremos que en la m´aquina local est´a instalado el comando ssh, que normalmente est´a instalado por defecto en las distribuciones linux. Aunque para acceder s´olo es necesario instalar el cliente ssh, si queremos copiar ficheros desde el cluster a nuestra m´aquina local hace falta que est´e instalado tambi´en en modo servidor. Desde una m´aquina linux es posible acceder al cluster. Simplemente hay que abrir una terminal y teclear el comando $ ssh -X [email protected] Normalmente se puede omitir la opci´on -X, ya que el comando ssh la tiene normalmente el por defecto, aunque no siempre es as´ı. Esto lo que hace es activar el modo gr´afico remoto. Podemos entonces teclear cualquier comando como $ firefox o $ gnome-session y lo veremos en nuestra pantalla en modo gr´afico. Evidentemente el sistema pedir´a vuestro password. Este mecanismo hace que el sistema se sobrecargue de trabajo y la comunicaci´on se hace m´as lenta, de manera que para lanzar unicamente ´ programas se aconseja utilizar $ ssh -x [email protected] que no permite el modo gr´afico remoto. Para copiar ficheros, por ejemplo el fichero pro.f de una m´aquina a otra se puede utilizar el comando scp. Desde el directorio donde se encuentra el fichero $ scp pro.f [email protected]:/home/nombreusuario/pro.f aunque el nuevo nombre, si es el mismo, se puede omitir. Si se pretende cambiar el nombre se puede indicar (en lugar de pro.f se escribir´ıa nuevonombre.nuevaextension). Este comando tiene un mont´on de opciones. Simplemente se˜nalar que, si se quiere copiar un directorio completo con todo lo que tenga dentro, se debe de incluir la opci´on -r. La copia de ficheros del cluster a nuestro ordenador local responde tambi´en a la misma estructura. Asumiendo que nuestro directorio de usuario en el nodo local est´a en /home/nombreusuario. $ scp pro.f [email protected]:/home/nombreusuario/pro.f Para salir, se debe de teclear, desde la terminal, el comando $ exit y ya est´a. Este es el procedimiento recomendado, ya que aunque normalmente el sistema desconecta autom´aticamente los procesos interactivos cuando se cierra la terminal, por ejemplo d´andole a la x de la esquina superior derecha, puede que se quede “colgado” alg´un proceso y evidentemente, muchos procesos “colgados” hace que la m´aquina vaya m´as despacio. 2.2. Acceso desde Windows Para acceder desde windows se aconseja utilizar un cliente ssh (se puede descargar desde el servidor de la Universidad) y, si se quiere utilizar el modo gr´afico un emulador de X (mandadle un correo a Juan, que os puede recomendar uno). El uso de este programa es bastante intuitivo y no me extender´e m´as en ello. 2 Figura 2: Cliente ssh. Activaci´on del X forwarding Si se quiere activar el modo gr´afico se tiene que marcar el X forwarding en el cliente ssh. Para ello, en las opciones del cliente ssh se tiene que se˜nalar la casilla correspondiente. En el emulador que puede descargarse en la Universidad, hay que seleccionar el bot´on de men´us edit − > settings, marcando tunnelling y su casilla, como aparece en al figura. En definitiva, para entrar u´ nicamente en modo texto con el ssh es suficiente. Si se quiere gr´aficos, hay que activar el X, que se quedar´a funcionando en segundo plano, y luego entrar con el ssh. Para comprobar que funciona, se puede teclear por ejemplo $ xclock, y saldr´a un bonito reloj en la ventana del X. Ya se pueden llamar a programas que se ejecutan en modo gr´afico. El cliente ssh tambi´en tiene un sistema para copiar ficheros de un sitio a otro que es muy intuitivo, y permite abrir m´ultiples ventanas (son las ventanitas que al poner el cursor sobre ellas indican “new terminal window” y “new file transfer window”). Para salir, hat que teclear exit en la pantalla de la terminal (procedimiento recomendado)o bien, en el men´u File elegir “ Disconnect”. Nota: Si quer´eis un sistema de ventanas similar al escritorio del windows, hay que teclear en la ventana de texto, con X funcionado en segundo plano: $ gnome-session. 3. Cambio del password Es importante que la primera vez que se acceda al cluster se cambie la contrase˜na por defecto. Para cambiar la contrase˜na, hay que teclear el comando $ passwd. Pedir´a el nuevo password y su confirmaci´on. 4. Comandos muy b´asicos de UNIX UNIX distingue las may´usculas de las min´usculas. CUIDADO. Visualizar los contenidos de un directorio: $ ls 3 Moverse por un directorio cd. Por ejemplo $ cd /home/palmero lleva al directorio palmero. El comando $ cd / nos lleva al directorio ra´ız del sistema. Para subir un nivel $ cd .. Crear un directorio $ mkdir nombredirectorio. Si uno se encuentra en otro directorio se debe indicar la ruta, por ejemplo $ mkdir /home/palmero/test crea el subdirectorio test en el directorio $ /home/palmero Copiar ficheros $ cp origen destino. Si se quiere u´ nicamente mover, sin guardar copia en el sitio original $ mv origen destino. Si en destino no se indica nombre se guarda con el nombre original. El car´acter * sirve como comod´ın, y para copiar por ejemplo un directorio recursivamente, con todo lo que contiene, se debe incluir la opci´on -r. Borrar un fichero rm nombrefichero.ext. Se puede indicar tambi´en toda la ruta de directorios hasta el fichero si uno no se encontra en el directorio del fichero en cuesti´on. Nota: Al entrar como usuarios, s´olo se pueden borrar los ficheros de ese usuario , los ficheros del sistema y de los otros usuarios “est´an a salvo” de posibles errores. Borrar un directorio $ rmdir nombredirectorio. Tambi´en se puede incluir la ruta completa. Para que se borre el directorio debe de estar vac´ıo. Si se quiere borrar un directorio con todo lo que contiene, lo primero que hay que hacer es TENER MUCHO CUIDADO CON ESTE COMANDO, y luego teclear $ rm -r nombredirectorio. Se puede incluir la ruta completa. Si salen muchos mensajes, se puede utilizar la opci´on -rf y ya no sale nada. Como editor de textos, se puede usar el vi en modo texto, aunque es bastante engorroso. En modo gr´afico recomiendo que el gedit. Para invocarlo $ gedit nombrefichero.ext. Por supuesto, con las X funcionando. En UNIX, si se tiene que teclear un nombre muy largo, escribiendo las primeras letras y d´andole al tabulador del teclado normalmente lo completa. Para ejecutar comandos en segundo plano, se indica al final de la l´ıneal el s´ımbolo &. Por ejemplo,$ gedit & abre el editor de textos y sigue permitiendo utilizar la terminal. Por supuesto que existen muchos comandos m´as. Recomiendo que se consulte una gu´ıa de linux, en Internet hay muchas. Por ejemplo, ten´eis una que, aunque antigua, est´a bien, es http://www.informatica.us.es/ ramon/articulos/IntroLinux.pdf. 5. Matlab El programa Matlab, en su versi´on 7.3, y junto con algunos toolbox, est´a instalado en la m´aquina aleph. Para ejecutarlo se puede hacer lo siguiente: Ejecuci´on en modo cl´asico, con todas las ventanitas, etc.. $ matlab (con o sin &, si quer´eis no bloquear la ventana). En modo texto, quitando toda esa parafernalia tan chula pero que consume un mont´on de recursos. $ matlab -nojvm. Tiene la ventaja de que si hac´eis una gr´afica, te la pinta sin problemas (con las X activadas), pero si no le hace falta no consume recursos generando ventanas gr´aficas que no se van luego a utilizar. 4 6. Compilaci´on de programas Fortran Supondremos que tenemos el programa en fortran llamado program.f90 y se quiere construir el ejecutable, es decir, hay que compilarlo (utilizar la extensi´on f90 para los programas fortran 90 es recomendable, aunque no imprescindible). Supondremos que est´a escrito en fortran90 est´andard, que no hace falta llamar a ninguna librer´ıa y que nos encontramos en el mismo directorio que el programa en cuesti´on. Para compilar con el fortran de intel, que parece que es el m´as competitivo de los fortran 90 gratis (y uno de los m´as competitivos de todos los fortran, incluyendo los de pago) hay que teclear, : $ ifort -O3 -ipo -no-prec-div -o program.out program.f90 y se genera el ejecutable (binario) program.out, pensando en que el tiempo de computaci´on sea el m´as peque˜no posible. Las opciones -ipo y no-prec-div no las tengo muy testeadas. La opci´on -O3 es para optimizarlo en velocidad. Siempre se puede compilar sin opciones de optimizaci´on s´olo con -o. Sugiero que uno busque por la red “recetas” de opciones de compilaci´on para el tipo de programas que uno est´a usando. Por supuesto que el compilador tiene un mont´on de opciones, que se pueden consultar tecleando $ man ifort. El compilador fortran de intel es gratis para uso personal no lucrativo, y la licencia est´a a mi nombre, v´alida y renovable por un a˜no. 7. Ejecuci´on de un programa Supondemos que tenemos un programa ejecutable (binario) program.out, que al ejecutarse lee un fichero de datos input.dat, y que necesita tambi´en el fichero parameters.param. La salida es un fichero de resultados output.dat y como condici´on adicional, en el programa, se trabaja con la variable de ambiente del sistema PROGRATMP donde se indica el directorio que el programa va a usar para almacenar informaci´on temporal. Evidentemente e´ ste es un caso muy general, lo normal es que tengamos u´ nicamente el binario, el input y el output. Supondremos que el binario, el input.dat y parameters.param est´an en el mismo directorio. 7.1. Lanzamiento de un programa en interactivo Para ejecutar el programa en interactivo, simplemente hay que hacer $ export PROGRAMTMP=/tmp $ ./program.out input.dat y el programa se ejecuta en el “frontend”. Se puede a˜nadir al final el s´ımbolo & y se ejecuta en segundo plano. Se recomiendo no cerrar la ventana mientras que se ejecuta, ya que se puede cortar el proceso, aunque en los tests que he realizado segu´ıa funcionando. Todo este proceso se puede hacer en cualquier nodo de computaci´on. Desde el frontend se puede entrar con ssh c0-1 o´ ssh c0-1 (no pide password). Desde all´ı se puede acceder al directorio de usuario (es un sistema de archivos com´un a todos los nodos del cluster) y ejecutar el programa. No obstante no se aconseja ejecutar programas de forma interactiva en los nodos de computaci´on. 7.2. Lanzamiento utilizando SUN GRID ENGINE (SGE) El sistema SGE facilita el trabajo de computaci´on, simplemente preparamos un archivo de lanzamiento (launching script), similar a los ficheros bat de windows, los mandamos a la cola y el sistema se encarga de llev´arselo al procesador m´as desocupado de un nodo de computaci´on, lo ejecuta y fin. Ahora mismo hay cuatro colas definidas: cola1, donde se encuentran los nodos c0-0 y c0-1, cada uno de ellos con 8 Gb de RAM y 4 n´ucleos. En total es posible trabajar en esta cola con 8 subprocesos como m´aximo. 5 cola2, donde se encuentran los nodos c0-2, c0-3 y c0-4, cada uno de ellos con 4 Gb de RAM y 4 n´ucleos. En total es posible trabajar en esta cola con 12 subprocesos como m´aximo. cola3, donde est´an todos los nodos y es posible trabajar con 20 subprocesos como m´aximo. No obstante, aqu´ı tenemos un sistema de m´aquinas algo distintas y, aunque en los tests que he hecho ha ido bien, puede ocasionar problamas sobre todo cuando los programas cogen mucha RAM. USAR ´ CON PRECAUCION. jesus, cola especial dedicada a Jes´us para que sus “inmensamente grandes” matrices no colapsen f´acilmente el cluster. Recomiendo utilizar cola1 y cola2. Cuando se tenga experiencia se puede pensar en usar la cola3, pero por ahora no lo aconsejo. Los pasos a seguir son los siguientes: 1. Preparaci´on de un archivo de lanzamiento, que llamaremos launch.sh, y que estar´a en el mismo directorio que el programa, etc.... Debe de contener las siguientes l´ıneas: #$-S /bin/bash #$-N program #$-cwd export PROGRAMTMP=/tmp ./program.out input.dat 2. Lanzamiento del proceso. Situado en el directorio correspondiente. $ qsub launch.sh que devolver´a una l´ınea de texto Your job 12 ("program") has been submitted y un n´umero, en este caso 12, que se asignar´a al proceso. Ese n´umero es importante, ya que servir´a para solicitar informaci´on sobre su ejecuci´on. 3. Comprobaci´on que el proceso est´a realmente en la cola $ qstat proporciona informaci´on sobre el proceso 4. Finalizaci´on, evaluaci´on y recolecci´on de resultados. Una vez terminado el proceso, se puede consultar informaci´on detallada sobre e´ ste, tecleando $qacct -j 12 En el directorio donde se encontraban los programas tendremos ahora los ficheros que ten´ıamos antes, el fichero output.dat y unos ficheros llamados program.e12 y program.o12, donde el fichero .o contien la salida en pantalla del programa y el .e los errores. 5. Si fuera necesario, para interrumpit un proceso, $ qdel 12 donde el n´umero es el n´umero del proceso. Se pueden incluir opciones m´ultiples y variados, incluso de que mande un correo electr´onico uando termine el proceso (y supongo que no ser´a complicado utilizar un ordenador local para conseguir que te mande un mensaje al m´ovil...). Recomiendo echar un vistazo al manual del comando qsub. 6 ´ 8. Lanzamiento de multiples trabajos Se pueden lanzar m´ultiples procesos “a lo bruto”, simplemente creando m´ultiples directorios, uno por cada ejecuci´on, copiando los ficheros correspondientes en cada directorio, y mandando a cola los distintos procesos. No obstante, es posible lanzar en un solo comando m´ultiples procesos en el cluster. En este caso los archivos de entrada, par´ametros y de salida deber´an diferenciarse usando mecanismos propios del programa que se va a ejecutar. Por ejemplo, suponiendo que nuestro programa va a ejecutar un estudio param´etrico, con tres ficheros de entrada input a.dat, input b.dat y input c.dat, con el mismo fichero parameters.param y mismo fichero de salida, se puede hacer el siguiente fichero program.sh: #$-S /bin/bash #$-N program #$-cwd #$-t 1-3:1 export PROGRAMTMP=/tmp inputs=([1]=input a.dat [2]=input b.dat [3]=input c.dat) ./program.out ${inputs[$SGE TASK ID]} Un truco para tener ficheros output.dat consiste en escribir la salida por pantalla, de manera que se generan los diversos ficheros .o. Tambi´en se puede complicar todo en el fichero sh, creand directorios, moviendo ficheros, etc..., a gusto del usuario. 9. Monitorizaci´on de procesos v´ıa web En la p´agina web de aleph (aleph.eii.us.es), y a costa de hacer que nuestros procesos sean p´ublicos, he habilitado el acceso web a las colas de ejecuci´on. Con cualquier navegador se puede acceder al cluster tecleando en la barra de direcciones http://aleph.eii.us.es/ganglia. Pinchando en cluster status se pueden monitorizar los procesos en modo gr´afico (hay que recargar de vez en cuando la pantalla ya que si no da resultados err´oneos). Por mi parte recomiendo seguirlos en una terminal en modo texto, aunque en verdad verlos en el navegador “impone” un poco m´as. 10. Programaci´on en paralelo Habr´ıa mucho que hablar... Os aconsejo que busqu´eis por Internet un manual de OpenMP, lenguaje de programaci´on para paralelizar de forma f´acil sistemas de memoria compartida. Creo que empezar por ˜ aqu´ı ser´ıa lo m´as pr´actico. Los fundamentos de OpenMP se APRENDEN EN UNA MANANA!!!. 11. M´as informaci´on y trabajo pendiente En la p´agina de alpeh (http://aleph.eii.us.es) voy a ir colocando informaci´on variada del cluster. En concreto, he colocado ficheros sh modelo para mandar diversos trabajos a cola, esta gu´ıa, etc. No obstante, todav´ıa queda MUCH´ISIMO............por hacer. . 12. Documentaci´on y contacto 1. Introducci´on a Linux: http://www.informatica.us.es/ ramon/articulos/IntroLinux.pdf. 2. Manual de rocks (bot´on de documentaci´on en la p´agina principal de aleph): http://aleph.eii.us.es/rocksdocumentation/4.2.1/ 3. Manual de uso de rocks (en espa˜nol): http://urania.udea.edu.co/facom/facom-products/documentation.php 7 4. P´agina principal de la distribuci´on Rocks: http://www.rocksclusters.org Contacto: Faustino Palmero Acebedo. E-mail: [email protected] 8
© Copyright 2024