Download - Multiprocesamiento con PelicanHPC
Universidad Técnica Particular de Loja
MULTIPROCESAMIENTO
Informe Final
1. Introducción sobre la Tecnología Grid Computing
El descubrimiento del internet fue el primer paso que se dio para que los avances
tecnológicos se vallan dando uno tras otro, todo esto unido a los esfuerzos para que el
conocimiento sea accesible para todos, dio como resultado nuevas invenciones
tecnológicas, de aquí nació la arquitectura clúster, sin embargo esto estos avances son un
poco más difíciles de implementar, debido a que los requerimientos van incrementado y
cada día es más difícil y sobre todo más costoso aumentar los recursos a un clúster.
La tecnología Grid Computing básicamente tiene como principio el aprovechar los
ciclos de procesamientos de los ordenadores que están conectados a una red en
cualquier parte del mundo y que no están utilizando ciertos recursos, de esta forma se
pueden romper la gran barrera del espacio para la ubicación de computadores.
Dados estos conceptos podemos definir a la Tecnología Grid como un sistema
distribuido que permite resolver problemáticas de gran escala en el menor tiempo, esto se
debe al hecho de compartir recursos entre los ordenadores los recursos de
procesamiento. “Es una solución altamente escalable, potente y flexible, ya que evitarán
problemas de falta de recursos (cuellos de botella) y nunca queda obsoleta, debido a la
posibilidad de modificar el número y características de sus componentes.” [2]
Desventajas
- Recursos heterogéneos: la computación Grid debe ser capaz de poder manejar
cualquier tipo de recurso que maneje el sistema, si no resultará totalmente inútil.
[1]
- Descubrimiento, selección, reserva, asignación, gestión y monitorización de
recursos son procesos que deben controlarse externamente y que influyen en el
funcionamiento del Grid. [1]
Universidad Técnica Particular de Loja
- Necesidad de desarrollo de aplicaciones para manejar el Grid, así como desarrollo
de modelos eficientes de uso. [1]
- Comunicación lenta y no uniforme. [1]
- Organizativos: dominios de administración, modelo de explotación y costes,
política de seguridad. [1]
- Económicos: precio de los recursos, oferta/demanda. [1]
Ventajas
- “Seguridad, para pertenecer a un Grid se deben seguir serie de protocolos que
garantizan la seguridad del sistema. En contraste con los sistemas Peer-te-Peer
donde la participación es anónima y poco segura. Adicionalmente, el Grid maneja
un concepto conocido como organizaciones virtuales sobre el cual basa las
políticas de acceso a los recursos.[3]
- Confiabilidad a diferencia de otros sistemas, donde los procesos deben ser
replicados múltiples veces, evaluando y comparando sus resultados para asegurar
su fiabilidad, en un Grid las organizaciones participantes son confiables, por lo
tanto se asume que, en cierto modo, no hay datos corruptos. [3]
- Coordinación, los miembros de un Grid aportan siempre más recursos, es decir, es
un esfuerzo coordinado donde todos aportan y todos usan los recursos
disponibles. [3]
- Escalabilidad, un Grid es altamente escalable ya que se pueden agregar cada vez
más recursos incrementando las capacidades del mismo. Esto es principalmente
porque, por la naturaleza colaborativa y coordinada del Grid, los miembros definen
los recursos y los tiempos en que estos están disponibles para el Grid, así existe
un dinamismo en el cual los servicios prestados por una institución pueden estar o
no disponibles en un momento determinado y el Grid está preparado para ello.” [3]
Universidad Técnica Particular de Loja 2. Estado del Arte de la herramienta seleccionada y de las Librería de paso de
mensajes MPI
Herramienta Seleccionada
PelicanHPC: es un proyecto que se basa en una distribución GNU/Linux
creada a partir de Debían Live que está dedicada a crear clúster de alto
rendimiento. Usa como gestor de ventanasXFCE, que no es más que un entorno
ligero de escritorio para sistemas tipo UNIX. [4]
Durante su ejecución se puede distinguir dos partes importantes, un
servidor que es donde se inician las configuraciones como nodo principal, y así
mismo es quien distribuye las tareas. En cambio los nodos son quienes ayudan a
procesar la información que es enviada por el servidor. [4]
Características - Soporta computación paralela basada en MPI para C, C++, FORTRAN (77,
90) y GNU Octave, este último usando MPITB. [4]
- Ofrece LAM/MPI y Open MPI como implementaciones de MPI, aunque
también es posible usar MPITCH. [4]
- Es fácil de configurar, tanto para la primera implementación, como para el
ajuste de nodos que conforman el clúster, se usa sólo el comando
pelican_setup. [4]
- Existe en versiones para 32 y 64 bits. [4]
Librerías de paso de mensajes
Open MPI una interfaz, API o especificación para el paso de mensajes
entre ordenadores para permitir una comunicación. Generalmente es usado en
supercomputadores, clúster de computadores y en general sistemas distribuidos
ya que no requiere memoria compartida. Existen muchas implementaciones de
MPI y en multitud de lenguajes. Las implementaciones más usadas son las
escritas en C y C++. [5]
Universidad Técnica Particular de Loja
El paso de mensajes es una técnica empleada en programación
concurrente para aportar sincronización entre procesos y permitir la exclusión
mutua, de manera similar a como se hace con los semáforos, monitores, etc. Su
principal característica es que no precisa de memoria compartida, por lo que es
muy importante en la programación de distribuidos. Los elementos principales que
intervienen en el paso de mensajes son el proceso que envía, el que recibe y el
mensaje. [5]
La Interfaz de Paso de Mensajes es un protocolo de comunicación entre
computadoras. Es el estándar para la comunicación entre los nodos que ejecutan
un programa en un sistema de memoria distribuida. Las implementaciones en MPI
consisten en un conjunto de bibliotecas de rutinas que pueden ser utilizadas en
programas escritos en los lenguajes de programación C, C++, Fortran y Ada. La
ventaja de MPI sobre otras bibliotecas de paso de mensajes, es que los programas
que utilizan la biblioteca son portables (dado que MPI ha sido implementado para
casi toda arquitectura de memoria distribuida), y rápidos, (porque cada
implementación de la biblioteca ha sido optimizada para el hardware en la cual se
ejecuta). [5]
3. Implementación del clúster con la herramienta seleccionada
Estudio a nivel de Hardware, Software y Red Hardware
Para la implementación de nuestro clúster básicamente usamos en cuanto
a Hardware, dos computadores uno para la configuración del servidor, otro para el
nodo, a continuación detallamos la descripción de cada computador:
Servidor Procesador: Intel Core i5 Processor T5800
Memoria: 4 GB RAM DDR2 800MHz SDRAM
Disco duro: 520GB
LAN: 10/100 Ethernet LAN
Universidad Técnica Particular de Loja Nodo
Procesador: Intel® Core™2 Duo CPU T5800 @2.00GHz.
Memoria: 4 GB RAM DDR2 800MHz SDRAM
Disco Duro: 320GB
LAN: 10/100 Ethernet LAN
Descripción del Software Sistema Operativo
“Debian es un sistema operativo libre, para su computadora. El sistema
operativo es el conjunto de programas básicos y utilidades que hacen que funcione
su computadora. Debian utiliza el núcleo Linux es decir el corazón del sistema
operativo, pero la mayor parte de las herramientas básicas vienen del Proyecto
GNU; de ahí el nombre GNU/Linux.
Debian GNU/Linux ofrece más que un Sistema operativo puro, sino que también
viene con 25000 paquetes, programas pre compilados distribuidos en un formato
que hace más fácil la instalación en su computadora.” [6]
Nació como una apuesta por separar en sus versiones el software libre del
software no libre. El modelo de desarrollo del proyecto es ajeno a motivos
empresariales o comerciales, siendo llevado adelante por los propios usuarios,
aunque cuenta con el apoyo de varias empresas en forma de infraestructuras.
Debian no vende directamente su software, lo pone a disposición de cualquiera en
Internet, aunque sí permite a personas o empresas distribuirlo comercialmente
mientras se respete su licencia.
Herramientas Seleccionadas
PelicanHPC es una distribución de GNU/Linux que se ejecuta como un CD
live. Si el archivo de imagen ISO se quema en un CD, el CD resultante puede
usarse para arrancar una computadora. El equipo en el que PelicanHPC se
arranca se le conoce como el "nodo principal", que es el equipo con el que el
usuario interactúa. [4]
Universidad Técnica Particular de Loja
Un "Live CD", como PelicanHPC por defecto no utiliza los discos duros de
cualquiera de los nodos (excepto el espacio de intercambio de Linux, si es que
existe), por lo que no va a destruir o alterar su sistema operativo instalado. Cuando
el clúster PelicanHPC se cierra, todos los equipos están en su estado original, y se
iniciará de nuevo en lo que los sistemas operativos están instalados en ellos
PelicanHPC opcionalmente se puede hacer para utilizar espacio de disco duro, por
lo que su estado puede ser preservado a través de las botas. [4]
Se puede configurar para que arranque sin intervención del usuario, con
posibilidad de acceso por ssh. También existe la posibilidad de hacer el cálculo de
arranque nodos utilizando Wake-on-LAN. Con estas características opcionales
más avanzadas, PelicanHPC se puede utilizar para ejecutar un grupo permanente
sin cabeza. [4]
Open MPI es una interfaz de paso de mensajes. Está escrita por el MPI
Forum. MPI es una API estándar utilizada para la computación paralela o
distribuida. El estándar MPI comprende dos documentos: MPI-1 y MPI-2.
Open MPI es un proyecto que se originó como la combinación de
tecnologías y recursos de otros proyectos para construir la mejor librería MPI
disponible. Una aplicación totalmente nueva MPI-2 compatible, Open MPI ofrece
ventajas para los vendedores de sistemas y software, desarrolladores de
aplicaciones, e investigadores de ciencias de la computación. Es fácil de usar, y
funciona de forma nativa en una amplia variedad de sistemas operativos, la red de
interconexiones, y el lote / sistemas de programación.
Monitoreo Ganglia es un sistema de supervisión distribuido escalable para los
sistemas de cálculo de alto rendimiento por ejemplo racimos y rejillas. Permite que
el usuario vea remotamente estadística viva o histórica.
Universidad Técnica Particular de Loja
Se basa en un diseño jerárquico apuntado en las federaciones de racimos.
Confía en a multicast-basado escucha/anuncia protocolo para supervisar el estado
dentro de racimos y de aplicaciones un árbol de las conexiones de Point-to-Point
entre nodos de racimo representativos a los racimos federados y para agregar su
estado.
Grafico 1
Topología de la Red
Hemos creído conveniente tomar una topología básica para nuestro proyecto
como lo es la de punto a punto, es decir cliente servidor, esto debido a que no tenemos
la infraestructura, para ampliar nuestra topología, pero creemos que con esta topología
podemos terminar óptimamente el presente trabajo.
Grafico 2
Universidad Técnica Particular de Loja
Implementación de la Herramienta
Requerimientos para la instalación - Arquitecturas 686 o amd64
- Los nodos deben poder hacer "net boot"
- 512MB RAM
- Creada usando la última versión de "live-helper" y "live-initramfs" para corregir
errores
- Actualizaciones del sistema base Debian Lenny
Instalación de la Herramienta La primera pantalla es de bienvenida en la cual elegiremos la primera
opción “Livecd” para que el disco duro de la maquina no sufra ninguna alteración,
la herramienta está diseñada para alojarse únicamente en la memoria RAM al
seleccionar esta opción.
Una vez hecho esto, la configuración comenzará, y en la primera pantalla de
configuración seleccionaremos OK presionando la tecla “Intro”.
Grafico 3
Universidad Técnica Particular de Loja
La siguiente pantalla de configuración nos dice si deseamos que los
ejemplos de PelicanHPC estén habilitados, debido a que nosotros correremos
nuestro propio algoritmo, seleccionamos la opción “No”.
Grafico 4
Continuando con la instalación, PelicanHPC nos pedirá que ingresemos
una clave de seguridad, hay que tener mucho cuidado en este paso ya que esta
clave la deberemos recordar porque será la clave de todo el sistema y sin ella no
podremos instalar nada. Una vez cambiada la clave presionamos la tecla “Intro”.
Grafico 5
Universidad Técnica Particular de Loja
Una vez hecho estas configuraciones principales, el CDlive continuara
configurando el sistema de manera automática.
Grafico 6
Cuando haya finalizado de configurar nos presentara una pantalla de
bienvenida en la cual deberemos digitar “user” para pelicanlogin y, para Password
digitaremos la contraseña dada en el paso anterior. (Aquí la importancia de
recordar el password digitado)
Grafico 7
Universidad Técnica Particular de Loja
Una vez que los parámetros ingresados son validados y aceptados,
estaremos listos para configurar el cluster. Para ello digitaremos el comando
“pelican_setup”, el cual iniciara las configuraciones necesarias para armar el
cluster con la cantidad de nodos secundarios que deseemos.
Grafico 8
Primero elegimos la interfaz de red con la cual vamos a trabajar. Nosotros
elegimos la eth0 debido a que vamos a realizar la conexión mediante una red LAN.
Grafico 9
Universidad Técnica Particular de Loja
Luego de haber seleccionado la interfaz de red, nos aparecerá una advertencia
que dice: No ejecute nuevamente el instalador si ya es parte de una red Pelican. Aquí
marcamos Yes.
Grafico 10
En la siguiente pantalla nos dice que conectemos los nodos secundarios. Y lo que
haremos es bootear los nodos secundarios desde la red.
Grafico 11
Universidad Técnica Particular de Loja
Una vez que se instale el software, nos enviara a una pantalla de bienvenida parecida al
del nodo principal.
Grafico 12
Luego regresamos a la instalación en el nodo principal, seleccionamos la opción “Yes”
para continuar. E n la siguiente pantalla observaremos un mensaje que nos dirá cuantos
nodos hay conectados al nodo principal, es decir, cuantos computadores más existen
aparte del que hace de servidor.
Si el resultado es 0, se debe seleccionar la opción “No” y esta acción se volverá a
ejecutar, una vez que el servidor o nodo principal haya detectado todos los
computadores del cluster procedemos a elegir la opción “Yes”, pero si el servidor aun no
ha detectado a los clientes, se deberá revisar la conexión y repetir los pasos.
Universidad Técnica Particular de Loja
Grafico 13
Grafico 14
La siguiente pantalla en aparecer es la que nos informa cuantos nodos van a conformar
nuestro clúster incluyendo el nodo principal.
Universidad Técnica Particular de Loja
Grafico 15
Finalmente, ejecutamos el comando “startx” para ingresar a la interfaz gráfica que nos
ofrece Pelican.
Grafico 16
Universidad Técnica Particular de Loja
Pruebas de Instalación
Para las pruebas de instalación nosotros primeramente tenemos que
configurar el archivo hosts de la ruta /etc/ y las líneas de modificación las
describiremos a continuación:
Primeramente debemos abrir el documento donde se encuentran las IPs del
servido y del cliente esto en ambos, en el servidor y también en el nodo.
Abrimos un terminal y digitamos lo siguiente: vim /etc/hosts
10.11.12.1 pel1
10.11.12.65 pel65
Después de esta configuración, ejecutamos la siguiente línea de comandos
para saber que nuestro clúster está realmente configurado y funcionando
correctamente, además sirve para comprobar que en realidad se estén conectando
los nodos
More /home/user/tmp/bhost Y Como resultado deberíamos obtener la dirección IP las maquinas que
conforman nuestra topología de red
4. Implementación de la aplicación Paralela
Tema: “Diferencias finitas para resolver la ecuación de Laplace”
Problemática: básicamente la problemática de este tema es resolver la ecuación
de Laplace, utilizando diferencias finitas basadas en matrices de cuadrados
distribuidos, este tema se resuelve bajo el paradigma de SPMD que es simple
programa, múltiples datos
Descripción de la Aplicación
Este programa utiliza un esquema de diferencias finitas para resolver la ecuación
de Laplace para una matriz de cuadrados distribuidos en una topología de
Universidad Técnica Particular de Loja
procesador cuadrados lógicos. Como ya lo mencionamos anteriormente esta
aplicación trabaja en el paradigma SPMD. Se ilustra la descomposición 2-d de un
cuadrado, los nodos de intercambio de valores de borde, y el control de
convergencia.
Cada elemento de la matriz se actualiza sobre la base de los valores de los
elementos de la matriz de acuerdo con su cuatro vecinos. Este proceso se repite
hasta que los datos convergen hasta que el cambio promedio en cualquier
elemento de la matriz, menor que un valor especificado.
Actualmente el programa está configurado para una matriz de 48x48
distribuidos en cuatro procesadores.
Descripción de las Librerías Paralelos Dentro de nuestra aplicación utilizamos algunas de las librerías básicas de
paralización, las mismas que describiremos a continuación:
- MPI_Comm_rank: esta función retorna el identificador de un proceso
- MPI_Init, MPI Finalize, nos sirve para inicializar y para finalizar los
procesos
- MPI_Comm_size: determina el número de procesos
- MPI_Comm_Wtime:nos informa el tiempo transcurrido en un determinado
procesos
- MPI_Status: nos proporciona el estado del mensaje de que fue enviado
- MPI_Irecv: recibe mensajes sin bloqueo
- MPI_Isend envía mensajes sin bloqueo
- MPI_Gather: Reúne los valores de un grupo de procesos
- MPI_Allreduce Combina los valores de todos los procesos y distribuir el
resultado de nuevo a todos los procesos
- MPI_COMM_WORLD establecer la conexión entre los nodos
Universidad Técnica Particular de Loja
Descripción de las Funciones de la Aplicación
En la implementación de la aplicación hemos utilizado funciones propias del
programa que han sido el resultado de la lógica del programa, así tenemos:
- setmatrix(): establece las matrices con los valores iniciales, así mismo
tambien establece los valores internos de la matriz de acuerdo al limite
- setcomm(): establece las direcciones para la comunicación
- iterate(): captura el numero de interacciones, así mismo también verifica la
convergencia cada 20 interacciones para sacar la media absoluta
- dored (): repite los valores tanto en la derecha como en la izquierda
5. Integración del clúster y de la aplicación Plan de Pruebas
Nuestro plan de pruebas consiste en hacer correr nuestro algoritmo de
forma secuencial y de forma paralela, procesando matrices de diferentes tamaños
para tomar en cuenta los tiempos que se demoran y la eficiencia con que lo hacen.
Inicialmente comenzamos analizando matrices de 48 por 48, recordemos que
nuestro estándar de matrices es cuadrada, como resultado de nuestra prueba es
que en nuestro algoritmo secuencial se obtiene tiempos considerables con una
eficiencia normal, sin embargo analizando las matrices de forma paralela los
tiempos en que retornan los resultado es realmente rápido y con una eficiencia
considerable.
En el caso del análisis de las matrices de 100 por 100 los resultados realmente se
muestran a favor del algoritmo paralelo, con tiempos que son mucho más rápidos
que los del algoritmo secuencial.
Comparación mediante los criterios de evaluación de las versión secuencial y paralela (tiempo de ejecución, aceleración, eficiencia, y coste) en función del número de procesos y de la variación de los datos
Universidad Técnica Particular de Loja
Los resultados obtenidos en el plan de prueba son los siguientes:
Matriz Procesos Secuencial (S) Paralelo (S)
48*48
0 0.494 s 0.257 s
1 0.485 s 0.271 s
2 0.498 s 0.281
3 0.491 0.256
Fig1: escala de 10
Matriz Procesos Secuencial (S) Paralelo (S)
100*100
0 3.102 s 2.03 s
1 3.108 s 2.114 s
2 3.070 s 1.909 s
3 3.038 s 2.04 s
0
1
2
3
4
5
6
Proceso 1 Proceso 2 Proceso 3 Proceso 4
Secuencial
Paralelo
Universidad Técnica Particular de Loja
Fig2: escala de 10
Análisis de Rendimiento
Es claro observar que el rendimiento de el algoritmo paralelo es más eficiente y más rápido ante el algoritmo secuencial, si no damos cuenta en las gráficas anteriores vemos que el algoritmo en paralelo reduce casi hasta la mitad del tiempo en procesar los mismo datos que el algoritmos secuencial, y no solo en estos casos si en muchos otros, realmente la tecnología Grid está dando resultados y cumpliendo los objetivos para los que fue creada.
6. Conclusiones
Una vez analizada la presente investigación podemos decir que:
• La utilización de una arquitectura cluster o una arquitectura grid permite la optimización de los recursos en la ejecución de aplicaciones.
• El grid abre un enorme abanico de posibilidades para el desarrollo de aplicaciones en muchos sectores. Por ejemplo: desarrollo científico y tecnológico, educación, sanidad, y administración pública.
• Aprendimos que una ejecución de aplicaciones y/o algoritmos en paralelo es mucho más eficiente, hablando en términos de tiempo, que una ejecución secuencial.
• Existen muchas herramientas que nos facilitan la creación de clusters caseros y con las cuales podríamos sacar provecho a la hora de necesitar gran cantidad de procesamiento en poco tiempo y con bajos costos.
0
0,5
1
1,5
2
2,5
3
3,5
Proceso 1 Proceso 2 Proceso 3 Proceso 4
Secuencial
Paralelo
Universidad Técnica Particular de Loja
7. Recomendaciones
Con la experiencia adquirida en la realización del presente proyecto les podemos recomendar lo siguiente:
• Para el uso de PelicanHPC, primero hay que leer detalladamente el manual de instalación y configuración ya que el mínimo error puede hacer que todo el clúster no sea funcional.
• En vista que PelicanHPC es realizado en Debian, leer un manual de los comandos básicos para este SO con el fin de solucionar inconvenientes de manera rápida y eficaz.
• Debido a que PelicanHPC está compilado bajo una arquitectura con procesador AMD, utilizar un servidor con este tipo de procesador para evitar inconvenientes de ejecución.
8. Bibliografía
[1] Monograría de Adscripción a Sistemas Operativos; Autora: Barrios, Verónica Vanessa, 2005. [2] http://es.wikipedia.org/wiki/Computaci%C3%B3n_grid;
Visitado el: 24 de noviembre de 2010. [3] Grid Computing; Cestari, Daniel;
http://www.ldc.usb.ve/~yudith/docencia/ci-4822/gridcomputing.pdf, Visitado el: 24 de noviembre de 2010.
[4] http://pareto.uab.es/mcreel/PelicanHPC/Tutorial/PelicanTutorial.html; Visitado el: 5 de noviembre de 2010.
[5] http://en.wikipedia.org/wiki/Message_Passing_Interface; Visitado el: 24 de noviembre de 2010. [6] http://www.debian.org/index.es.html; Visitado el: 24 de noviembre de 2010.