Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

19
Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez

Transcript of Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

Page 1: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

Algoritmos paralelosLab. 1: Introducción

Glen Rodríguez

Page 2: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

Máquinas virtuales Vamos a usar máquinas virtuales en el laboratorio de

este curso El concepto de máquina virtual surge con el sistema

VM/370 de IBM en 1972. La idea principal es la de permitir ejecutar varios sistemas operativos simultáneamente sobre el mismo hardware. Para ello, separa las dos funciones básicas que realiza un sistema moderno: multiprogramación y abstracción del hardware. El corazón del sistema es conocido como monitor de máquina virtual, y se ejecuta sobre el hardware proporcionando varias máquinas virtuales al siguiente nivel de software (S.O.). Estas máquinas virtuales, son copias exactas del hardware desnudo. Por esto, cada una puede estar ejecutando cualquier sistema operativo.

Page 3: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

Por qué?

Recientemente, ha surgido VmWare, Xen, Virtual Box. Permiten ejecutar Windows, Linux, BSD, etc. de forma simultánea en la misma computadora.

Por qué usarlo? Siempre es mejor probar las cosas en una máquina que no es crítica para el negocio y que, como en el caso de las máquinas virtuales, se puede recuperar en muy poco tiempo.

Page 4: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.
Page 5: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

Definiciones

Sistema operativo anfitrión o host Es el S.O. que realmente corre en la

computadora Junto con la capa de virtualización, simula

un “hardware virtual” donde corre el: Sistema operativo invitado o guest

Corre en un ambiente simulado

Page 6: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

Funcionamiento (1)

En primer lugar se crea una máquina virtual, para lo que se dispone de un asistente donde se indican varios detalles como el tamaño del disco duro, cantidad de RAM, conexiones de red, etc.

El siguiente paso es, instalar el sistema operativo y luego el software restante. El proceso es idéntico a instalarlo en una computadora recién salida de fábrica.

Esos pasos ya los hizo el personal FC. El resultado es un archivo donde esta contenido el sistema instalado

Page 7: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

Funcionamiento (2) Inicie el sistema operativo anfitrión

(host) Copie la carpeta DebianCC con todos

sus archivos a su disco duro Instale Virtual Box Corra Virtual Box Abra el archivo DebianCC.vbox

(Máquina – Agregar) Ignore el mensaje de error

Page 8: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.
Page 9: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

Funcionamiento (3) Haga los siguientes cambios en la configuración,

haciendo click al botón “Configuración” En sistema, pestaña procesador, ponga 2 ó 4

procesadores (lo que soporte su computadora) y límite ejecución = 100

En sistema, placa base, suba la memoria a 512 En la pestaña de Aceleración activa las dos

opciones que hay. En Almacenamiento, elimine el CDROM del IDE

Controller

Page 10: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.
Page 11: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.
Page 12: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.
Page 13: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

Funcionamiento (4)

En USB, desactive el controlador USB 2.9

Cree en el sistema operativo host el directorio cc301 (por ejemplo en windows cree el directorio o carpeta c:\cc301)

Añada esa carpeta, en la opción carpetas compartidas, el directorio cc301

Acepte y cierre configuración

Page 14: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.
Page 15: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

Funcionamiento (5)

Ya puede usar su máquina virtual dando click en Iniciar (flecha verde)

De aceptar a las ventanas de mensajes Bootee la primera opción Login: usuario= root, password= admincc Ejecute: mount -t vboxsf cc301 /mnt TIENE que hacer mount cada vez que

encienda este máquina virtual

Page 16: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

Ejemplo de programa paralelo con MPI

Vaya al directorio /home/user (Haga: cd /home/user)

Inicie el deamon de mip (haga: mpd &) Vea el programa hello.c Ejeciute el programa en 1 solo CPU y

en 2 CPUs mpiexec –n 1 ./hello mpiexec –n 2 ./hello

Page 17: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

#include <mpi.h> #include <stdio.h> #include <string.h> #define BUFSIZE 128 #define TAG 0 int main(int argc, char *argv[]) { char idstr[32]; char buff[BUFSIZE]; int numprocs; int myid; int i; MPI_Status stat; MPI_Init(&argc,&argv); /* all MPI programs start with MPI_Init; all 'N'

processes exist thereafter */ MPI_Comm_size(MPI_COMM_WORLD,&numprocs); /* find out how big

the SPMD world is */ MPI_Comm_rank(MPI_COMM_WORLD,&myid); /* and this processes'

rank is */

Page 18: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

/* At this point, all programs are running equivalently, the rank distinguishes

the roles of the programs in the SPMD model, with rank 0 often used specially... */

if(myid == 0) { printf("%d: We have %d processors\n", myid, numprocs); for(i=1;i<numprocs;i++) { sprintf(buff, "Hello %d! ", i); MPI_Send(buff, BUFSIZE, MPI_CHAR, i, TAG,

MPI_COMM_WORLD); } for(i=1;i<numprocs;i++) { MPI_Recv(buff, BUFSIZE, MPI_CHAR, i, TAG,

MPI_COMM_WORLD, &stat); printf("%d: %s\n", myid, buff); } }

Page 19: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.

else { /* receive from rank 0: */ MPI_Recv(buff, BUFSIZE, MPI_CHAR, 0, TAG,

MPI_COMM_WORLD, &stat); sprintf(idstr, "Processor %d ", myid); strncat(buff, idstr, BUFSIZE-1); strncat(buff, "reporting for duty\n", BUFSIZE-1); /* send to rank 0: */ MPI_Send(buff, BUFSIZE, MPI_CHAR, 0, TAG,

MPI_COMM_WORLD); } MPI_Finalize(); /* MPI Programs end with MPI Finalize; this is a

weak synchronization point */ return 0; }