PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos

Slides:



Advertisements
Presentaciones similares
el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
Advertisements

Paso 1 Portada YO SOY EUROPEO Comisión Europea.
Complejidad Computacional
Tabla de Contenido Concurrencia.
Complejidad Computacional
MODELO DE REGRESIÓN LINEAL SIMPLE
EMPRÉSTITOS. DEFINICIÓN
IPEP de Cádiz - Dpto. de Física y Química
Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,
Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,
ANALISIS DE IMÁGENES A PARTIR DE LA PRESENTACIÓN DE ALGUNAS IMÁGENES, PEDIR A LOS NIÑOS QUE OBSERVEN LAS ILUSTRACIONES Y QUE DESCRIBAN EN SU CUADERNO LAS.
Planificación de Monoprocesadores
Procesadores de Lenguaje
CLASE 4 EL ENSAMBLADOR.
CLASE 3 SOFTWARE DEL MICROPROCESADOR
Unidad de competencia II Estadística descriptiva:
PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación
Los elementos invertibles de Z6 son 1 y 5
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Planificación con Prioridades Fijas
Funciones Excel. Parte 1. Introducción 2 Una función Excel es una fórmula o un procedimiento que se realiza en el ambiente de Visual Basic, fuera de.
DESCRIPCION DE SISTEMAS
INTRODUCCIÓN A JAVA.
PROTOCOLOS Y ESTANDARES DE RED
Sistemas de Ecuaciones
Tema 1.- Aritmética. 1.-Usar el algoritmo de Euclides para calcular el máximo común divisor de a y b y expresarlo en función de a y b para: a) a= 56,
BALANCEO DE ECUACIONES QUÍMICAS
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Bloques aleatorizados, cuadrados latinos y diseños relacionados
Técnico en programación de Software
Unidad 2 Algoritmos y resolución de problemas
Ecuaciones y Resolución de Ecuaciones Lineales
Expresiones Racionales
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Tema 6 La demanda del mercado.
La minimización de los costes
Combinadores SK.
Introducción a los protocolos de enrutamiento dinámico
3. Métodos de resolución Ecuaciones algebraicas lineales
Programación dinámica (1)
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Itahisa Nesoya González Álvarez Maruxa Yurena Suárez Lorenzo
Exponentes y Logaritmos.
CULENDARIO 2007 Para los Patanes.
El Precio.
las tensiones simples instantáneas de un sistema
AUDITORIA DE LA SEGURIDAD en Telecomunicaciones y redes de computadoras Unidad VI.
Tema 3. Optimización de Código
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
POO Java Módulo 3 Elementos de programas Identificadores
Teoría de Sistemas Operativos
Administración del Procesador
Scheduling and Mapping Introducción Marco de referencia Módulos independientes Tareas con precedencia sin costo Precedencia de tareas y retardos en la.
MOVIMIENTO ARMÓNICO SIMPLE
Algoritmos de ordenación
Ecuaciones En esta unidad se van a estudiar o recordar los siguientes puntos: Diferencias entre ecuaciones e identidades Resolución de ecuaciones de primer.
Análisis y Diseño de Algoritmos
Algoritmos Distribuidos Semana 1. Parte 2 Comunicación por Pase de Mensajes Claudia León Universidad Central de Venezuela Facultad de Ciencias Escuela.
PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación
Programación Paralela Esquemas de Programación Paralela 1 PROGRAMACIÓN PARALELA Esquemas de programación paralela REFERENCIAS Wilkinson, Allen Gibbons,
INSTITUTO TECNOLÓGICO DE CD. GUZMÁN
Clase 10: Estructuras de datos y arreglos.
Profesor: Rodrigo Sanhueza Figueroa
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Asignación de Espacio No Contiguo
Capítulo 7 Gestión de memoria.
PROGRAMACIÓN PARALELA Modelos de programación paralela Modelos computacionales Paradigmas de programación paralela Programación en memoria compartida:
Telecomunicaciones y Trabajo Distribuido. Sistema Distribuido Recursos Servidor Red Servidor Nodo ANodo C Nodo B.
Metodología de la programación
ARQUITECTURAS DE LOS SERVIDORES El computador tiene 2 aspectos para entender su funcionamiento al nivel de programación: Almacenamiento Procesamiento Para.
Transcripción de la presentación:

PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos REFERENCIAS La mayoría de los libros de la bibliografía, en particular: Foster, cap 3 Kumar, Grama, Gupta, Karypis, cap 4 Wilkinson, Allen, cap 2.3 y 2.4 Programación Paralela Análisis de Algoritmos Paralelos 1

Análisis de algoritmos paralelos Los procesadores paralelos se usan para acelerar la resolución de problemas de alto coste computacional. La finalidad principal consiste en reducir el tiempo de ejecución: si el tiempo secuencial t(n) se intentará que usando p procesadores el tiempo se reduzca a t(n)/p. Ver algunas medidas que nos dan idea de la "bondad" de un algoritmo paralelo. Programación Paralela Análisis de Algoritmos Paralelos 2

Tiempo secuencial El tiempo de ejecución de un programa secuencial depende de: tamaño de la entrada, compilador, máquina, programador, ..., si nos olvidamos de valores constantes dependientes del sistema (por ejemplo el coste de una operación aritmética en la máquina donde ejecutamos el programa) podemos considerar el tiempo función del tamaño del problema: t(n). El tiempo desde que empieza la ejecución del programa hasta que acaba. Programación Paralela Análisis de Algoritmos Paralelos 3

Tiempo de ejecución paralelo En un programa paralelo la estimación del tiempo es más compleja. Además de los parámetros anteriores, depende de: número de procesadores t(n,p), de la manera en que están conectados entre sí (topología) y con los módulos de memoria (memoria compartida o distribuida) Es el tiempo transcurrido desde que empieza la ejecución del primero de los procesadores hasta que acaba el último de ellos. Programación Paralela Análisis de Algoritmos Paralelos 4

Tiempo de ejecución paralelo DIFICULTADES: No siempre es fácil determinar el orden en que los procesadores empiezan y acaban. A lo largo de la ejecución de un programa paralelo hay puntos de sincronización de los que no siempre podemos determinar su duración al no saber en el orden en que van a llegar los distintos procesos a estos puntos. Programación Paralela Análisis de Algoritmos Paralelos 5

Tiempo de ejecución paralelo Esquema de programa paralelo: Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación 2 ... t(n,p)=ta(n,p)+tc(n,p) ta(n,p) : suma de los tiempos de las distintas partes de computación tc(n,p) : suma de los tiempos de las distintas partes de comunicación Programación Paralela Análisis de Algoritmos Paralelos 6

Tiempo de ejecución paralelo, ejemplo Programa paralelo en dos procesadores: Computación 1 2 3 Comunicación 1 1 1 Computación 2 3 2 Comunicación 2 1 1 t(n,p)=ta(n,p)+tc(n,p)=7 treal(n,p)=ta(n,p)+tc(n,p)+toverhead(n,p)=8 Programación Paralela Análisis de Algoritmos Paralelos 7

Tiempo de ejecución paralelo, ejemplo 2 3 1 t(n,p)=ta(n,p)+tc(n,p)=15 treal(n,p)=ta(n,p)+tc(n,p)-tsolapamiento(n,p)=14 Programación Paralela Análisis de Algoritmos Paralelos 8

Tiempo de ejecución Overhead debido a: sincronización, puesta en marcha de los procesos, sobrecarga de la red de comunicación, ... Se suele considerar: t(n,p)=ta(n,p)+tc(n,p)+to(n,p)-ts(n,p) Minimizar el tiempo de overhead. Maximizar el solapamiento. Programación Paralela Análisis de Algoritmos Paralelos 9

Suma de n números Secuencial: t(n)=n-1 Paralelo con n/2 procesadores, como mínimo t(n)/(n/2)=2 En cada Pi, i=0,1,...,n/2-1 inicio=2*i desplazamiento=1 activo=true para k=1,2,...,log n si activo a[inicio]=a[inicio+desplazamiento] desplazamiento=desplazamiento*2 finsi si i mod desplazamiento <>0 activo=false finpara Programación Paralela Análisis de Algoritmos Paralelos 10

Suma de n números Pasos: log n Trabajo adicional (overhead): Con n=64 Comprobación de si el procesador trabaja, Uso de las variables, Actualización de las variables. Con n=64 si cada paso secuencial y paralelo igual coste: t(n)8*t(n,p) si cada paso secuencial coste 2 y paralelo coste 5: t(n)3.5*t(n,p) Y en memoria distribuida problema de acceso a los datos. Programación Paralela Análisis de Algoritmos Paralelos 11

Suma de n números. En hipercubo Cada procesador tiene dos valores, a y b En cada Pi, i=0,1,...,n/2-1 desplazamiento=1 activo=true para k=1,2,...,log n-1 si activo a=a+b desplazamiento=desplazamiento*2 si i mod desplazamiento <>0 activo=false enviar a a i-desplazamiento/2 en otro caso recibir en b de i+desplazamiento/2 finsi finpara si i=0 Programación Paralela Análisis de Algoritmos Paralelos 12

Suma de n números. En hipercubo 0 1 P1 2 3 P0 1 1 P1 5 3 P0 1 5 P1 5 3 P2 4 5 P3 6 7 P2 9 5 P3 13 7 P2 9 13 P3 13 7 P0 6 5 P1 5 3 P0 6 22 P1 5 3 P0 28 22 P1 5 3 P2 22 13 P3 13 7 P2 22 13 P3 13 7 P2 22 13 P3 13 7 Programación Paralela Análisis de Algoritmos Paralelos 13

Suma de n números. En hipercubo Pasos: log n Trabajo adicional (overhead): Comprobación de si el procesador trabaja, Uso de las variables, Actualización de las variables, Comprobación de enviar o recibir, Envío o recepción. Con n=64 si cada paso secuencial coste 2 y paralelo coste 7: t(n)2,5*t(n,p) si ts=2*tw y tw=2*tc: t(n)1,5*t(n,p) si ts=10*tw y tw=10*tc: t(n)0,16*t(n,p) Programación Paralela Análisis de Algoritmos Paralelos 14

Suma de n números. En malla Programación Paralela Análisis de Algoritmos Paralelos 15

Suma de n números. En malla Si p=2n 2*(1+2+22+...+2n/2-1 )= 2n/2+1 comunicaciones Con n=64 si ts=2*tw y tw=2*tc: t(n)1,4*t(n,p) si ts=10*tw y tw=10*tc: t(n)0,1*t(n,p) Programación Paralela Análisis de Algoritmos Paralelos 16

Suma de n números. En anillo Si p=2n 2*(1+2+22+...+2n-1 )= 2n+1 = p-1 comunicaciones Con n=64 si ts=2*tw y tw=2*tc: t(n)0,74*t(n,p) si ts=10*tw y tw=10*tc: t(n)0,04*t(n,p) Programación Paralela Análisis de Algoritmos Paralelos 17

Coste de comunicaciones Son de los siguientes órdenes: Comunicación vecinos Comunicación todos hipercubo log p/2 log p/2 malla 2*√p log p/2 anillo p-1 log p/2 red p-1 Además, la red puede estar congestionada al haber muchos mensajes por haber muchos procesadores. Problemas: Problema de poco coste y no apropiado para resolver en paralelo, granularidad pequeña, sólo como ayuda para diseñar un programa pero no como programa final. Programación Paralela Análisis de Algoritmos Paralelos 18

Causas de reducción de las prestaciones Contención de memoria: En memoria compartida el acceso a datos comunes o que están en el mismo bloque de memoria producirá contención. Si los datos son de lectura puede no haber ese problema. En el ejemplo los procesadores escriben en zonas distintas. No hay problema de coherencia, pero puede haber de contención si hay datos en los mismos bloques de memoria. Código secuencial: Puede haber parte imposible de paralelizar, como puede ser la I/O. En el ejemplo la inicialización de variables. Además, si los datos están inicialmente en un procesador y hay que difundirlos el coste es lineal. Tiempo de creación de procesos: El programa empieza a ejecutarse con un proceso que pone en marcha los demás. El coste de creación de los procesos puede ser importante si la granularidad de estos es pequeña. Programación Paralela Análisis de Algoritmos Paralelos 19

Causas de reducción de las prestaciones Computación extra: Si se obtiene programa paralelo a partir de secuencial, son necesarias computaciones adicionales por: uso de variables de control, comprobación de identificadores de proceso, cálculo adicionales o comunicaciones para obtener datos calculados por otro procesador, ... Comunicaciones: En memoria distribuida, es tiempo adicional al aritmético. Pueden implicar trabajo de procesadores intermedios. Tiempo de sincronización: Cuando un proceso tiene que esperar a que estén disponibles datos procesados por otro. Conlleva comunicaciones en memoria distribuida. Programación Paralela Análisis de Algoritmos Paralelos 20

Causas de reducción de las prestaciones Desbalanceo de la carga: El volumen total de la computación no se distribuye por igual entre todos los procesadores: en el ejemplo, en el primer paso trabajan todos pero en los pasos siguientes va disminuyendo el número de procesadores que trabajan, también es posible que partamos de una entrada que no se puede balancear, por ejemplo si tenemos 12 datos para 8 procesadores, o que el volumen de datos varíe a lo largo de la ejecución, con lo que se necesitaría balanceo dinámico. Programación Paralela Análisis de Algoritmos Paralelos 21

Granularidad de la computación Uso de muchos procesadores no es realista: No dispondremos de tantos procesadores. Aunque dispongamos de ellos hay caída de las prestaciones. La granularidad del sistema (sistema físico+algoritmo) indica la cantidad de computación y datos asignados a cada procesador: Grano fino: si a cada procesador se asignan pocos datos o se realiza poca computación entre comunicaciones. Grano grueso: si a cada procesador se asignan muchos datos o se realiza mucha computación entre comunicaciones. Interesa programación paralela cuando el paralelismo es de grano grueso. En sistólicos el paralelismo es de grano fino. Programación Paralela Análisis de Algoritmos Paralelos 22

Suma de n números con p procesadores En cada Pi, i=0,1,...,p-1 suma=0 para j=i*n/p, ...,(i+1)*n/p-1 suma=suma+a[j] finpara sincronización a[i]=suma inicio=i*2 desplazamiento=1 si i mod 2=0 activo=true en otro caso activo=false finsi para k=1,2,...,log p-1 si activo a[inicio]=a[inicio+desplazamiento] desplazamiento=desplazamiento*2 si i mod desplazamiento <>0 Programación Paralela Análisis de Algoritmos Paralelos 23

Suma, en memoria distribuida En cada Pi, i=0,1,...,p-1 suma=0 para j=0, ...,n/p-1 suma=suma+a[j] finpara si i mod 2=0 recibir en b de i+1 activo=true en otro caso enviar suma a i-1 activo=false finsi desplazamiento=2 para k=1,2,...,log p-2 si activo suma=suma+b desplazamiento=desplazamiento*2 si i mod desplazamiento <>0 activo=false enviar suma a i-desplazamiento/2 recibir en b de i+desplazamiento/2 finpara si i=0 suma=suma+b finsi Programación Paralela Análisis de Algoritmos Paralelos 24

Suma de n números con p procesadores En memoria compartida todas las variables son locales salvo el array a. En memoria distribuida la sincronización por el paso de mensajes. El tamaño del problema (n) es múltiplo del número de procesadores (p). Se puede generalizar fácilmente. t(n,p)=2*n/p*tc+6*(log p-1)*(ts+tw) si p<<<n podemos tener en cuenta sólo los términos de mayor orden y t(n)/t(n,p)=p, que es lo mejor que se puede obtener para ir 10 veces más rápido: con ts=2*tw y tw=2*tc, si n=1000000, 100000, 10000, p=10 con ts=10*tw y tw=10*tc, es n=330*p*log p si n=1000000 p=10, 100000 p=11, 10000 no es posible Programación Paralela Análisis de Algoritmos Paralelos 25

Speed-up Mide la ganancia de velocidad que se obtiene con un programa paralelo. Es el cociente entre el tiempo secuencial y el paralelo: S(n,p)=t(n)/t(n,p) ¿Qué t(n)? El del mejor algoritmo secuencial que resuelve el problema, pero ¿cuál es el “mejor algoritmo secuencial”? depende del tamaño de la entrada, distribución de los datos, máquina, ..., y puede no conocerse. El del mejor algoritmo secuencial conocido. Pero depende de los mismos parámetros anteriores. Tiempo de ejecución en un procesador del algoritmo paralelo. Pero puede que el mejor esquema para paralelizar no sea bueno en secuencial. El tiempo de ejecución de un algoritmo secuencial “razonablemente bueno”. Habrá que indicar cuál se usa. Programación Paralela Análisis de Algoritmos Paralelos 26

Speed-up El speed-up será menor que el número de procesadores usado. Si no podría hacerse un algoritmo secuencial mejor que el que se usa, simulando el algoritmo paralelo. En algunos casos puede haber speed-up superlineal por mejor gestión de la memoria al usar más procesadores. Para un tamaño de problema fijo se aleja del valor óptimo al aumentar el número de procesadores. Para un número de procesadores fijo aumenta al aumentar el tamaño del problema. 40 35 30 p=10 25 p=20 20 p=30 p=40 15 p=50 10 5 1000 2000 3000 4000 5000 Programación Paralela Análisis de Algoritmos Paralelos 27

Speed-up, suma con n/2 procesadores En memoria compartida: n/log n En hipercubo, y malla o anillo con comunicaciones directas: n/((1+ts+tw)*log n) En malla sin comunicaciones directas: n/(log n+(ts+tw)*2*√n) En anillo sin comunicaciones directas y en red: n/(log n+(ts+tw)*n)1/(ts+tw) Programación Paralela Análisis de Algoritmos Paralelos 28

Eficiencia Da idea de la porción de tiempo que los procesadores se dedican a trabajo útil. Es el speed-up partido por el número de procesadores: E(n,p)=S(n,p)/p=t(n)*p/t(n,p) Valor entre 0 y 1. Para un tamaño de problema fijo se aleja del valor óptimo (1) al aumentar el número de procesadores. Para un número de procesadores fijo aumenta al aumentar el tamaño del problema. Programación Paralela Análisis de Algoritmos Paralelos 29

Eficiencia, suma con n/2 procesadores En memoria compartida: 2/log n0 En hipercubo, y malla o anillo con comunicaciones directas: 2/((1+ts+tw)*log n)0 En malla sin comunicaciones directas: 2/(log n+(ts+tw)*2*√n)0 En anillo sin comunicaciones directas y en red: 2/(log n+(ts+tw)*n)0 Programación Paralela Análisis de Algoritmos Paralelos 30

Speed-up, suma con p procesadores Con p fijo En memoria compartida: n/(n/p+log p)p En hipercubo, y malla o anillo con comunicaciones directas: n/(n/p+(1+ts+tw)*log p)p En malla sin comunicaciones directas: n/(n/p+log p+(ts+tw)*2*√p)p En anillo sin comunicaciones directas y en red: n/(n/p+log p+(ts+tw)*p)p Programación Paralela Análisis de Algoritmos Paralelos 31

Eficiencia, suma con p procesadores Con p fijo En memoria compartida: n/(n+p*log p)1 En hipercubo, y malla o anillo con comunicaciones directas: n/(n+(1+ts+tw)*p*log p)1 En malla sin comunicaciones directas: n/(n+p*log p+(ts+tw)*2*p*√p)1 En anillo sin comunicaciones directas y en red: n/(n+p*log p+(ts+tw)*p2)1 Programación Paralela Análisis de Algoritmos Paralelos 32

Coste Representa el tiempo (el trabajo) realizado por todo el sistema en la resolución del problema. Es el tiempo de ejecución por el número de procesadores usados: C(n,p)=p*t(n,p) En algoritmo óptimo coincidiría con el tiempo secuencial, pero en general es mayor. La diferencia se llama función overhead: to(n,p)=C(n,p)-t(n)=p*t(n,p)-t(n) Es distinto de la idea de overhead vista anteriormente y difícilmente medible. Programación Paralela Análisis de Algoritmos Paralelos 33

Distribución del trabajo Es importante para mejorar el balanceo. En memoria distribuida puede reducir el coste de las comunicaciones asignando datos que se comunican frecuentemente a procesadores vecinos. Evita comunicaciones, congestión de la red y colisiones. En memoria compartida puede influir en el coste de los accesos a memoria, si procesadores distintos acceden a bloques distintos. Normalmente que los procesadores accedan a bloques de datos. Esto además mejora el uso de la jerarquía de memoria. Programación Paralela Análisis de Algoritmos Paralelos 34

Distribución de datos. Suma de n números. En malla 5 4 6 7 1 2 3 9 8 10 11 13 12 14 16 Programación Paralela Análisis de Algoritmos Paralelos 35

Distribución de datos. Suma de n números. En anillo 7 comunicaciones 3 2 1 5 4 6 7 5 comunicaciones Programación Paralela Análisis de Algoritmos Paralelos 36

Escalabilidad Para un sistema paralelo interesa que las prestaciones se sigan manteniendo en cierta medida al aumentar el tamaño de sistema. No se puede seguir manteniendo las prestaciones manteniendo el tamaño del problema fijo y aumentando el número de procesadores. Se tratará de mantener las prestaciones al aumentar el tamaño del sistema pero aumentando el tamaño del problema. Los sistemas (físicos o lógicos) que cumplen esto se dicen escalables. La idea es, para un determinado programa, ser capaces de determinar si en el futuro, cuando aumente el número de procesadores y el tamaño de problemas que se quieren resolver, se seguirán manteniendo las prestaciones. Programación Paralela Análisis de Algoritmos Paralelos 37

Función de isoeficiencia Da idea de cómo debe crecer el tamaño del problema en función del número de procesadores para mantener la eficiencia constante. to(n,p)=p*t(n,p)-t(n) t(n,p)=(to(n,p)+t(n))/p E(n,p)=t(n)/(to(n,p)+t(n)) t(n)=(E(n,p)/(1+E(n,p))*to(n,p)=K*to(n,p) Para obtener cómo debe crecer n en función de p para mantener la eficiencia constante basta comparar el tiempo secuencial con la función overhead del paralelo. Programación Paralela Análisis de Algoritmos Paralelos 38

Isoeficiencia, suma con p procesadores Sin constantes, pues interesa la forma en que crece En memoria compartida, hipercubo, y malla o anillo con comunicaciones directas : t(n)=n  to(n,p)=n+p*log p Función de isoeficiencia: p*log p En malla sin comunicaciones directas: t(n)=n  to(n,p)=n+p*log p+p*√p Función de isoeficiencia: p1.5 (la mayor) En anillo sin comunicaciones directas y en red: t(n)=n  to(n,p)=n+p*log p+ p2 Función de isoeficiencia: p2 (la mayor) Programación Paralela Análisis de Algoritmos Paralelos 39

Isoeficiencia, suma con p procesadores Para mantener las prestaciones al variar de p1 a p2 procesadores, el tamaño debe aumentar proporcional a f(p2)/f(p1) Procesadores: 4 a 16 16 a 64 64 a 256 memoria compartida, hipercubo, y malla o anillo 8 6 5.33 con comunicaciones directas malla sin 8 8 8 comunicaciones directas anillo sin comunicaciones 16 16 16 directas y en red: Todos escalables. Unos más que otros. Programación Paralela Análisis de Algoritmos Paralelos 40

Se(n,p)=t(n)*p/t(n*p,p) Speed-up escalado Representa la relación entre el tiempo de ejecución secuencial y el paralelo, pero aumentando proporcionalmente el número de procesadores: Se(n,p)=t(n)*p/t(n*p,p) En hipercubo: Se(n,p)=n*p/(n+(1+ts+tw)*log p) En malla: Se(n,p)=n*p/(n+(ts+tw)*√p+log p) El de hipercubo es más escalable pues su cociente es menor. Programación Paralela Análisis de Algoritmos Paralelos 41

Estudio experimental de la escalabilidad Se estudia el número de operaciones por segundo (flops) por procesador: Variando el tamaño del problema al variar el número de procesadores, O utilizando el máximo tamaño de problema que cabe en la memoria del sistema proc tam flops proc tam flops 1 100 100 1 100 100 5 500 99 5 500 102 25 2500 96 25 2500 90 125 12500 91 125 12500 46 Programación Paralela Análisis de Algoritmos Paralelos 42

Estudio experimental Diseño de experimentos que nos permitan obtener conclusiones: Determinar qué tipo de conclusiones se quiere obtener: en cuanto a speed-up, escalabilidad. Definir el rango de los experimentos: número de procesadores y tamaño del problema. Comparar los resultados experimentales con los teóricos. Si no coinciden revisar los estudios teóricos o la forma en que se han hecho los experimentos. Pueden consistir en: Estudiar el programa completo. Estudiar el comportamiento en los distintos procesadores: ¿balanceo de la carga? ¿sincronización? ... Dividir el programa en partes para estudiarlas por separado. Programación Paralela Análisis de Algoritmos Paralelos 43

Comparación estudio teórico-experimental Se pueden estimar los valores constantes en las fórmulas teóricas: En particular ts y tw se obtienen con un ping-pong, o pueden tener valores distintos para distintas operaciones de comunicación. El coste de la computación se puede estimar ejecutando parte del programa en un procesador. Ajuste del modelo teórico con datos experimentales: Obtener valores constantes en el estudio teórico haciendo ajuste de mínimos cuadrados con resultados experimentales. Estudio asintótico: comportamiento teniendo en cuenta el término de mayor orden de la fórmula teórica, compararlo con la gráfica experimental. Programación Paralela Análisis de Algoritmos Paralelos 44