Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Multiplicacin de Matrices
Esquema bsico:
Multiplicacin de Matrices
Procedimiento secuencial
Un solo proceso que ejecuta:
for(i=0; i<NFA; i++) for(j=0; j<NCB; j++) { c[i][j] = 0; for(k=0; k<NCA; k++) c[i][j]=c[i][j]+a[i][k]*b[k][j]; }
Multiplicacin de Matrices
Un proceso maestro distribuye las distintas tareas al resto de procesos. Varios procesos worker calcula un cierto nmero de filas de la matriz resultante y reenva el resultado parcial al proceso maestro.
Num_workers = num_procesos -1
Multiplicacin de Matrices
Procedimiento paralelo: proceso MAESTRO Conoce las matrices a multiplicar a y b Tareas a realizar por el MAESTRO:
Inicializacin de las matrices a y b Clculo del nmero de filas que hay que enviar a cada proceso worker:
nfilas = NFA / num_workers filas_extra = NFA % num_workers
Multiplicacin de Matrices
Subparte de la matriz resultado elementos de la c nfilas*NCB elementos. Atencin!!! dnde metemos los elementos recibidos???
Respuesta: cada worker puede haber
calculado un nmero de filas distintas, calcular cuntas y guardar resultado en matriz c con el desplazamiento adecuado.
Multiplicacin de Matrices
Multiplicacin de Matrices
Procedimiento paralelo: proceso WORKER Desconoce tanto la matriz a como la b Tareas a realizar por un WORKER:
Fase de Clculo:
for(i=0; i<nfilas; i++) for(j=0; j<NCB; j++) c[i][j]=0; //inicializa la matriz for(k=0; k<NCA; k++) c[i][j] = c[i][j]+a[i][k]*b[k][j]; Nmero de iteraciones = nfilas*NCA*NCB
Multiplicacin de Matrices
Multiplicacin de Matrices
Procedimiento paralelo: programa comn Todos los procesos ejecutan el mismo programa donde en el main tendremos:
if(taskid==0)
//soy el maestro
if(taskid>0)
//soy un worker
Multiplicacin de Matrices
MPI_send(&nfilas,1,MPI_INT,i,FROM_MASTER,MPI_COMM_WORLD)
MPI_send(a[offset],nfilas*NCA,MPI_DOUBLE,i,FROM_MASTER,MPI_COMM_WOR LD)
MPI_send(b[0],NFB*NCB,MPI_DOUBLE,i,FROM_MASTER,MPI_COMM_WORLD)
Multiplicacin de Matrices
MPI_send(c,nfilas*NCB,MPI_DOUBLE,0,FROM_WORKER,MPI_COMM_WORLD)
Actualizo offset
Multiplicacin de Matrices
Procedimiento paralelo: ejemplo NCA=6 NFA=5 NCB=5 NFB=6 Ejecucin secuencial: NFA*NCB*NCA= 5*5*6 = 150 iteraciones Ejecucin paralela con 2 workers = nfilas*NCB*NCA
Primer worker nfilas=3 3*5*6=90 iteraciones Segundo worker nfilas=2 2*5*6=60iteraciones 1 6 veces ms rpido que en secuencial Cada worker nfilas=1 1*5*6=30 iteraciones 5 veces ms rpido que en secuencial
Grid 5000
Plataforma de experimentacin Francia
Introduccin Grid y Grid Computing GRID: infraestructura que permite la integracin y el uso colectivo de ordenadores de alto rendimiento, redes y bases de datos que son propiedad y estn administrados por diferentes instituciones. GRID COMPUTING: tecnologa innovadora que permite utilizar de forma coordinada todo tipo de recursos que no estn sujetos a un control centralizado.
Grid 5000 Introduccin Plataforma de experimentacin 10 laboratorios franceses implicados Para qu?: construir una plataforma que permita a los desarrolladores de la comunidad (registrados), validar los distintos niveles de software creados para la puesta en marcha de las tecnologas grid grid computing. Intenta conseguir:
rapidez de calculo y capacidad de almacenamiento Utilizacin de red jerrquica de mquinas Permitir al usuario de introducir sus aplicaciones
Oar.site.grid5000.fr
Podemos crear una imagen del entorno que nos interese para nuestro experimento. Podemos desarrollar nuestra imagen en las mquinas que hemos reservado para facilitar nuestras experimentos utilizando la herramienta KADEPLOY. Sincronizacin de los distintos clusters utilizando la herramienta RSYNC.
Grid 5000 Utilizacin de nuestra imagen Hacemos la reserva de N mquinas con la herramienta OAR:
>> oarsub I q deploy l nodes=N
Fichero $OAR_FILE_NODES : contiene los nombres de todas las mquinas reservadas Desarrollamos nuestra imagen en las mquinas reservadas ($OAR_FILE_NODES) con KADEPLOY:
>> kadeploy e mi_imagen f $OAR_FILE_NODES p sda6
Una nueva plataforma para el clculo distribuido HiPoP Es escalable? test en grid 500 Imagen creada: