PROGRAMACIÓN PARALELA

31
PROGRAMA PARALELO ORDENACIÓN DE UN ARRREGLO POR EL METODO BURBUJA CON MPICH2 EN UBUNTU NOMBRE: Raquel Solano PROF: Ing. Nelson Piedra UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA “La Universidad Católica de Loja” MULTIPROCESAMIENTO

description

Hay varias cosas en este slide. Configuración de cluster MPICH2 en Ubuntu, Ejecución de programas paralelos y Corrida de la aplicacion de ordenación burbuja paralelizada con MPI

Transcript of PROGRAMACIÓN PARALELA

Page 1: PROGRAMACIÓN PARALELA

PROGRAMA PARALELO ORDENACIÓN DE UN ARRREGLO POR EL METODO BURBUJA CON

MPICH2 EN UBUNTU

NOMBRE:Raquel Solano

PROF:Ing. Nelson Piedra

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA

“La Universidad Católica de Loja”

MULTIPROCESAMIENTO

MULTIPROCESAMIENTO

Page 2: PROGRAMACIÓN PARALELA

INTRODUCCIÓNEl presente trabajo tiene como finalidad realizar el

procesamiento paralelo de la aplicación de la ordenación de un vector de n elementos, para ello se realizará la configuración de un clúster mediante la herramienta MPICH2 utilizando MPI (Message Passing Interface), la cual es una interfaz que ayuda a la realización de aplicaciones paralelas mediante el paso de mensajes.

Es importante mencionar que el vector va a estar dividido en procesos los cuales van a ser ejecutados en las distintas computadoras que forman parte del clúster para mostrar los resultados, con el objetivo de reducir o minimizar el tiempo de computo de la aplicación, es decir más rapidez en la ejecución del programa.

Page 3: PROGRAMACIÓN PARALELA

OBJETIVOSEl objetivo de este trabajo es comprender el

funcionamiento del procesamiento distribuido aplicado a la ejecución de programas y comparar los resultados obtenidos con una aplicación ejecutada secuencialmente. Difundir diferentes procesos entre varias computadoras, para luego poder recoger los resultados que dichos procesos van a producir.

Reducir el número de ciclos de ejecución de un programa en relación al número de procesadores que existen en el cluster.

Para conseguir este objetivo se realizará un estudio detallado de la librería MPI, la aplicación estará programada en C.

Page 4: PROGRAMACIÓN PARALELA

CONFIGURACIÓN DE CLUSTER MPICH2 EN UBUNTU

Page 5: PROGRAMACIÓN PARALELA

Herramientas para configurar MPICH2:Nfs-kernel-server.- Es un protocolo de sistemas de

ficheros en red que permite a un usuario en un ordenador cliente acceder a ficheros en red. En este caso sirve para que los nodos esclavos tengan acceso al nodo servidor.

Build-Essential.- Es un paquete que sirve para ejecutar el compilador de C++ (g++).

Openssh-Server.- Sirve para realizar comunicaciones cifradas a través de la red entre nodo maestro y nodos esclavos, usando el protocolo ssh.

Mpich2.- Es una implementación de MPI, una norma estándar de paso de mensaje para aplicaciones de memoria distribuida que utilizan computación paralela.

Page 6: PROGRAMACIÓN PARALELA

Para la configuración del clúster con MPICH2, se sigue los siguientes pasos:

 1. Definir los hostnames en etc/hosts/  El clúster consta de tres nodos: un maestro y dos esclavos

con sus respectivas direcciones ip, este paso se lo realiza en los tres nodos.

  Para esto se edita el host en etc (/etc/hosts):   127.0.0.1 localhost 172.16.88.70 master 172.16.88.151 esclavo1172.16.88.55 esclavo2  

Page 7: PROGRAMACIÓN PARALELA

2. Instalar el NFS Instalar solo en el nodo maestro

Page 8: PROGRAMACIÓN PARALELA

3. Compartir la carpeta master Se crea una carpeta en todos los nodos para

almacenar los datos y programas que luego se ocupará, como el paquete MPICH2.

• También asignamos permisos a todos los nodos que van a interactuar con el nodo principal, se hace desde el nodo master.

Con esto, todos los datos y programas que almacenemos en el nodo master, pueden ser accedidos por los demás nodos con el NFS.

Page 9: PROGRAMACIÓN PARALELA

4. Montar el nodo master en los demás nodos

5. Definir un usuario para correr los programas MPI

• Se define un usuario en cada uno de los nodos en el directorio home, con el mismo nombre de usuario y contraseña. En este caso se crea el usuario mpi

Page 10: PROGRAMACIÓN PARALELA

Cambiamos el propietario de mirror a mpi, solo en el nodo maestro

Page 11: PROGRAMACIÓN PARALELA

6. Instalación del servidor SSHCorremos el siguiente comando en todos los nodos para

instalar el OpenSSH Server

Page 12: PROGRAMACIÓN PARALELA

• Primeramente ingresamos con el nuevo usuario

6. Configuración de SSH para la comunicación entre los nodos

•Luego generamos la clave pública y privada DSA para mpi:(Aquí se crea la clave pública y privada)

Page 13: PROGRAMACIÓN PARALELA

• Luego digitamos la clave de autorización que es mpi

•Testeamos el SSH, solo en el maestro porque el directorio home de MPI es el mismo en todos los nodos:

Page 14: PROGRAMACIÓN PARALELA

8. Instalar GCC

•Ahora se instala el paquete build-essential en todos los nodos

Page 15: PROGRAMACIÓN PARALELA

9. Instalar otros compiladores

•En el master server, common y portmap

•En los esclavos common y portmap

Page 16: PROGRAMACIÓN PARALELA

10.Instalar MPICH2

•MPICH2 solo será instalado en el nodo master

• Copiar esta ruta en el archivo etc/.bashexport PATH=/mirror/mpich2/bin:$PATHexport PATHLD_LIBRARY_PATH="/mirror/mpich2/lib:

$LD_LIBRARY_PATH"export LD_LIBRARY_PATH

Page 17: PROGRAMACIÓN PARALELA

• Se corre el commando para definer la instalación de MPICH a la ruta SSH.

• Este commando se ejecuta solo en el master.• Para testear la instalación se ejecuta:

mpi@master:~$ which mpdmpi@master:~$ which mpiexecmpi@master:~$ which mpirun

Page 18: PROGRAMACIÓN PARALELA

11.Configurar MPD hosts

• Crear los nombres de todos los nodos en un archivo, y guardarlo con el nombre mpd.hosts, Hacer esto en cada uno de los nodos.

masteresclavo1esclavo2

Page 19: PROGRAMACIÓN PARALELA

• Para testear MPD se ejecuta los siguientes comandos, desde nodo maestro con el usuario mpi:

mpi@master:~$ mpd & mpi@master:~$ mpdtrace

• Después correr el demonio MPD mpi@master:~$ mpdboot -n 2mpi@master:~$

mpdtrace donde 2= número de nodos configurados

Page 20: PROGRAMACIÓN PARALELA

• La salida debe ser el nombre de los host actuales: en este caso master y esclavo

• Finalmente para compilar la aplicación se debe ubicar en el directorio donde está el programa y se ejecuta el comando:

mpi@master:~$mpicc nombre del programa .c –o nombre para compilar

• Para ejecutar la aplicación: mpi@master:~$mpirun –n 2

nombredirectorio/nombreprograma

Page 21: PROGRAMACIÓN PARALELA

EJECUCIÓN DE PRUEBASPara la demostración de la correcta

funcionalidad del clúster he tomado un ejemplo de prueba llamado Hola.c, ubicado en el directorio practicas, la ejecución se realizó con 2, 4 y 8 procesos cuyos resultados se muestran a continuación:

Con 2 procesos

Page 22: PROGRAMACIÓN PARALELA

Con 4 procesos

Con 8 procesos

Page 23: PROGRAMACIÓN PARALELA

ORDENACIÓN DE UN VECTOR

Page 24: PROGRAMACIÓN PARALELA

Método Burbuja Método Burbuja: Consiste en comparar pares de elementos

adyacentes e intercambiarlos entre sí hasta que estén todos ordenados.

Por ejemplo: El arreglo {40,21,4,9,10,35}:

Primera pasada:{21,40,4,9,10,35} <-- Se cambia el 21 por el 40.{21,4,40,9,10,35} <-- Se cambia el 40 por el 4.{21,4,9,40,10,35} <-- Se cambia el 9 por el 40.{21,4,9,10,40,35} <-- Se cambia el 40 por el 10.{21,4,9,10,35,40} <-- Se cambia el 35 por el 40.

Segunda pasada:{4,21,9,10,35,40} <-- Se cambia el 21 por el 4.{4,9,21,10,35,40} <-- Se cambia el 9 por el 21.{4,9,10,21,35,40} <-- Se cambia el 21 por el 10.

Page 25: PROGRAMACIÓN PARALELA

La transposición par-impar es una variante del algoritmo de la burbuja que ordena n elementos en n fases, cada una de las cuales requiere n/2 operaciones de comparación-intercambio.

Este algoritmo alterna entre dos fases, llamadas la fase par y la fase impar.

En la fase impar, los elementos con índices pares son comparados con sus vecinos derechos, y si no están ordenados se intercambian; por tanto, los pares (a se comparan-e-intercambian (asumiendo n impar).

La fase par, elementos con índices impares se comparan con su vecino derecho, y si no están ordenados se intercambian.

TRANSPOSICIÓN PAR-IMPAR

Page 26: PROGRAMACIÓN PARALELA

REPRESENTACION DE LOS RECORRIDOS

PROCEDIMIENTO PAR_IMPARSECUENCIAL

ALGORITMO TRANSPOSICIÓN PAR_ IMPAR

Page 27: PROGRAMACIÓN PARALELA

EJECUCIÓN APLICACIÓN

Page 28: PROGRAMACIÓN PARALELA

EJECUCIÓN APLICACIÓN

Page 29: PROGRAMACIÓN PARALELA

EJECUCIÓN APLICACIÓN

Page 30: PROGRAMACIÓN PARALELA

RESULTADOSLuego de la ejecución de la aplicación en código paralelo se ha obtenido lo siguiente: Tiempo Secuencial Ts= 15,56

Tiempo Paralelo Tp= 15,78

Sobrecarga Total Formula:

To = 2(15.78-15.56) To= 0,44

Eficiencia

Formula: E= 15,56/2(15,78) E= 0,49

Page 31: PROGRAMACIÓN PARALELA

CONCLUSIONESLuego de la ejecución de la aplicación se concluye lo

siguiente:El tiempo d ejecución de una aplicación paralela no

siempre es menor al de una aplicación secuencialEl tiempo de ejecución depende de la complejidad

del problema de la aplicación.Un programa paralelo no siempre es eficiente ya

que dependería del número de procesos en que se ejecuta.

Mientras mayor numero de procesos existen y menos procesadores hayan puede tardar mas tiempo en ejecutarse una aplicaron paralela