KFRONT es una aplicación de consola escrita en Python para automatizar la administración y carga de trabajo en un cluster de monoprocesadores x86 bajo sistema operativo GNU/Linux y entorno LAM/MPI. Esta utilidad toma los comandos básicos de LAM y los ejecuta automáticamente para ahorrar tiempo en la modificación de los parámetros del cluster y envío de trabajo para ejecución.
El lenguaje de programación soportado por KFRONT es C, es decir, el programa del usuario debe estar escrito en lenguaje C. Asimismo, la versión actual de KFRONT no soporta programas que hagan uso de archivos suplementarios al ejecutable, por lo que deben ser copiados manualmente a cada uno de los nodos donde se ejecutará el programa.
Este repositorio contiene el código fuente de la aplicación KFRONT, algunos programas de ejemplo, un archivo de configuración de ejemplo y el manual de instrucciones de la aplicación. Se incluye además en este documento una guía básica de uso de KFRONT para aquellos usuarios que ya estén familiarizados con LAM y deseen explorar la aplicación por su propia cuenta.
La aplicación fue desarrollada utilizando un cluster particular para trabajos sencillos de MPI y, en consecuencia, la aplicación podría no adaptarse completamente a las necesidades de otro cluster.
- Configuración del cluster: permite modificar los parámetros del cluster (agregar, quitar, reordenar nodos)
- Iniciar LAM: arma archivo de configuración
lamhosts, lo copia al nodo maestro e inicia el entorno LAM (invocalamboot -v lamhosts) - Terminar LAM: termina el entorno LAM (invoca
lamhalt) - Compilar: compila el codigo fuente suministrado por el usuario en el nodo maestro (requiere que LAM esté activo)
- Copiar: copia el binario resultante de 4 a todos los nodos (requiere que LAM esté activo)
- Ejecutar: realiza 5 e invoca
mpirunen el nodo maestro (requiere LAM activo y que se hayan ejecutado 4 y 5) - Compilar y Ejecutar: realiza 4, 5, 6 automáticamente (requiere LAM activo)
- Salir: termina LAM (si está activo) y devuelve el control al operador de la consola.
- Reordenar nodos: toma un par de IDs de nodos e intercambia sus posiciones en la tabla de nodos del cluster
- Agregar nodo: toma una IP/nombre de un nodo, establece la conexión y lo agrega al final de la tabla de nodos, invocando
lamgrowsi LAM está activo - Quitar nodo: toma un ID de nodo y lo quita de la tabla de nodos, reiniciando LAM o invocando
lamshrinkcuando corresponda - Cambiar estado de nodo: toma un ID de nodo y modifica el estado (activo/inactivo) en la tabla de nodos
- Reasignar maestro: toma un ID de nodo y lo asigna como maestro, posicionándolo además en la posición inicial (
n0) de la tabla de nodos - Terminar y salir: regresa al menú principal.
- Blanco: texto normal
- Verde: mensajes del sistema
- Rojo: error del sistema (puede ser fatal o no)
- Amarillo: resultados de ejecución
- Cian/Magenta: comandos ejecutados en segundo plano
Se incluyen dos versiones de KFRONT para su uso con LAM; se invocan mediante ./kfront y ./kfront2, respectivamente. La versión 2 presenta una salida más explícita para depuracíon de fallas y soporte para clusters heterogéneos, con compilación en cada uno de los nodos para garantizar el correcto funcionamiento. Además, la versión 2 hace un uso más eficiente de las funciones del entorno LAM/MPI.
lamhosts14: archivo de configuración de KFRONTej2_mpi4.c: programa MPI que realiza varias operaciones con matricestest_mpi.c: programa MPI que calcula el valor del número pi usando el método de Montecarlo
