You are on page 1of 45

Eciencia mediante Reutilizacion de Datos

Arquitectura y Procesamiento Paralelo Master Universitario en Tecnologas Informaticas


Mikel Aldaz Zaragueta Departamento de Ingeniera Matematica e Informatica Universidad Publica de Navarra-Nafarroako Unibertsitate Publikoa

Curso academico 2011-2012

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

BLAS GEMV GEMM

Eciciencia algortmica

BLAS

Eciciencia algortmica

BLAS GEMV GEMM

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.

La capacidad de la memoria rapida expresada en palabras de transferencia se indica mediante Mfast .

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

Determina la eciencia algortmica del programa.

Eciciencia algortmica

BLAS

Equilibrios de maquina reales

Rendimiento pico en precision simple:


PEAK GFLOPS 54,40 13,60 38,40 9,60 BandWidth (MW/s) 1722,4 1765,8 664,0 722,1 Equilibrio de maquina 31,6 7,7 57,8 13,3

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

Datos extrados de la coleccion recopilada en la pagina del proyecto STREAM. http://www.cs.virginia.edu/stream

Eciciencia algortmica

BLAS

Eciciencia algortmica

BLAS

Equilibrio de maquina como limitador del rendimiento

El tiempo de ejecucion queda expresado como f tf + m tm = f tf 1 + tm 1 tf q .

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

entonces se consigue que el tiempo de ejecucion este por debajo de 2 f tf .

Eciciencia algortmica

BLAS

Simplicaciones del modelo


Ignora la capacidad de traslapar los accesos a memoria con operaciones aritmeticas.
Unidades funcionales diferentes que operan en paralelo. Fundamento de la tecnica de software pipelining.

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).

Asume que el coste de acceso a la memoria rapida es 0.


Razonable si se trata de registros. No si se trata de memoria cache (de 1 a 3 ciclos en L1).

Eciciencia algortmica

BLAS

Eciciencia algortmica

BLAS GEMV GEMM

Eciciencia algortmica

BLAS

Basic Linear Algebra Subroutines (BLAS)


API estandar de uso academico e industrial. Estructurada en tres niveles:
BLAS1
Operaciones entre vectores: producto escalar, saxpy (z = x + y), y otras. Realizacion en 1 bucle.

BLAS2
Operaciones matriz con vector: producto y otras. Realizacion en 2 bucles.

BLAS3
Operaciones entre matrices: producto y otras. Realizacion en 3 bucles.

Fabricantes de hardware ofrecen implementaciones muy optimizadas.

Eciciencia algortmica

BLAS

Eciciencia algortmica

BLAS GEMV GEMM

Eciciencia algortmica

BLAS

Producto matriz por vector

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

Esquema de transferencia entre niveles de memoria

for (j = 0; j < M; ++j) { r = 0;


/* Los elementos de la fila a[j] se van cargando en memoria rpida a

/* Los elementos del vector x[0:N-1] se van cargando en memoria rp a

for (k = 0; k < N; ++k) r += a[j][k] * x[k]; y[j] = r;


/* El valor de y[j] se deposita en memoria lenta */

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

Para valores de N sucientemente grandes se puede considerar q1 .

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

Esquema de transferencia entre niveles de memoria


for (j = 0; j < M; j += d) { y0 = y1 = = yd1 = 0;

/* Los elementos del vector x[0:N-1] se van cargando en memoria rp a

/* Los elementos a[j:j+d-1][k] se van cargando en memoria rpida */ a

for (k = 0; k < N; ++k) { t = x[k]; y0 += a[j + 0][k] * t; . . . yd1 += a[j + d - 1][k] * t; }


/* Los resultados y[j:j+d-1] son depositados en memoria lenta */

y[j + 0] = y0; y[j + d - 1] = yd1 ; }

Eciciencia algortmica

BLAS

Numero de palabras transferidas: m = M (d + N (d + 1)) d 1 = M 1+N 1+ d

Numero de operaciones aritmeticas: f = 2 M N Intensidad computacional conseguida: q = f /m = 2N 1+N 1+


1 d

<2

d <2 d +1

Para valores de N sucientemente grandes se puede considerar d q 2 . d +1

Eciciencia algortmica

BLAS

Eciciencia algortmica

BLAS GEMV GEMM

Eciciencia algortmica

BLAS

Producto matriz por matriz


Algoritmo de Sylvester for (i = 0; i < N; ++i) for (j = 0; j < N; ++j) { r = 0; for (k = 0; k < N; ++k) r += A[i][k] * B[k][j]; C[i][j] = r; }

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

Esquema de transferencia entre niveles de memoria

for (i = 0; i < N; ++i) for (j = 0; j < N; ++j) {


/* La fila A[i] se va cargando en memoria rpida */ a /* La columna B[0:N-1][j] se va cargando en memoria rpida */ a

r = 0; for (k = 0; k < N; ++k) r += A[i][k] * B[k][j]; C[i][j] = r;


/* El resultado C[i][j] se deposita en memoria lenta */

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

Producto matriz por matriz en bloques


Fijado un valor b, se considera que A, B y C son matrices n n formadas por bloques de tamano b b, donde n := N . b

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

C[i][j] = 0; for (k = 0; k < n; ++k)


/* El bloque A[i][k] se carga en memoria rpida */ a /* El bloque B[k][j] se carga en memoria rpida */ a /* Producto y suma de bloques */

C[i][j] += A[i][k] * B[k][j];


/* El bloque C[i][j] se deposita en memoria lenta */

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

Numero de palabras transferidas: m = n (n (2 b2 + n (b2 + b2 )) = 2 b2 n2 (n + 1) = 2 N 2 (n + 1)

Intensidad computacional conseguida: q= 2 N3 N b = 2 (n + 1) n+1 2N

En consecuencia, incrementando el tamano b del bloque se podra aumentar la eciencia algortmica del calculo.

Eciciencia algortmica

BLAS

Numero de palabras transferidas: m = n (n (2 b2 + n (b2 + b2 )) = 2 b2 n2 (n + 1) = 2 N 2 (n + 1)

Intensidad computacional conseguida: q= 2 N3 N b = 2 (n + 1) n+1 2N

En consecuencia, incrementando el tamano b del bloque se podra aumentar la eciencia algortmica del calculo.

Eciciencia algortmica

BLAS

Numero de palabras transferidas: m = n (n (2 b2 + n (b2 + b2 )) = 2 b2 n2 (n + 1) = 2 N 2 (n + 1)

Intensidad computacional conseguida: q= 2 N3 N b = 2 (n + 1) n+1 2N

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

Si esa cota se combina con la condicion q tm , tf

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

Tabla con requerimientos para algunas maquinas:


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 tm /tf 31,6 7,7 57,8 13,3 Capacidad en Bytes requerida 11982,72 711,48 40090,08 2122,68

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

Referencias para profundizar (si se desea)


Homepage del proyecto BeBOP: http://bebop.berkeley.edu Homepage del proyecto STREAM, donde se pueden consultar valores de equilibrio de maquina obtenidos experimentalmente: http://www.cs.virginia.edu/stream Homepage de la interfaz BLAS, con documentacion y referencias sobre implementaciones no optimizadas. Homepage de la biblioteca LAPACK, con documentacion y referencias sobre la implementacion optimizada de BLAS en monoprocesadores y maquinas de memoria compartida. Homepage de la biblioteca ScaLAPACK, con documentacion y referencias sobre la implementacion de BLAS en maquinas de memoria distribuida.

You might also like