Instrucciones de Acceso ONLINE

1. Dirección IP

La dirección IP y demás datos de acceso se te enviarán cuando se te autorice el acceso al clúster. También cabe hacer mención que solo podrás conectarte a él, si estás dentro del rango de direcciones IP de la UAEMex.

2. Acceso al servidor con terminal SSH

SSH en un Shel seguro que permite la comunicación entre tu máquina local y un equipo de cómputo remoto. En las siguiente secciones se mostrará como ingresar desde el sistema operativo Linux (cualquiera de sus variantes) o desde Windows.

2.1 Acceso con Linux

Debes de abrir la terminal, o consola de tu equipo, ejecutar el comando “ssh” el cual invocará al cliente ssh en tu equipo. Si no cuentas con el, revisa la documentación de tu sistema operativo para instalarlo.

Una vez abierta la terminal, escribir la siguiente línea, donde el símbolo arroba (@) separa el nombre de usuario de la dirección IP del equipo, y el argumento “-p” especifica el puerto por el cual te comunicarás con el clúster.

$ ssh usuario@dirección_ip_servidor -p Puerto_de_conexión

Después, se solicitará su contraseña. Si esta es introducida correctamente, ingresarás al sistema en donde podrá empezar a trabajar, usando comandos de Linux. Aquí, cabe hacer notar que te encuentras conectado al nodo maestro, donde podrás empezar a enviar trabajos al clúster.

2.1.1 Acceso a los nodos esclavos

A parte de ello, se puede uno conectar a los nodos esclavos, después de hacer el login al nodo maestro de la siguiente forma desde la terminal:

$ ssh usuario@compute-0-0

Con lo cual ingresarás al nodo esclavo 0, recuerda que tienes que intercambiar la palabra usuario, por tu nombre de usuario. Los nodos disponibles son:

compute-0-0
compute-0-1
compute-0-2

Aquí, es sumamente recomendable que no ejecuten programas en el nodo maestro, más adelante se muestra la forma de enviar trabajos para ser ejecutados en el nodo maestro para que este los distribuya en los nodos esclavos a través de scripts de Linux y SGE.

Así mismo debes notar, que independientemente de la forma de conexión inicial, ya sea desde Windows o Linux, una vez que haces el login inicial, te encontrarás trabajando en el sistema operativo Linux, para este caso, Centos, y después tendrás que aplicar los comandos antes mencionados si deseas ingresar a alguno de los nodos esclavos. Por la forma en la que está estructurado el clúster, no puedes ingresar directamente a un nodo esclavo, sin haber antes ingresado al nodo maestro.


2.2 Acceso con Windows

Si deseas ingresas usando el sistema operativo Windows, deberás tener un programa que te permita conectarte a través del protocolo ssh, puede haber diversos programas en la red para ello, el que te comentamos adelante, se llama “putty.exe” y lo puedes descargar fácilmente de Internet. Al abrirlo, te aparecerá una ventana similar a la siguiente: 


Figura 1. Putty

En el campo de Host Name debes poner la dirección IP del servidor y el puerto que se indico anteriormente, seleccionado una conexión ssh. También es posible que guardes estos datos para que no los escribas cada que ingresas al equipo, para ello puedes indicar un nombre en “Saves Sessions”, y a continuación dar clic seleccionar guardar. Posteriormente puedes dar doble clic en la sesión guardada, o seleccionar “Open” para iniciar con la comunicación, donde se solicitará tu nombre de usuario y contraseña.

Una vez ingresado al nodo maestro, podrás conectarte a los nodos esclavos si así lo deseas, para ello se te sugiere revisar la sección 5.1.1 arriba presentada.

2.3 Ingreso por primera vez

Cuando ingreses pro primera vez con ssh, o un programa FTP (adelante mostrado), te aparecerá una leyenda de advertencia indicado que te conectará a otro equipo y que esto puede implicar cierto riesgo, si deseas ingresar, deberás aceptar los términos, de lo contrario no podrás tener acceso. Los sistemas Linux son usualmente robustos y seguros ante ataques y virus, sin embargo siempre puede existir un nivel de incertidumbre en cuanto a ello, por eso, el clúster del Centro Universitario no ofrece ninguna garantía en cuanto a seguridad (dado que está enfocado para fines de Investigación) y es bajo el propio riesgo de quien ingresa y se conecta con él. Por lo que, se recomienda tener un respaldo de su información así como firewalls y antivirus actualizados en su sistema para mayor seguridad.


3. Acceso por FTP

Usualmente, se recomienda tener una sesión ssh y otra con un programa que nos comunique con el equipo remoto a través de un cliente FTP, el cual nos permite transferir archivos entre ambos equipos, es decir, el equipo local donde trabajamos y el equipo remoto. Por ejemplo, si quieres escribir tu código fuente en tu computadora local, lo puedes hacer, y posteriormente enviarlo al equipo remoto para compilarlo/ejecutarlo. También, si tienes que recopilar el resultados de tus simulaciones/experimentos, puedes usar este tipo de software (protocolos) para copiar los archivos del equipo remoto a tu equipo local, para un posterior análisis de ellos.

Existen diversos programas de este tipo en los sistemas operativos que puedes llegar a usar, por ejemplo, a continuación te damos un ejemplo para cada uno de los tres sistemas operativos más usados:


Linux: gFTP

Windows: WISCP

OS: Cyberduck


Los cuales son de libre acceso y los puedes descargar fácilmente desde Internet al igual que el programa putty. Al abrir el programa FTP en cuestión, te solicitará los mismos datos que al hacerlo con ssh: nombre de usuario, servidor, puerto y además, el protocolo con el que se conectarán, ahí es importante que seleccione SSH2 o SFTP (dependiendo del programa), en algunos les permite detectar automáticamente el protocolo de comunicación.

Si has ingresado correctamente los datos, te mostrará una advertencia de seguridad como la comentada en la sección 3.3, antes mostrada. Deberás de dar en aceptar si deseas ingresar al equipo remoto. Una vez conectado, dependiendo del programa usado, tendrás uno o dos paneles mostrando los directorios de archivos, donde uno de ellos será la computadora local y el segundo el equipo remoto. Si solo hay un panel, se asume que es el equipo remoto. Ahora, lo que tienes que hacer es arrastrar archivos de un panel a otro, o de una carpeta local al panel individual para empezar a copiar archivos entre los dos equipos.

Es recomendable que revises la documentación de tu programa para obtener el máximo de beneficios al trabajar con él.

4. Scripts para ejecutar en batch

Una ves que te conectas al nodo maestro, puede ingresar o conectarte a alguno de los nodos esclavos y poner a ejecutar tus programas, lo cual funcionaría como una maquina remota donde ejecutas tus programas/experimentos. Sin embargo, la funcionalidad de un clúster va más allá, y te permite ejecutar varios programas al mismo tiempo repartiendo la carga de trabajo entre todos los procesadores disponibles, lo cual puede acelerar enormemente el tiempo de ejecución de todos tus programas a ejecutar.

Como ejemplo sencillo, suponer que tienes que ejecutar 100 veces el mismo programa para efectos estadísticos. Asumiendo que tu programa tarda aproximadamente un día en terminar su ejecución (cómputo intensivo) en una máquina particular, tendrías que esperar 100 días para obtener los resultados, asumiendo que todos los ejecutas en un solo procesador. Por el contrario, si cuentas con un clúster que tenga 100 procesadores, al mandar a ejecutar esos 100 programas, a través de un script especial para ello, el clúster, en el mejor de los casos, ejecutará los 100 programas al mismo tiempo, y en un día aproximadamente (continuando con la idea anterior), pondrás obtener el resultados de todos ellos. Cabe destacar que esto no es cómputo paralelo, pero si entra en juego parte de cómputo distribuido, manejado internamente por el software de administración de procesos del clúster (SGE).

A parte de poder ejecutar de forma masiva cientos o miles de programas al mismo tiempo, dependido de la capacidad de cómputo, puedes mandar a ejecutar programas en paralelo a través de todo el clúster. A continuación se explica como debes formar dichos scripts para lograrlo, cabe destacar que este manual no esta hecho para dar una explicación detallada de los comandos de Linux, ni de cómo formar scripts y se recomienda ampliamente que el usuario se familiarice con ellos, los practique y aparte consulte documentación de Sun Grid Engine (SGE) para enviar trabajos al clúster, no obstante, la información aquí presentada será suficiente para empezar a trabajar con lo mínimo indispensable.

4.1 Ejecución en Batch

El siguiente cuadro muestra el contenido de un script de Linux construido para ejecutar un programa ejecutable que se llama holamundo, para este caso, donde se puede asumir que es un programa en el lenguaje de programación de C, y que fue compilado en el nodo maestro como “cc –o holamundo holamundo.c”, para casos prácticos le llamáramos script1.sh al archivo que deberá contener las líneas a continuación mostradas:


#!/bin/bash

#

#$ -cwd

#$ -j y

#$ -S /bin/bash

#
./holamundo


Una vez creado el archivo, podrás ejecutarlo de la siguiente forma desde la terminal, cuando estés conectado al nodo maestro:

$ qsub script1.sh


También deberá de tener cuidado de que el archivo sea ejecutable, si no te generará un error al tratar de ejecutarlo. No esta por demás recordarte, que todos los procesos que sometas al clúster deberán ser a través del comando qsub, de lo contrario puede saturar al nodo maestro y perjudicar a otros usuarios.


Podrían existir muchas formas de generar scripts que permitan someter al clúster cientos de programas al mismo tiempo, aquí te presentamos una forma de ello. A continuación se muestra un script al que llamaremos script_Todo.sh y asumiremos que queremos ejecutar el mismo programa varias veces, para este caso solo 3, en donde previamente hemos creado un script para SGE con las características particulares requeridas (el mencionado anteriormente). Así, lo que muestra este nuevo script (script_Todo.sh) es preguntar por la existencia de una carpeta llamada “res”, si existe, se elimina su contenido, si no, ésta es creada. Posteriormente se elimina el archivo ejecutable anterior, para evitar ejecutar una versión incorrecta, y se compila apropiadamente. Después, se pregunta si existe el archivo que esperamos se genere de dicha compilación, si éste existe, se someten 3 scripts previamente creados para ejecutar el programa deseado. Así mismo, se creo la carpeta “res”, y en general todo éste script, para fines demostrativos donde podríamos asumir que el programa holamundo deposita en dicha carpeta su resultado.


#!/bin/bash

pwd

if [ -e res ]

then

cd "res"

rm -f *.*

cd ..

else

mkdir res

fi

rm -f holamundo

cc -o holamundo holamundo.c

if [ -e holamundo ]

then

qsub script1.sh

qsub script2.sh

qsub script3.sh

else

echo 'error compiling file'

fi

Dado que cuando enviamos varios programas a ejecución, no es posible que podamos monitorear una salida en consola, es recomendable que se generen programas que preferentemente no den dicha salida, sin embargo, si eso no es posible, o para cuestiones de depuración, se puede re-direccionar la salida estándar a un archivo de texto como en el siguiente ejemplo donde estamos replicando el script1.sh:


#!/bin/bash

#

#$ -cwd

#$ -j y

#$ -S /bin/bash

#

./holamundo > salida1.txt






4.2 Ejecución de programas de openMPI
De forma estándar, se puede crear un script para ejecutar un programa ya compilado de openMPI, el siguiente ejemplo muestra la estructura que éste debe tener:




#!/bin/bash

#

#$ -cwd

#$ -j y

#$ -S /bin/bash

#

MPI_DIR=/opt/openmpi/

$MPI_DIR/bin/mpirun -np $NSLOTS -machinefile $TMP/machines /RUTA/MPIejecutable


Donde RUTA deberá ser intercambiado por la ruta donde se encuentra el archivo a ejecutar y MPIejecutable por el respectivo archivo a ejecutar. Para ejecutar éste script, es un poco diferente a los anteriores, donde deberás escribir en la terminal:

$ qsub -pe mpich No_Nodos script.sh

Donde No_Nodos deberá ser intercambiarlo por la cantidad de nodos o procesadores en los que quieres que se ejecute el programa de MPI, por ejemplo 10, y script.sh deberá ser tu script ejecutable que tiene el código antes mencionado.


4.3 Monitoreo de programas en ejecución

Despues de enviar tu trabjo(s) al clúster a través de SGE, estos entrarán en una cola de espera para ser ejecutados en el momento que algún procesador esté disponible. Para conocer el estado de tus trabajos en espera o ejecución, puedes ejecutar el comando:

$ qstat


El cual te regresara una salida con una configuración similar a la mostrada a continuación:



Figura 2. Salida del comando qstat

Donde se menciona el ID del programa, el usuario que le envío el proceso al clúster, el nodo en el que se ejecuta (en este caso no se muestra porque sigue en espera de ser ejecutado), entre otros parámetros.


4.4 Borrar un trabajo en la cola de espera

Al estar monitoreando el estado de tus trabajos enviados al clúster, puedes decidir cancelarlos, por ejemplo si está tomando demasiado en ser ejecutado, o si encontraste algún error en los parámetros del programa. Así, puedes borrar dicho trabajo habiendo previamente identificado su ID o número de proceso, el cual es el mostrado a la hora de enviar los trabajos al clúster, y también el mostrado en la primera columna, después de ejecutar qstat. Para borrar el trabajo, deberás escribir el número de proceso junto con el comando qdel de la siguiente forma:

$ qdel No_Proceso

Por ejemplo, si deseas borrar el proceso 24, deberás escribir ”$ qdel 24”, y en breve podrás monitorear con qstat, si este ay fue eliminado.


5. Publicaciones y Reconocimientos derivados del uso del Clúster

Si del uso que hagas del clúster del CUUAEM-VM, llegas a tener publicaciones científicas/tecnologías, premios, reconocimientos, ponencias o algún otro similar, se solicita se de crédito al equipo usado de la siguiente manera:


Agradecimientos (para trabajos escritos)


“Se agradece el tiempo de cómputo brindado por parte del Clúster del Centro Universitario UAEM Valle de México (CLU-CUUAEM-VM), de la Universidad Autónoma del Estado de México (UAEM) para llevar acabo los experimentos y/o simulaciones de éste trabajo.” (o su similar en Inglés; se puede editar este texto para dar el significado correcto, sin alterar más allá del 70% de la idea).


En algún otra modalidad, se puede dar dicho reconocimiento en la forma que aplique, siempre y cuando se citen las palabras antes mencionadas.

Así mismo, se solicita se envíe un correo electrónico a en donde se especifique la publicación o reconocimiento otorgado, esto para tener un registro de ello. Hay que tener en cuenta que se deben tener estadísticas de uso, de ahí que es importante tu colaboración, así mismo, con permiso del usuario y/o investigador a cargo del proyecto, es posible publicar un resumen de las investigación llevada acabo en el equipo.

6. Conductas inapropiadas y sanciones

El equipo de hardware y software instalada en el clúster del Centro Universitario es de uso para la comunidad Universitaria, siempre y cuando esté debidamente justificado. Por ello hay que tomar todas las medidas posibles para evitar fallos o caídas del sistema, así como virus o otros similares que puedan perjudicar a ustedes u otros compañeros de la comunidad. Toda conducta indebida será turnado a las autoridades correspondientes, para deslindar responsabilidades y sanciones, y se estará sujeto en todo momento a la Legislación Universitaria.