O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

PROGRAMACIÓN PARALELA

15.652 visualizações

Publicada em

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

Publicada em: Educação
  • muy interesante! me podrias enviar tu codigo a mi correo gabo77zurdex@gmail.com tengo que hacer un trabajo parecido en la universidad, te estaria muy agradecido.
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • hola te consulto nesecito armar un cluster de 4 nodos para un cliente y la duda es si con ubuntu estaria bien implementarlo o rock seria mejor. mi experiencia es con windows por eso la duda.
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • El error puede ser por el nfs, prueba lo siguiente:

    $ sudo apt-get install nfs-common

    y luego,

    $ sudo mount -t nfs master(o direccion ip del master): /mirror/mirror/
    o
    $ sudo mount master:/mirror /mirror

    Espero te sirva de ayuda.!!
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Hola Raquel, muchas gracias por la respuesta tan pronta. Te cuento que habia encontrado ese comando de montar el nodo maestro en los esclavos y es el mismo que me dices tu. Lo malo es que al ejecutar este comando me responde con lo siguiente:

    mount.nfs: mount system call failed

    Nose porque se producira ese error ojala me puedas ayudar porfavor, y muchas gracias nuevamente.
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Si, tienes razón el comando es erroneo.
    El correcto sería en cada nodo esclavo, en mi caso: utpl@esclavo1:~$sudo mount master:/mirror /mirror
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

PROGRAMACIÓN PARALELA

  1. 1. 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
  2. 2. INTRODUCCIÓN <ul><li>El 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. </li></ul><ul><li>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 . </li></ul>
  3. 3. OBJETIVOS <ul><li>El 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. </li></ul><ul><li>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. </li></ul><ul><li>Para conseguir este objetivo se realizará un estudio detallado de la librería MPI, la aplicación estará programada en C. </li></ul>
  4. 4. CONFIGURACIÓN DE CLUSTER MPICH2 EN UBUNTU
  5. 5. Herramientas para configurar MPICH2: <ul><li>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. </li></ul><ul><li>Build-Essential.- Es un paquete que sirve para ejecutar el compilador de C++ (g++). </li></ul><ul><li>Openssh-Server.- Sirve para realizar comunicaciones cifradas a través de la red entre nodo maestro y nodos esclavos, usando el protocolo ssh. </li></ul><ul><li>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. </li></ul>
  6. 6. <ul><li>Para la configuración del clúster con MPICH2, se sigue los siguientes pasos: </li></ul><ul><li>  </li></ul><ul><li>Definir los hostnames en etc/hosts/ </li></ul><ul><li>  </li></ul><ul><li>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. </li></ul><ul><li>  </li></ul><ul><li>Para esto se edita el host en etc (/etc/hosts): </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>127.0.0.1 localhost </li></ul><ul><li>172.16.88.70 master </li></ul><ul><li>172.16.88.151 esclavo1 </li></ul><ul><li>172.16.88.55 esclavo2 </li></ul><ul><li>  </li></ul>
  7. 7. <ul><li>Instalar el NFS </li></ul><ul><li>Instalar solo en el nodo maestro </li></ul>
  8. 8. <ul><li>Compartir la carpeta master </li></ul><ul><li>Se crea una carpeta en todos los nodos para almacenar los datos y programas que luego se ocupará, como el paquete MPICH2. </li></ul><ul><li>También asignamos permisos a todos los nodos que van a interactuar con el nodo principal, se hace desde el nodo master. </li></ul>Con esto, todos los datos y programas que almacenemos en el nodo master, pueden ser accedidos por los demás nodos con el NFS.
  9. 9. <ul><li>Montar el nodo master en los demás nodos </li></ul><ul><li>Definir un usuario para correr los programas MPI </li></ul><ul><li>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 </li></ul>
  10. 10. Cambiamos el propietario de mirror a mpi, solo en el nodo maestro
  11. 11. <ul><li>Instalación del servidor SSH </li></ul>Corremos el siguiente comando en todos los nodos para instalar el OpenSSH Server
  12. 12. <ul><li>Primeramente ingresamos con el nuevo usuario </li></ul><ul><li>Configuración de SSH para la comunicación entre los nodos </li></ul><ul><li>Luego generamos la clave pública y privada DSA para mpi: </li></ul>(Aquí se crea la clave pública y privada)
  13. 13. <ul><li>Luego digitamos la clave de autorización que es mpi </li></ul><ul><li>Testeamos el SSH, solo en el maestro porque el directorio home de MPI es el mismo en todos los nodos: </li></ul>
  14. 14. <ul><li>Instalar GCC </li></ul><ul><li>Ahora se instala el paquete build-essential en todos los nodos </li></ul>
  15. 15. <ul><li>Instalar otros compiladores </li></ul><ul><li>En el master server, common y portmap </li></ul><ul><li>En los esclavos common y portmap </li></ul>
  16. 16. <ul><li>Instalar MPICH2 </li></ul><ul><li>MPICH2 solo será instalado en el nodo master </li></ul><ul><li>Copiar esta ruta en el archivo etc/.bash </li></ul><ul><li>export PATH=/mirror/mpich2/bin:$PATH </li></ul><ul><li>export PATH </li></ul><ul><li>LD_LIBRARY_PATH=&quot;/mirror/mpich2/lib:$LD_LIBRARY_PATH&quot; </li></ul><ul><li>export LD_LIBRARY_PATH </li></ul>
  17. 17. <ul><li>Se corre el commando para definer la instalación de MPICH a la ruta SSH. </li></ul><ul><li>Este commando se ejecuta solo en el master. </li></ul><ul><li>Para testear la instalación se ejecuta: </li></ul><ul><li>mpi@master:~$ which mpd </li></ul><ul><li>mpi@master:~$ which mpiexec </li></ul><ul><li>mpi@master:~$ which mpirun </li></ul>
  18. 18. <ul><li>Configurar MPD hosts </li></ul><ul><li>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. </li></ul><ul><li>master </li></ul><ul><li>esclavo1 </li></ul><ul><li>esclavo2 </li></ul>
  19. 19. <ul><li>Para testear MPD se ejecuta los siguientes comandos, desde nodo maestro con el usuario mpi: </li></ul><ul><li>mpi@master:~$ mpd & </li></ul><ul><li>mpi@master:~$ mpdtrace </li></ul><ul><li>Después correr el demonio MPD </li></ul><ul><li>mpi@master:~$ mpdboot -n 2 mpi@master:~$ mpdtrace </li></ul><ul><li>donde 2= número de nodos configurados </li></ul>
  20. 20. <ul><li>La salida debe ser el nombre de los host actuales: en este caso master y esclavo </li></ul><ul><li>Finalmente para compilar la aplicación se debe ubicar en el directorio donde está el programa y se ejecuta el comando: </li></ul><ul><li>mpi@master:~$mpicc nombre del programa .c –o nombre para compilar </li></ul><ul><li>Para ejecutar la aplicación: </li></ul><ul><li>mpi@master:~$mpirun –n 2 nombredirectorio/nombreprograma </li></ul>
  21. 21. EJECUCIÓN DE PRUEBAS <ul><li>Para 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: </li></ul><ul><li>Con 2 procesos </li></ul>
  22. 22. Con 4 procesos Con 8 procesos
  23. 23. ORDENACIÓN DE UN VECTOR
  24. 24. Método Burbuja <ul><li>Método Burbuja: Consiste en comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que estén todos ordenados. </li></ul><ul><li>Por ejemplo: El arreglo {40,21,4,9,10,35}: </li></ul><ul><li>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. </li></ul>
  25. 25. <ul><li>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. </li></ul><ul><li>Este algoritmo alterna entre dos fases, llamadas la fase par y la fase impar . </li></ul><ul><li>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). </li></ul><ul><li>La fase par , elementos con índices impares se comparan con su vecino derecho, y si no están ordenados se intercambian. </li></ul>TRANSPOSICIÓN PAR-IMPAR
  26. 26. REPRESENTACION DE LOS RECORRIDOS <ul><ul><ul><li>PROCEDIMIENTO PAR_IMPARSECUENCIAL </li></ul></ul></ul><ul><ul><ul><li>ALGORITMO TRANSPOSICIÓN PAR_ IMPAR </li></ul></ul></ul>
  27. 27. EJECUCIÓN APLICACIÓN
  28. 28. EJECUCIÓN APLICACIÓN
  29. 29. EJECUCIÓN APLICACIÓN
  30. 30. RESULTADOS <ul><li>Luego de la ejecución de la aplicación en código paralelo se ha obtenido lo siguiente: </li></ul><ul><li>Tiempo Secuencial </li></ul><ul><li>Ts= 15,56 </li></ul><ul><li>Tiempo Paralelo </li></ul><ul><li>Tp= 1 5,78 </li></ul><ul><li>Sobrecarga Total </li></ul><ul><li>Formula: </li></ul><ul><li>To = 2(15.78-15.56) </li></ul><ul><li>To= 0,44 </li></ul><ul><li>Eficiencia </li></ul><ul><li>Formula: </li></ul><ul><li>E= 15,56/2(15,78) </li></ul><ul><li>E= 0,49 </li></ul>
  31. 31. CONCLUSIONES <ul><li>Luego de la ejecución de la aplicación se concluye lo siguiente: </li></ul><ul><li>El tiempo d ejecución de una aplicación paralela no siempre es menor al de una aplicación secuencial </li></ul><ul><li>El tiempo de ejecución depende de la complejidad del problema de la aplicación. </li></ul><ul><li>Un programa paralelo no siempre es eficiente ya que dependería del número de procesos en que se ejecuta. </li></ul><ul><li>Mientras mayor numero de procesos existen y menos procesadores hayan puede tardar mas tiempo en ejecutarse una aplicaron paralela </li></ul>

×