Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.
-
Upload
agota-armendariz -
Category
Documents
-
view
5 -
download
0
Transcript of Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.
![Page 1: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/1.jpg)
Algoritmos paralelosLab. 1: Introducción
Glen Rodríguez
![Page 2: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/2.jpg)
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.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/3.jpg)
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.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/4.jpg)
![Page 5: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/5.jpg)
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.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/6.jpg)
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.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/7.jpg)
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.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/8.jpg)
![Page 9: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/9.jpg)
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.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/10.jpg)
![Page 11: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/11.jpg)
![Page 12: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/12.jpg)
![Page 13: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/13.jpg)
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.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/14.jpg)
![Page 15: Algoritmos paralelos Lab. 1: Introducción Glen Rodríguez.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/15.jpg)
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.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/16.jpg)
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.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/17.jpg)
#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.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/18.jpg)
/* 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.](https://reader034.fdocuments.ec/reader034/viewer/2022051412/54b65f7649795948098b7d1d/html5/thumbnails/19.jpg)
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; }