PDF de programación - Librerías matriciales paralelas ScaLAPACK

Imágen de pdf Librerías matriciales paralelas ScaLAPACK

Librerías matriciales paralelas ScaLAPACKgráfica de visualizaciones

Publicado el 28 de Mayo del 2018
616 visualizaciones desde el 28 de Mayo del 2018
1.013,3 KB
76 paginas
Creado hace 13a (30/11/2010)
Librerías matriciales paralelas

ScaLAPACK

Javier Cuenca

Dpto. de Ingeniería y Tecnología de Computadores

Domingo Giménez

Dpto. de Informática y Sistemas

Facultad de Informática

http://dis.um.es/~domingo

Universidad de Murcia

1

2

Contenido

 Introducción
 Librería BLACS
 Librería PBLAS
 Librería ScaLAPACK

Introducción

3

ScaLAPACK

Paso de mensajes

Direccionamiento
global

Independiente de la
plataforma

PBLAS

LAPACK

BLACS

Dependiente de la
plataforma

Secuencial

Direccionamiento
local

BLAS

Comunicaciones: PVM, MPI

Librería BLACS
(Basic Linear Algebra Communication
Subprograms)

4

 “Basic Linear Algebra Communication

Subprograms”

 Hace uso de los paquetes software de paso de

mensajes.

 Proporciona facilidad de uso y portabilidad

para la comunicación en problemas de álgebra
lineal.

Librería BLACS.
Motivación

5

 Hay varios paquetes que proporcionan una interfaz
de paso de mensajes que permanecen invariables a
través de varias plataformas (ej. PVM, MPI, PICL).

 Pero, estos paquetes son librerías generales y sus

interfaces no son tan fáciles de usar en álgebra
lineal como sería deseable.

Librería BLACS.
Objetivos

6

 Facilidad de programación

 Simplifica el paso de mensajes y así reduce los

errores de programación.

 Facilidad de uso

 Portabilidad

 Está a un nivel en el que es fácilmente utilizable

por los programadores de álgebra lineal.

 Proporciona una interfaz que está soportada por

un gran abanico de computadores paralelos.

Librería BLACS.
Resultado

7

 Con BLACS la interfaz y los métodos de uso de las

rutinas, han sido especializados y por tanto
simplificados.

Librería BLACS.
Ideas base

8

 Comunicación de matrices

 Generales

 M filas por N columnas
 LDA: Distancia entre dos elementos fila consecutivos

(Column-major).

 Trapezoidales, definidas por

 MxN, LDA
 UPLO, DIAG (‘U’,’N’)

Librería BLACS.
Ideas base.
Parámetro UPLO
UPLO

M <= N

m-n+1

m

‘U’

‘L’

m

n

n-m+1

n-m+1

n

9

M>N

n

m

m

m-n+1

n

Librería BLACS.
Ideas base

10

 Mapeo de los procesos en un grid

Array lineal de ID de procesos

0

1

2

...

Np-1

0

0

4

2

1

5

3

2

6

4

3

7

0

1

8 procesos mapeados en

un grid 2x4

Un conjunto de procesos 0,1,...,Np-1
se mapea como una malla de PxQ procesos,
donde PxQ = Ng <= Np

Librería BLACS.
Ideas base

11

 Ámbito de una operación en una malla 2D

Ámbito

Fila

Columna

Significado

Todos los procesos de la fila participan en la
operación

Todos los procesos de la columna participan en
la operación

Todos

Todos los procesos participan en la operación

Librería BLACS.
Ideas base

12

 Contextos

 Cada malla lógica de procesos está contenida en

un contexto BLACS.

 Los contextos permiten:

 Crear grupos de procesos arbitrarios
 Crear grids solapados o disjuntos
 Aislar los procesos de los grids para que no interfieran

con los de otros grids.

Librería BLACS.
Rutinas

13

Comunicación

Pto. a pto.
Difusión
Reducción

Rutinas

Apoyo

Inicialización
Destrucción
Información y otras
No oficiales

Librería BLACS.
Rutinas.
Comunicación Pto a pto

14

 Nomenclatura de las rutinas punto a punto y

difusión

vXXYY2D

Tipo de datos:

I (Integer), S, D, C, Z

v

Forma de la matriz:

XX

GE
TR

Tipo Comunicación:

YY

SD, RV (Send, Recieve)
BS, BR (Bcast send, recv)

Librería BLACS.
Rutinas.
Comunicación Pto a pto

15

 Envío

 vGESD2D(ICONTXT,M,N,A,LDA,RDEST,CDEST)
 vTRSD2D(ICONTXT,UPLO,DIAG,M,N,A,LDA,RDEST,CDEST)

 Recepción

 vGERV2D(ICONTX,M,N,A,LDA,RSRC,CSRC)
 vTRRV2D(ICONTX,UPLO,DIAG,M,N,A,LDA,RSRC,CSRC)

Librería BLACS.
Rutinas.
Difusión

16

 Envío

 vXXBS2D(ICONTX,SCOPE,TOP[,UPLO,DIAG],M,N,A,

LDA)

 Recepción

 vXXBR2D(ICONTX,SCOPE,TOP[,UPLO,DIAG],M,N,A,

LDA,RSRC,CSRC)

Librería BLACS.
Rutinas.
Difusión - Topologías

17

 Basadas en anillo (pipelining)

 Anillo unidireccional
 Anillo dividido
 Multianillo

 Basadas en árboles (non-pipelining)

 Hipercubo
 Árbol general

 General Tree Gather
 Intercambio bidireccional
 http://www.netlib.org/blacs/BLACS/Top.html#BSRing

Librería BLACS.
Rutinas.
Difusión

18

 Máximo

 vGAMX2D(ICONTX,SCOPE,TOP,M,N,A,LDA,RA,CA,RCFLAG,RD

EST,CDEST)

 Mínimo

 vGAMN2D(ICONTXT,SCOPE,TOP,M,N,A,LDA,RA,CA,RCFLAG,R

DEST,CDEST)

 Suma

 vGSUM2D(ICONTXT,SCOPE,TOP,M,N,A,LDA,RDEST,CDEST)

Librería BLACS.
Rutinas.
Apoyo

19

 Inicialización

 BLACS_PINFO: usada cuando se necesita alguna información

inicial del sistema. Devuelve el índice de proceso y el número de
procesos.

 BLACS_SETUP: esta solo tiene sentido en PVM que permite añadir

dinámicamente procesos.

 BLACS_GRIDINIT: mapea los procesos disponibles en el grid

BLACS. Devuelve el contexto.

 BLACS_GRIDMAP: establece como se mapearán los procesos

coordenados BLACS respecto de la numeración nativa de la
máquina.

Librería BLACS.
Rutinas.
Apoyo

20

 Destrucción

 BLACS_FREEBUF: libera los buffers usados por BLACS.
 BLACS_GRIDEXIT: libera un contexto BLACS.
 BLACS_ABORT: utilizada para abortar un proceso,

normalmente se llama cuando ocurre un error.

 BLACS_EXIT: esta rutina se debe llamar cuando un proceso

ha terminado de usar BLACS. Se puede indicar si la capa
inferior de comunicación se va a seguir usando o si se
puede liberar (pvm_exit).

Librería BLACS.
Rutinas.
Apoyo

21

 Información y otras:

 BLACS_GRIDINFO: devuelve información acerca de un

proceso en un determinado contexto.

 BLACS_PNUM: devuelve el número de proceso del sistema

dado su posición en el grid.

 BLACS_PCOORD: dado el número de proceso del sistema

devuelve sus coordenadas en el grid.

Librería BLACS.
Rutinas.
Apoyo

22

 BLACS_GET: devuelve información interna de BLACS

(context handle, rango de IDs de mensajes, nivel de
depuración,...).

 BLACS_SET: establece valores internos de parámetros

BLACS.

Librería BLACS.
Rutinas.
Apoyo

23

 Rutinas no oficiales

 No forman parte del BLACS estándar.
 Pueden no estar en todas las implementaciones de BLACS.
 Ejemplos:

 SETPVMTIDS
 DCPUTIME
 DWALLTIME

Librería BLACS.
Referencias

24

 BLACS:

 Página principal: http://www.netlib.org/blacs/
 LAPACK Working Note 94, "A User's Guide to the

BLACS v1.1", Jack J. Dongarra, R. Clint Whaley,
May 5, 1997

Librería BLACS.
Ejemplos

25

Cscala_01.c
Cscala_02.c

Librería BLACS.
Ejemplo Cscala_01.c

26

 blacs_pinfo_(&iam,&nprocs);

 &iam (o): quién soy yo
 &nprocs (o): total de procesos disponibles, antes de

inicializar BLACS

 blacs_get_(&i_cero,&i_cero,&contxt);

 &i_cero (i): si estoy en un contexto ya, si no, se ignora
 &i_cero (i): qué devolver en 3er argumento. =0 un handler

del contexto de sistema por defecto

 &contxt (o): El handler del contexto sistema por defecto

 Obtiene el handler del contexto del sistema

Librería BLACS.
Ejemplo Cscala_01.c

27

 blacs_gridinit_(&contxt,"R",&nprow,&npcol);

 &contxt (i/o):

(blacs_get)

 input: el handler que indica el contexto del sistema

 Output: el nuevo handler para el contexto de BLACS

 “R” (i): row-major en el número de procesos en el grid
 &nprow (i): cuántas filas de procesos en el grid
 &npcol (i): cuántas columnas de procesos en el grid

 Inicializa el grid de procesos

Librería BLACS.
Ejemplo Cscala_01.c

28

 blacs_gridinfo_

(&contxt,&nprow,&npcol,&myprow,&mypcol);
 &contxt (i): el handler del contexto
 &nprow (o): número de filas de procesos en el grid
 &npcol (o): número de columnas de procesos en el grid
 &myprow (o): mi fila en el grid
 &mypcol (o): mi columna en el grid

 Obtiene informacion del grid existente

Librería BLACS.
Ejemplo Cscala_01.c

29

 icaller=blacs_pnum_(&contxt,&myprow,&mypcol);

 &contxt (i): handler del contexto
 &myprow (i): mi número de fila
 &mypcol (i): mi número de columna

 Devuelve el número de proceso del sistema correspondiente

a las coordenadas que se le pasa

Librería BLACS.
Ejemplo Cscala_01.c

30

 igerv2d_(&contxt,&i_uno,&i_uno,&icaller,&i_uno,&i,&j)

 &contxt (i):
 &i_uno (i): numero filas matriz a recibir
 &i_uno (i): numero columnas matriz a recibir
 &i_caller (o): matriz a recibir
 &i_uno (i): lead dimension
 &i (i): nº fila del proceso fuente del envio
 &j (i): nº columna del proceso fuente del envio

 Recibe una matriz de datos

Librería BLACS.
Ejemplo Cscala_01.c

31

 blacs_pcoord_(&contxt,&icaller,&hisrow,&hiscol);

 &contxt
 &icaller (i): número de proceso
 &hisrow (o): número de fila del proceso
 &hiscol (o): número de columna del proceso

 Dado un número de proceso devuelve sus coordenadas en

el grid

Librería BLACS.
Ejemplo Cscala_01.c

32

 blacs_abort_(&contxt,&i_uno);

 &contxt(i)
 &i_uno (i): número de error por el que se detiene

 Finaliza un proceso BLACS

Librería BLACS.
Ejemplo Cscala_01.c

33

 igesd2d_

(&contxt,&i_uno,&i_uno,&icaller,&i_uno,&i_cero,&i_cer
o);
 &contxt (i)
 &i_uno: número de filas de la matriz
 &i_uno: número de columnas de la matriz
 &i_caller: la matriz que se envía
 &i_uno: lead dimension de la matriz
 &i_cero: coordenada fila de proceso destino
 &i_cero: coordenada columna de proceso destino

 Envía una matriz de datos a otro proceso

Librería BLACS.
Ejemplo Cscala_01.c

34

Compilación

$make Cscala_01

mpicc -O4 Cscala_01.c -o Cscala_01

/usr/lib64/libmpiblacsCinit.a

/usr/lib64/libmpiblacsF77init.a

/usr/lib64/libmpiblacs.a -lmpi -llapack -lblas -lm

Ejecución
mpirun –np num_procesos Cscala_01 num_fil num_col

Librería BLACS.
Ejemplo Cscala_01.c

[javiercm@sol ejemplos]$ mpirun -np 4 Cscala_01 2 2

35

Compilación

>>>>BLACS abierto: 4 procesos<<<<<<

$make Cscala_01

GRID INICIADA: proceso 1, fila 0, columna 1

GRID INICIADA: proceso 2, fila 1, columna 0

mpicc -O4 Cscala_01.c -o Cscala_01

GRID INICIADA: proceso 3, fila 1, columna 1

/usr/lib64/libmpiblacsCinit.a

GRID INICIADA: proceso 0, fila 0, columna 0

/usr/lib64/libmpiblacsF77init.a

yo (0,0), he recibido de proceso (0,1) el men
  • Links de descarga
http://lwp-l.com/pdf11361

Comentarios de: Librerías matriciales paralelas ScaLAPACK (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad