Document

Anuncio
Basic Linear Algebra
Subprograms (BLAS)
Avances en la Generación de Bibliotecas de Álgebra Lineal
Universidad Politécnica de Valencia
Marzo, 2006
Índice






¿Qué es la biblioteca BLAS?
Organización de BLAS
Funcionalidad de BLAS
Prestaciones de BLAS
 BLAS-2
 BLAS-3
Optimización del producto de matrices
Fuentes de información
BLAS
¿Qué es la Biblioteca BLAS?

En la base de los problemas de Álgebra lineal pueden identificarse un
conjunto de operaciones numéricas básicas como, por ejemplo:
 Cálculo de la norma de un vector,
 Resolución de un sistema triangular de ecuaciones,
 Producto de matrices, etc.

BLAS (Basic Linear Algebra Subprograms) es un conjunto de núcleos
(rutinas) computacionales escritos en Fortran 77 para operaciones básicas
del Álgebra lineal
BLAS
¿Qué es la Biblioteca BLAS?

Las especificaciones (interfaces y funcionalidad) de los núcleos de BLAS se
han convertido en estándares de facto. Ejemplo:
 Cálculo de la norma de un vector
FUNCTION xNRM2( N, X, INCX )

Implementación de referencia
 http://www.netlib.org/blas
BLAS
¿Qué es la Biblioteca BLAS?

Si la mayor parte de los cálculos se realizan en forma de las operaciones
del BLAS, su optimización redunda en una reducción del tiempo de la
resolución de las aplicaciones

Existen implementaciones de BLAS optimizadas por los propios fabricantes:
 ACML de AMD,
 Velocity Engine de Apple,
 libsci de Cray,
 MLIB de HP,
 ESSL de IBM,
 MKL de Intel,
 PDLIB/SX de NEC,
 SCSL de SGI,
 Sun Performance Library de SUN, etc.
BLAS
¿Qué es la biblioteca BLAS?

...aunque también existen otras implementaciones eficientes
 Implementación portable: ATLAS
 GotoBLAS para Intel Pentium/IA-64, Alpha EV, SPARC, IBM PowerPC,
AMD Opteron, etc.

Además, algunas implementaciones proporcionan paralelismo a nivel de
threads para arquitecturas con memoria compartida (espacio de
direccionamiento único):
 MKL de Intel
 GotoBLAS para Intel
 ATLAS, etc.
BLAS
¿Qué es la biblioteca BLAS?

BLAS constituye la interfaz entre las bibliotecas y aplicaciones numéricas
de alto nivel y la arquitectura subyacente
Aplicaciones
Optimizaciones independientes
de la arquitectura
LAPACK
BLAS
Proc.
BLAS
Optimizaciones dependientes
de la arquitectura
¿Qué es la biblioteca BLAS?

BLAS define la especificación de las rutinas:
 Interfaz
FUNCTION xNRM2( N, X, INCX )


Funcionalidad
Cálculo de la norma de un vector
Revisaremos la funcionalidad ofrecida por BLAS. Las interfaces de las
rutinas se verán en la parte práctica
BLAS
Organización de BLAS

BLAS-1
 Operaciones básicas sobre escalares y vectores
 Caracterización: O(n) cálculos sobre O(n) datos
 Ejemplo: Cálculo de la norma de un vector

BLAS-2
 Operaciones básicas de tipo matriz-vector
 Caracterización: O(n2) cálculos sobre O(n2) datos
 Ejemplo: Resolución de un sistema triangular de ecuaciones

BLAS-3
 Operaciones básicas de tipo matriz-matriz
 Caracterización: O(n3) cálculos sobre O(n2) datos
 Ejemplo: Producto de matrices
BLAS
Funcionalidad de BLAS

BLAS-1. Operandos: a ∈ℝ , x , y ∈ℝ
 Operaciones de reducción


Producto escalar
a ⇐ xT y

Suma
a ⇐

a ⇐ ∥x∥2
Máximo
a ⇐ max∣x i∣
Rotaciones de Givens
Operaciones vectoriales
x ⇐ ax

Escalado de un vector

Aplicación de una rotación de Givens
AXPY
y ⇐ a x y
Movimientos de datos

BLAS
∑ ∣x i∣
Norma vectorial
Generación de transformaciones


n
Copia
x ⇐ y
Intercambio
x ⇔ y
Funcionalidad de BLAS

BLAS-2. Operandos:

a ∈ℝ , x ∈ℝ n , y∈ℝ m , f  A∈ℝ mxn ,
T ∈ℝnxn triangular , f  M =M o M T
Producto matriz-vector
y ⇐ ya f  A x

Actualizaciones de rango 1(y 2)
A ⇐ Aayx T

Resolución de sistemas triangulares lineales
x ⇐ f T −1 x
BLAS
Funcionalidad de BLAS

BLAS-3. Operandos:

a , b ∈ℝ , f  A∈ℝ mxk , f  B∈ℝ kxn ,C ∈ℝ mxn
T ∈ℝ mxm triangular , f  M = M o M T
Producto de matrices
C ⇐ aC b f  A f '  B 

Actualizaciones de rango k
C ⇐ C af  A f  AT , C=C T , m=n

Resolución de sistemas triangulares lineales múltiples
B ⇐ f T −1 B , m=k
B ⇐ B f T −1 , m=n
BLAS
Funcionalidad de BLAS

Tipos de datos
 Simple precisión (IEEE 754 – 32 bits)
 Doble precisión (IEEE 754 – 64 bits)
Reales
 Complejos

BLAS
Funcionalidad de BLAS

Tipos de matrices
General
Simétrica/
Hermitiana
Triangular
Densa
Formatos
empaquetados
disponibles
Banda
Sólo una mitad almacenada
BLAS
Prestaciones
Plataforma:
 Procesador:
 Memoria:
 Biblioteca BLAS:
 Compilador:
 S.O.:
Intel Xeon 2.4 GHz
512 KB de caché L2 y 1 GB de RAM
GotoBLAS 0.96st
gcc 3.3.5; optimización -O3
Linux 2.4.27

Parámetro de rendimiento:
MFLOPs

Velocidad pico teórica:
4800 MFLOPs

BLAS
Prestaciones: BLAS-2
¿Qué pasa desde
n=220?
BLAS
Prestaciones: BLAS-2

¿Qué pasa desde n=220?
Una matriz nxn de números en doble precisión, con n=220 ocupa
220x220x8 = 387.200 Bytes...
... y la memoria caché de segundo nivel del procesador es de tamaño 512
Kbytes
BLAS
Prestaciones: BLAS-3
BLAS
Prestaciones: BLAS-3


¿Por qué 480 Mflops para dgemv y 4000 Mflops para dgemm?
La justificación viene de los ratios entre cálculo (flops) y movimientos de
datos (memops)

dgemv:
2 n2 flops
=2
2
memops
n
¡Necesitamos una memoria capaz de suministrar datos al procesador
a la mitad de velocidad que éste realiza los cálculos!

dgemm: 2 n
3
flops
n
=
2
6 n memops 3
¡A medida que crece el tamaño del problema, la velocidad de la
memoria se vuelve menos importante!
BLAS
Optimización del Producto de Matrices

Consideraremos el producto general
C
=
C
+
A
B
con todas las matrices cuadradas de la misma dimensión
BLAS
Optimización del Producto de Matrices

La operación puede implementarse de 3 formas diferentes
 GEPP


BLAS
C
=
C
+
A
B
C
=
C
+
A
B
C
=
C
+
A
B
GEMP
GEPM
Optimización del Producto de Matrices

Consideremos la implementación de GEPP
B
C
=
C
+
A
Ésta, a su vez, puede implementarse de dos modos diferentes
 GEPB
B
C

=
C
+
A
GEBP
B
C
BLAS
=
C
+
A
Optimización del Producto de Matrices

Por último, consideremos GEBP
C
=
C
+
A
B
y supongamos que:
 C es mc x n, A es mc x kc y B es kc x n
Las dimensiones permiten que A y sendas columnas de B y C residan
en la caché
 Disponemos de una implementación capaz de calcular dgemv a la
máxima velocidad del procesador si la matriz y los vectores residen en
la caché
 Si A está en la caché, entonces permanece allí hasta que ya no sea
necesaria

BLAS
Optimización del Producto de Matrices

Entonces, podemos implementar GEBP como una secuencia de dgemv
C
=
C
+
A
B
con los siguientes costes:
 Cargar A (mc x kc) en la caché:
mc kc memops

Cargar los pares de columnas de C y B en la caché:
(mc+kc)n memops

Almacenar las columnas modificadas de C en la memoria:
mc n memops

Calcular los productos matriz-vector:
2mc kc n flops
BLAS
Optimización del Producto de Matrices

Sea c ≈ mc ≈ kc; entonces el ratio entre cálculo y movimientos de datos es
de:
2c 2 n
2
c 3cn
Así, si c ≈ n/100, incluso si las¿ operaciones con memoria son 10 veces
¿
más lentas que los cálculos, estas operaciones únicamente añaden un
10% de sobrecoste al total
BLAS
Fuentes de Información: www, google,...

Sitio en netlib: http://www.netlib.org/blas
 Basic Linear Algebra Subprograms Technical (BLAST) Forum Standard,
2001: http://www.netlib.org/blas/blast-forum
 BLAS quick reference: http://www.netlib.org/blas/blasqr.pdf
 BLAS FAQs: http://www.netlib.org/blas/faq.html
 BLAS de referencia: http://www.netlib.org/blas/blas.tgz
BLAS
Fuentes de Información: www, google,...

Definición de núcleos del Álgebra lineal del BLAS-1
(http://www.acm.org/toms)
R.J. Hanson, F.T. Krogh, C.L. Lawson. “A proposal for standard
linear algebra subprograms”. ACM Signum Newsletter, 8:16, 1973.
C.L. Lawson, R.J. Hanson, D. Kincaid, F.T. Krogh. “Basic Linear
Algebra Subprograms for FORTRAN usage”. ACM TOMS, 5:308323, 1979
BLAS
Fuentes de Información: www, google,...

Definición de núcleos del Álgebra lineal del BLAS-2 y BLAS-3
(http://www.acm.org/toms)
J.J. Dongarra, J. Du Croz, S. Hammarling, R.J. Hanson. “An
extended set of FORTRAN basic linear algebra subprograms”.
ACM TOMS, 14:1-32, 1988
J.J. Dongarra, J. Du Croz, I.S. Duff, S. Hammarling. “A set of
level 3 basic linear algebra subprograms”. ACM TOMS, 16:1-28,
1988
BLAS
Fuentes de Información: www, google,...

Implementaciones optimizadas de BLAS
 ATLAS: http://math-atlas.sourceforge.net/
 GotoBLAS: http://www.tacc.utexas.edu/resources/software
 MKL de Intel:
http://www.intel.com/cd/software/products/asmo-na/eng/perflib/mkl

Implementación eficiente del producto de matrices:
http://www.cs.utexas.edu/users/flame

Laboratorio del curso
BLAS
Descargar