Professional Documents
Culture Documents
Eciciencia algortmica
BLAS
Objetivo de la sesion Mostrar mediante ejemplos como es posible mejorar el rendimiento de un programa reutilizando los datos cercanos a la CPU.
Esa reutilizacion de datos reduce el numero de transferencias entre memoria y CPU.
Eciciencia algortmica
BLAS
Eciciencia algortmica
Eciciencia algortmica
BLAS
Eciciencia algortmica
Eciciencia algortmica
BLAS
Modelo
Se considera la ejecucion de un programa sobre un sistema monoprocesador con dos niveles de memoria: Nivel de memoria lenta: con gran capacidad de almacenamiento, pero tiempo de acceso elevado. Nivel de memoria rapida: con reducida capacidad de almacenamiento, pero acceso instantaneo. No hay transferencia por bloques de palabras entre niveles de memoria.
Se transeren palabras simples.
Eciciencia algortmica
BLAS
Tiempo de ejecucion
Unicamente se contabiliza el tiempo consumido por el total de operaciones aritmeticas realizadas y el tiempo necesario para transferir los datos con los que se ha operado entre niveles de memoria. De acuerdo con eso, el tiempo de ejecucion del programa se puede expresar como f tf + m tm , donde: m := numero total de palabras transferidas entre niveles de memoria tm := tiempo medio de transferencia por palabra f := numero total de operaciones aritmeticas en coma otante (op) realizadas tf := tiempo medio por op (con anchura de operando igual a una palabra de
Eciciencia algortmica
BLAS
El tiempo f tf consumido por las operaciones aritmeticas marca un mnimo para el tiempo total de ejecucion: f tf + m tm = f tf 1 + tm m tf f .
Ese mnimo solo es posible si todos los datos con los que operar se encuentran en el nivel de memoria rapida. Los ratios que forman el termino aditivo tm m tf f inuyen de modo diferente en la eciencia del programa.
Eciciencia algortmica
BLAS
Equilibrio de maquina Es el cociente entre el tiempo de transferencia y el tiempo por op: tm . tf Establece un lmite al rendimiento efectivo de cualquier programa en un sistema monoprocesador. Densidad aritmetica Es el promedio de operaciones en coma otante realizadas por palabra transferida: q := f . m
Eciciencia algortmica
BLAS
Maquina I NTEL I NTEL I NTEL I NTEL C ORE I 7-2600 C ORE I 7-2600 C ORE 2 Q UAD 6600 C ORE 2 Q UAD 6600
#core 4 1 4 1
Eciciencia algortmica
BLAS
Eciciencia algortmica
BLAS
Valores pequenos de q hacen que el rendimiento quede dominado por la latencia de la memoria lenta. Aumentar la densidad aritmetica q hace que el tiempo de ejecucion se acerque al mnimo f tf .
Eciciencia algortmica
BLAS
Cuando la implementacion de un algoritmo logra una densidad aritmetica que al menos iguala el valor del equilibrio de la maquina sobre la que se va a ejecutar, q tm , tf
Eciciencia algortmica
BLAS
Asume que la capacidad del nivel de memoria rapida es suciente para retener cerca de la CPU todos los datos en juego.
Razonable si se trata de memoria cache. No si se trata del conjunto de registros (capacidad usual entre 16 y 64 palabras de transferencia).
Eciciencia algortmica
BLAS
Eciciencia algortmica
Eciciencia algortmica
BLAS
BLAS2
Operaciones matriz con vector: producto y otras. Realizacion en 2 bucles.
BLAS3
Operaciones entre matrices: producto y otras. Realizacion en 3 bucles.
Eciciencia algortmica
BLAS
Eciciencia algortmica
Eciciencia algortmica
BLAS
Primer algoritmo for (j = 0; j < M; ++j) { r = 0; for (k = 0; k < N; ++k) r += a[j][k] * x[k]; y[j] = r; }
Eciciencia algortmica
BLAS
El algoritmo opera sobre M N + M + N palabras y realiza un total de 2 M N operaciones aritmeticas. En potencia, la densidad aritmetica podra ser tan alta como 2M N 2 . M N +M +N
Eciciencia algortmica
BLAS
Eciciencia algortmica
BLAS
Numero de palabras transferidas: m = M (2 N + 1) Numero de operaciones aritmeticas: f = 2 M N Intensidad computacional conseguida: q = f /m = 2N <1 2N +1
Eciciencia algortmica
BLAS
Segundo algoritmo (d 1)
for (j = 0; j < M; j += d) { y0 = y1 = = yd1 = 0; for (k = 0; k < N; ++k) { t = x[k]; y0 += a[j + 0][k] * t; y1 += a[j + 1][k] * t; . . . yd1 += a[j + d -1][k] * t; } y[j + 0] = y0; y[j + d - 1] = yd1 ; }
Eciciencia algortmica
BLAS
Eciciencia algortmica
BLAS
<2
d <2 d +1
Eciciencia algortmica
BLAS
Eciciencia algortmica
Eciciencia algortmica
BLAS
Eciciencia algortmica
BLAS
El algoritmo opera sobre 3 N 2 palabras y realiza un total de 2 N 3 operaciones aritmeticas. En potencia, la densidad aritmetica podra ser tan alta como 2 N3 = O(N) . 3 N2 Puede conseguirse un mayor rendimiento que con BLAS2, por lo que los algoritmos de calculo masivo usan BLAS3 siempre que es posible.
Eciciencia algortmica
BLAS
Eciciencia algortmica
BLAS
Numero de palabras transferidas: m = N (N (2 N + 1)) = N 2 (2 N + 1) Numero de operaciones aritmeticas: f = 2 N 3 Intensidad computacional conseguida: q= 2 N3 2N = <1 2 (2 N + 1) 2N +1 N
Eciencia algortmica igual a la del primer algoritmo para el producto matriz por vector.
Eciciencia algortmica
BLAS
Se adapta el modo de operacion del algoritmo de Sylvester a matrices estructuradas por bloques.
Se hace la abstraccion de manejar las matrices A, B y C como matrices compuestas por bloques Editor b. Edited by Foxit PDF b
Copyright (c) by Foxit Software Company, 2004 For Evaluation Only.
C(i,j)
C(i,j)
A(i,k)
B(k,j)
Las operaciones aritmeticas indicadas en el siguiente algoritmo representan operaciones matriciales por bloques.
Eciciencia algortmica
BLAS
Esquema de transferencia del algoritmo por bloques for (i = 0; i < n; ++i) for (j = 0; j < n; ++j) {
/* El bloque C[i][j] se carga en memoria rpida */ a
Eciciencia algortmica
BLAS
El algoritmo que trabaja por bloques realiza igual numero de operaciones aritmeticas en coma otante que el algoritmo que trabaja por elementos. Sin emabrgo, ha variado el orden en que se realizan esas operaciones. En consecuencia, tambien el patron de acceso a los operandos implicados.
Eciciencia algortmica
BLAS
El algoritmo que trabaja por bloques realiza igual numero de operaciones aritmeticas en coma otante que el algoritmo que trabaja por elementos. Sin emabrgo, ha variado el orden en que se realizan esas operaciones. En consecuencia, tambien el patron de acceso a los operandos implicados.
Eciciencia algortmica
BLAS
El algoritmo que trabaja por bloques realiza igual numero de operaciones aritmeticas en coma otante que el algoritmo que trabaja por elementos. Sin emabrgo, ha variado el orden en que se realizan esas operaciones. En consecuencia, tambien el patron de acceso a los operandos implicados.
Eciciencia algortmica
BLAS
En consecuencia, incrementando el tamano b del bloque se podra aumentar la eciencia algortmica del calculo.
Eciciencia algortmica
BLAS
En consecuencia, incrementando el tamano b del bloque se podra aumentar la eciencia algortmica del calculo.
Eciciencia algortmica
BLAS
En consecuencia, incrementando el tamano b del bloque se podra aumentar la eciencia algortmica del calculo.
Eciciencia algortmica
BLAS
Eso signica que el algoritmo por bloques resulta mas eciente cuanto mayor sea el tamano del bloque: tm 1 0, cuando b . tf b Hay que tener en cuenta que:
En todo momento en memoria rapida hay alojado un bloque de cada matriz A, B y C. La capacidad de la memoria rapida es Mfast .
En consecuencia 3 b2 Mfast .
Eciciencia algortmica
BLAS
Eso signica que el algoritmo por bloques resulta mas eciente cuanto mayor sea el tamano del bloque: tm 1 0, cuando b . tf b Hay que tener en cuenta que:
En todo momento en memoria rapida hay alojado un bloque de cada matriz A, B y C. La capacidad de la memoria rapida es Mfast .
En consecuencia 3 b2 Mfast .
Eciciencia algortmica
BLAS
Eso signica que el algoritmo por bloques resulta mas eciente cuanto mayor sea el tamano del bloque: tm 1 0, cuando b . tf b Hay que tener en cuenta que:
En todo momento en memoria rapida hay alojado un bloque de cada matriz A, B y C. La capacidad de la memoria rapida es Mfast .
En consecuencia 3 b2 Mfast .
Eciciencia algortmica
BLAS
Se ha mostrado que la densidad aritmetica del algoritmo por bloques es aproximadamente igual al tamano del bloque: qb . Eso permite transformar la cota impuesta por la capacidad de la memoria rapida: 3 b2 Mfast 3 q 2 Mfast .
Eciciencia algortmica
BLAS
Se ha mostrado que la densidad aritmetica del algoritmo por bloques es aproximadamente igual al tamano del bloque: qb . Eso permite transformar la cota impuesta por la capacidad de la memoria rapida: 3 b2 Mfast 3 q 2 Mfast .
Eciciencia algortmica
BLAS
necesaria para que el tiempo de ejecucion de un algoritmo de calculo baje de dos veces el tiempo mnimo f tf , se obtiene la condicion Mfast 3 q 2 3 tm tf
2
Eciciencia algortmica
BLAS
En resumen, solo si la capacidad de la memoria rapida satisface tm 2 Mfast 3 tf es posible conseguir que el tiempo de ejecucion del algoritmo por bloques sea menor que dos veces el tiempo mnimo (tiempo empleado en las 2 N 3 operaciones aritmeticas realizadas).
Eciciencia algortmica
BLAS
Ese requerimiento en capacidad resulta razonable para la memoria cache de nivel 1. En general, queda por encima de la capacidad de almacenamiento del conjunto de registros de un procesador no especializado.
Eciciencia algortmica
BLAS