|
|
Implementando Redes
para Computación Paralela |
|
Tomislav Drpic - Adán Jiménez Unidad
de Computación Paralela |
Resumen - Con el presente trabajo se pretende introducir al lector a la implementación de redes que permitan obtener soluciones basadas en procesamiento paralelo a problemas que requieren múltiples iteraciones o que son sensibles en cuanto a tiempos de ejecución y que, por sus requerimientos, no podrían ser ejecutados adecuadamente con los recursos de un solo computador. Para dicha implementación se usó el conjunto de librerías para programación en lenguaje C llamadas PVM (Parallel Virtual Machine) bajo sistema operativo Linux RedHat versión 7.2. Para ello, tras realizar la instalación de las herramientas necesarias, se procedió a la configuración del entorno operativo y la red misma, para que luego, usando la implementación de un algoritmo de prueba, pudiese validarse a la red paralela y comparar estos resultados con los alcanzados con soluciones seriales.
INTRODUCCIÓN La aplicación de soluciones computarizadas ha permitido que las diversas ciencias hayan progresado de manera acelerada al poder realizar procesos y cálculos de manera mucho más rápida y eliminando los posibles errores debido a fallas humanas.
Sin embargo, el uso de una computadora tropieza con problemas cuando sus recursos resultan insuficientes para la dimensión del problema a tratar; esto ocurre en casos en los que la múltiples iteraciones hacen que la ejecución del procesos se ralentice demasiado por carecer el computador utilizado de recursos suficientes; éste problema se hace más delicado cuando el proceso tratado es sensible al tiempo de ejecución, como es el caso de programas de simulación o cálculos matemáticos.
El procesamiento en paralelo constituye la solución a éste tipo de problemas, puesto que permite la ejecución de un mismo problema en múltiples computadores; esto se logra al dividir el programa global en pequeños programas que pueden ser ejecutados al mismo tiempo por diferentes computadores pero de manera coordinada de manera tal que al juntar los resultados individuales de cada pequeño programa se obtenga la solución global al problema; todo ello en un tiempo de ejecución mucho menor.
Existen múltiples herramientas que permiten soluciones en paralelo, en el caso específico de éste proyecto se usó PVM (Parallel Virtual Machine) que es un conjunto de librerías para el lenguaje de programación C y Fortran que permiten el intercambio de información y la creación y control de subprocesos.
Este proyecto, por tanto, pretende introducir al lector al manejo de múltiples computadores bajo éste entorno.
OBJETIVOS Objetivo General
Objetivos Específicos
Como objetivo principal de éste proyecto se tiene:
Lograr la implementación de una red para computación paralela utilizando las librerías PVM para entorno operativo Linux RedHat en su versión 7.2.
- Instalar las librerías y herramientas necesarias para la implementación de la red.
- Configurar el entorno operativo para que permita la ejecución de procesos y el intercambio de información entre varios computadores.
- Configurar la red para procesamiento paralelo de determinado algoritmo.
- Ejecutar el programa de prueba y monitoreo de los resultados en función a tiempo y uso de recursos.
PROCEDIMIENTO Al ser PVM un sistema de paralelización basado en el paso de mensajes, se debe configurar la red y modificar las directivas de seguridad del sistema operativo correspondientes para la ejecución remota de programas.
Se debe tener especial cuidado con las directivas de seguridad aplicadas si los equipos que componen la red están conectados a internet.
Dentro de la configuración del sistema operativo, se deben realizar los siguientes cambios:
- /etc/hosts (Maestro - Esclavos)
Se debe incluir los nombres de todos los equipos y direcciones IP que componen la red. La sintaxis es la siguiente:
(dirección IP) (nombre del equipo) (alias 1) (alias 2)
- /etc/securetty (Esclavos)
Es necesario incluir los servicios rsh, rlogin y rexec como confiados por el computador. Al final del archivo, incluir rsh, rlogin y rexec.
- /etc/xinet.d/rsh (Esclavos)
/etc/xinet.d/rlogin (Esclavos)
/etc/xinet.d/rexec (Esclavos)
Las directivas de seguridad por defecto de Linux RedHat tienen deshabilitados estos servicios, para la ejecución de PVM es necesario habilitarlos y dependiendo el nivel de seguridad deseado limitar el acceso únicamente a las direcciones IP de su red.
- El valor de la entrada disabled debe cambiar 'no' (por defecto está en 'yes')
- Si desea limitar el acceso al servicio según dirección IP, puede utilizar las directivas 'only_from' y 'no_access'.
Estas modificaciones deben ser realizadas para cada uno de los archivos y posteriormente se debe reiniciar el servicio xinetd (ejecutar 'service xinetd restart').
- ~/.bashrc (Esclavos)
Para la ejecuación de PVM, la variable de entorno PVM_ROOT debe estar definida. Para tal efecto incluir las siguientes líneas en el mencionado archivo:
PVM_ROOT=/usr/share/pvm3
export PVM_ROOT
- ~/.rhosts (Esclavos)
En este archivo, se establece una relación de confianza entre el equipo remoto el y usuario actual. La sintaxis del archivo es:
(nombre del maestro) (nombre de usuario local)
PVM y su interacción con el usuario es hecho para su manejo desde consola dentro de Linux, pero, sin embargo, existe una versión de éste sistema que permite tener una interfase gráfica dentro del entorno Xwindows de Linux llamada XPVM que debe ser instalada como una herramienta adicional.
XPVM permite adicionar o quitar computadores de nuestra red, además de que posee utilidades gráficas para el monitoreo del rendimiento y trabajo en cada uno de los computadores, además de observar el intercambio de mensajes existentes.
Presentamos en la Figura 1 una de las pantallas representando una red de computadoras ejecutando un proceso en paralelo y siendo monitoreadas desde XPVM.
Una vez hechas todas las modificaciones para permitir a las computadoras compartir la información pasamos a la configuración de la red adicionando cada uno de los equipos que la formarán.
Para ello se ejecuta desde la consola: 'pvm'.
Una vez hecho eso se debe añadir a las demás máquinas de la red con la linea de comandos: 'add (nombre del equipo)';si en su lugar deseamos quitar a uno de los equipos miembros de la red lo hacemos con la siguiente linea de comandos desde PVM:'delete (nombre del equipo)'. Otro comando que puede resultar de ayuda es: 'conf', que permite ver los equipos miembros al momento de la red para procesamiento paralelo.
Dentro de la prueba realizada para validar el funcionamiento de la red usamos el algoritmo de cálculo de PI por aproximaciones sucesivas; por supuesto éste algoritmo está orientado en su concepción al entorno paralelo. Es necesario que cada computador miembro de la red posea el código del proceso a ejecutar y que posea la configuración antes mencionada para hacer posible el intercambio de mensajes y datos entre computadores.
El algoritmo se basa en:
Un proceso padre, que se encarga de: crear procesos hijos, distribuir los parámetros iniciales entre ellos, coordinar la interacción entre procesos, recolectar y desplegar los resultados.
Figura 1: Pantalla de interfase de XPVMMúltiples procesos hijos que realizan el cálculo en si y pasan los resultados al proceso padre.
CONCLUSIONES
Tras seguir los pasos descritos en la sección anterior se puede arribar a las siguientes conclusiones:
Es posible la solución de un problema en forma paralela, es decir, por varios computadores al mismo tiempo.
La solución de un problema en paralelo permite alcanzar tiempos de ejecución mucho menores, en una escala, no lineal, relacionada al número de computadores miembros de la red.
La decisión del uso de una red de computadores para la implementación de la paralelización como una opción ante un problema dependerá de varios aspectos:
En primer lugar dependerá del problema que estamos tratando, y de si es verdaderamente necesario o útil la aplicación de un algoritmo paralelo.
Con estos factores considerados será posible establecer la eficiencia de una implementación en paralelo comparada a una solución en serie.Es importante también el análisis del algoritmo paralelo que se vaya a utilizar o la paralelización de un algoritmo ya existente; porque esto significará un cambio importante en la lógica de programación misma a utilizar.
El tipo de paralelización a usar también dependerá de los recursos en hardaware que se tenga disponibles.
| BIBLIOGRAFÍA |
PVM, Documentación
en línea:
http://www.csm.ornl.gov/pvm/manpages.html
http://www.cse.ogi.edu/DISC/projects/mist/pvm/ug.uncomp.html
RedHat Linux Reference Guide, Documentación en línea:
ttp://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/ref-guide/