Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1...

67
1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de la Universidad de Cádiz Cádiz, 6-8 Abril 2005 Javier Fernández Baldomero Universidad de Granada

Transcript of Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1...

Page 1: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� ��� � �� � � � � � � ��� ��� 1

Programación científica en clusters con Octave / MPITB

II Jornadas de Software Libre de la Universidad de CádizCádiz, 6-8 Abril 2005

Javier Fernández BaldomeroUniversidad de Granada

Page 2: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� ��� � �� � �� � � � � � �� �� !"# 2

Esquema de la presentaciónLAM: sistema de paso de mensajes

Octave: entorno de cálculo científico

Interfaz de programación (API)

MPITB (MPI Toolbox)

Diseño

Utilidades

Ejemplo

Aplicaciones

Conclusiones

Page 3: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

$% &�' ( )* + ,- ' . , / / )0 '�1 234 3

LAM

Sistema de paso de mensajes

biblioteca MPI + utilidades

5 lamboot, mpirun...

basado en daemon

fuente autoconf, paquetes rpm

Implementación MPI “gratis”

licencia propia, no GNU/GPL

Ohio, Notre-dame, Indiana

Colaboran en Open-MPI

Page 4: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

67 8�9 : ;< = >? 9 @ > A A ;B 9�C DEF 4

MPI

Estándar para paso mensajes

desarrollado por MPI Forum

G universidades, fabricantes, etc...

desarrollo continuo

G MPI-1.0 Mayo'94

G MPI-1.1 Junio'95

G MPI-1.2 / 2.0 Julio'97

diversidad implementaciones

G gratuitas: LAM, MPICH...

G comerciales: ScaMPI, MPI/Pro...

Page 5: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

HI J�K L MN O PQ K R P S S MT K�U VWX 5

Paso de mensajes

Multiprocesadores (SMP)

varias CPUs (cache)memoria compartida

Y (acceso frecuente, rápido)

hebras (threads) / OpenMP

Multicomputadores (clusters)

varios computadores (CPU/M)memoria distribuidapaso de mensajes

Y (acceso infrecuente, lento)

CPU

Mem

CPU

Mem

CPU

Mem

CPU

Mem

CPU CPUCPU

Memoria

CPU

Page 6: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

Z[ \�] ^ _` a bc ] d b e e _f ]�g hij 6

Uso de LAM

lamboot

k acceso sin passwd

l rsh: ~/.rhosts

l ssh: ~/.ssh/authorized_keys

k fichero $LAMBHOST

l formato: <host> [<user>]

k asignación procesos

l round-robin por defecto

daemon lamd

l soporte mpirun / mpitask / mpimsg / lamclean / lamhalt / lamtrace...

l comunicación (según RPI = lamd / tcp / sysv / usysv / gm)

CPU3

Mem

CPU1

Mem

CPU2

Mem

CPU1

~/.rhosts

CPU1

~/.rhostsCPU2CPU3CPU1

$LAMBHOST

lamd lamd lamd

Page 7: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

mn o�p q rs t uv p w u x x ry p�z {|} 7

Uso de LAM

mpicc

~ wrapper gcc

� gcc -I<...> -L<...> -lmpi -llam ...

mpirun

� -c/-np #procesos

� -ssi <servicio> <variante>

� -ssi rpi tcp

� nomenclaturas N y C

� N n0-3 c4,6-8

� mpirun -c 2 ppong

� comunicador: grupo procesos arrancados juntos (MPI_COMM_WORLD)

CPU3

Mem

CPU1

Mem

CPU2

Mem

ppongCPU2CPU3CPU1

$LAMBHOST

mpirun ppong ppong

ppong

Page 8: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� ��� � �� � �� � � � � � �� ��� ��� 8

Uso de LAM

lamclean

� limpia cola mensajes/procesos

� como si lamboot reciente

lamhalt

� elimina daemons lamd

� como antes de lamboot

otras utilidades

mpitask, mpimsg

lamexec, lamgrow, lamshrink, lamtrace

CPU3

Mem

CPU1

Mem

CPU2

Mem

lamclean

Page 9: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� ��� � ��   ¡¢ � £ ¡ ¤ ¤ �¥ ��¦ §¨© 9

Programación MPI

Page 10: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ª« ¬�­ ® ¯° ± ²³ ­ ´ ² µ µ ¯¶ ­�· ¸¹º 10

Las 6 llamadas MPI básicasMPI_Init

int MPI_Init(int *pargc, char ***pargv)

MPI_Comm_rankint MPI_Comm_rank(MPI_Comm comm, int *rank)

MPI_Comm_sizeint MPI_Comm_size(MPI_Comm comm, int *psize)

MPI_Sendint MPI_Send(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm)

MPI_Recvint MPI_Recv(void *buf, int count, MPI_Datatype dtype, int src, int tag, MPI_Comm comm,

MPI_Status *stat)

MPI_Finalizeint MPI_Finalize(void)

Page 11: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

»¼ ½�¾ ¿ ÀÁ  ÃÄ ¾ Å Ã Æ Æ ÀÇ ¾�È ÉÊË 11

Programación MPI (cont.)

mpicc -o trivial trivial.cmpirun -c 2 trivial

Ì rank 0 a CPU2, rank 1 a CPU3 CPU3

Mem

CPU1

Mem

CPU2

Mem

CPU2CPU3CPU1

$LAMBHOST

mpirun trivial trivial

Page 12: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ÍÎ Ï�Ð Ñ ÒÓ Ô ÕÖ Ð × Õ Ø Ø ÒÙ Ð�Ú ÛÜÝ 12

Interés de MPI

Biblioteca de alto nivel para paso de mensajes

Þ libera al programador C de aprender sockets TCP/UDP, shm, etc

driver tarjeta red

MPI / daemon LAM

biblioteca MPI

aplicación MPI MPI_Send(buf, cnt, typ, dst, tag, comm)

lamreqs.c: RPI_ADVANCE(lam_rq_top, TRUE)

outw(StartDMADown, ioaddr + EL3_CMD)

send.c: lam_send(buf,cnt,typ,dst,tag,comm,LAM_RQISEND)lamsend.c: err = _mpi_req_advance()

lam-ssi-rpi.h: lam_ssi_rpi.lsra_advance(rq_top, fl_block)...ssi-rpi-tcp.h: int lam_ssi_rpi_tcp_advance(MPI_Request, int)ssi_rpi_tcp.c: add_write(req->rq_proc->p_rpi, req)

Sistema Operativorpi_tcp_low.c: r = write(sock, buff, nbytes)

Page 13: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ßà á�â ã äå æ çè â é ç ê ê äë â�ì íîï 13

Esquema de la presentaciónLAM: sistema de paso de mensajes

Octave: entorno de cálculo científico

Interfaz de programación (API)

MPITB (MPI Toolbox)

Diseño

Utilidades

Ejemplo

Aplicaciones

Conclusiones

Page 14: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ðñ ò�ó ô õö ÷ øù ó ú ø û û õü ó�ý þÿ� 14

Octave

Entorno de cálculo científico

cada vez más ~ MATLAB

� diferencias en “accesorios”

� GUI, gráficos, toolboxes...

� Simulink, Compiler, RTW...

� soporte SourceForge

� ritmo versionado abrumador

fuente autoconf, paquetes...

MATLAB “libre”

en el sentido GNU GPL

Page 15: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� � � � � �� � � � � �� �� ��� 15

Octave: entorno interpretado

M-filesinterpretadosprototipado rápidosalvar y ejecutar

.oct-filescompilados (C++, -ldl)más bajo nivel (API)

� computación intensiva

� acceso a bibliotecas

� control hardware

� import/exportación datos

M-file

g++

fuente C++.oct

try-and-error interactivodebugger integrado (dbstop)

paso intermedio compilar/linkarejecutar entonces desde Octave

depuración más complicadarequiere más habilidades

Page 16: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� � ! "# $ %& ' % ( ( ") �* +,- 16

Programación Octave

Page 17: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

./ 01 2 34 5 67 1 8 6 9 9 3: 1�; <=> 17

API Octave

Biblioteca para crear .oct

? fuente C++

@ llamadas API Octave

A wrapper g++: mkoctfile

B -I<...> -L<...> -loctave -lblas ...

C fichero .oct invocable Octave

no documentada, muy volátil

D software apoyo doxygen

E tutoriales Wiki / OctaveForge

F DaCoda, OF Developer Guide

Page 18: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

GH IJ K LM N OP J Q O R R LS J�T UVW 18

Programación API Octave

Page 19: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

XY Z[ \ ]^ _ `a [ b ` c c ]d [�e fgh 19

Esquema de la presentaciónLAM: sistema de paso de mensajes

Octave: entorno de cálculo científico

Interfaz de programación (API)

MPITB (MPI Toolbox)

Diseño

Utilidades

Ejemplo

Aplicaciones

Conclusiones

Page 20: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ij kl m no p qr l s q t t nu l�v wxy 20

DEFUN_DLD(MPI_Barrier, args, nargout,“texto ayuda”){MPI_Comm comm = (MPI_Comm) args(0).int_value();int info = MPI_Barrier(comm);return octave_value(info);}

MPITB

Interfaz DLD (.oct-files) a LAM/MPI

z 1 fichero .oct por cada llamada MPI

Sistema Operativo

API Octave

.oct-file

intérprete Octave >> info = MPI_Barrier(MPI_COMM_WORLD)

MPI lib

write(sock, buff, nbytes)

Page 21: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

{| }~ � �� � �� ~ � � � � �� ~�� ��� 21

MPITB

Toolbox: colección de ficheros .oct (157 )

� y ficheros .M (85), utilidades .M (12), startups (6)

� y 4 directorios de ejemplos, y ficheros README / TUTORIAL

Red

Sistema Operativo

Octave MPI

aplicación MPIMPITB

aplicación Octave

Page 22: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� �� � �� � �� � � � � � �� ��� ��� 22

Historia: PVMTB, MPITB/MATLAB...

Page 23: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�  ¡¢ £ ¤¥ ¦ §¨ ¢ © § ª ª ¤« ¢�¬ ­®¯ 23

Historia: MPITB/Octave

Page 24: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

°± ²³ ´ µ¶ · ¸¹ ³ º ¸ » » µ¼ ³�½ ¾¿À 24

Historia: accesos

MPITB / MATLAB:

16680 Febrero 2000

PVMTB / MATLAB:

13398 Febrero 2000

MPITB / Octave:

2858 Abril 2004

2 artículos

Page 25: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

Á ÃÄ Å ÆÇ È ÉÊ Ä Ë É Ì Ì ÆÍ Ä�Î ÏÐÑ 25

Esquema de la presentaciónLAM: sistema de paso de mensajes

Octave: entorno de cálculo científico

Interfaz de programación (API)

MPITB (MPI Toolbox)

Diseño

Utilidades

Ejemplos

Aplicaciones

Conclusiones

Page 26: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ÒÓ ÔÕ Ö ×Ø Ù ÚÛ Õ Ü Ú Ý Ý ×Þ Õ�ß àáâ 26

Diseño

No tan sencillo como se ha dado a entender

ã 157 llamadas => reutilizar código

Criterios

ä 1 .oct-file por llamada MPI

å excepciones: 2 grupos comparten implementación .cc

æ MPI_Keyval_create / _free / MPI_Attr_put

ç MPI_Errhandler_free / _create

è 1 macro patrón de llamada por cada comb. nº/tipo args

é 1 bloque constructivo para cada sección código repetida

ê ficheros #include segregando macros/bloques por función

Page 27: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ëì íî ï ðñ ò óô î õ ó ö ö ð÷ î�ø ùúû 27

1 oct-file por función / patrón llamada

Page 28: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

üý þÿ � �� � �� ÿ � � � � �� ÿ �� 28

patrones / #include

Page 29: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� ��� � �� � �� � � � � � �� �� ��� 29

bloques segregados por uso

Page 30: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

! "�# $ %& ' () # * ( + + %, #- ./0 30

bloques muy frecuentes: mpitb.h

Page 31: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

12 3�4 5 67 8 9: 4 ; 9 < < 6= 4> ?@A 31

referencias cruzadas

Facilitan mantenimiento

B Octave cambia de versión muy rápidamente

C cambios importantes API

Ej: oct-2.1.50 -> 2.1.57

D cambió representación interna structs

E requirió cambios en 6 líneas MPITB

F afectando 3 fich.cc y 1 fich.h

criterios: no duplicar trabajo

G no mantener 157 ficheros .cc

H no código duplicado -> bloque

I editar bloque afecta a todos .cc

MPI_Send

PATN_F_B2IC

BLCK_B2IC RET_1_ARG

NARGCHK

BLCK_ONESYM

BLCK_ONEINTBLCK_ONECOM

get_MPI_Buff

DECL_BUF_VARS

Page 32: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

JK L�M N OP Q RS M T R U U OV MW XYZ 32

Esquema de la presentaciónLAM: sistema de paso de mensajes

Octave: entorno de cálculo científico

Interfaz de programación (API)

MPITB (MPI Toolbox)

Diseño

Utilidades

Ejemplo

Aplicaciones

Conclusiones

Page 33: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

[\ ]�^ _ `a b cd ^ e c f f `g ^h ijk 33

Utilidades MPITB

12 M-files para las tareas más comunes

l “sugerencias de diseño” para aplicaciones paralelas Octave

de “protocolo”

m LAM_Init (nslaves, rpi, hosts)

n [children] = Octave_Spawn (nOctaves, infokey)

o NumCmds_Init (ncmd, qflg, tag, dbug)

p NumCmds_Send(nams, vals)

de “instrumentación”

q init_stamp(n) save_instr print_stamp classstamp

r time_stamp('name') load_instr last_stamp discripar

Page 34: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

st u�v w xy z {| v } { ~ ~ x� v� ��� 34

LAM_Init (nSlv, rpi, hosts)

Usualmente siempre se usa el mismo cluster

� facilitar al máximo tareas externas a Octave: lamboot/lamhalt

fijar los nombres de los ordenadores a utilizar (hosts)

� como argumento a LAM_Init

� editando lista incorporada en LAM_Init

� obteniéndola del ámbito global

� tras LAM_Init, exportar a global hosts y nSlv (=length(hosts)-1 ?)

si no coincide (nslv, rpi) con el lamboot en curso

� parar lam (lamhalt)

� limpiar .oct-files LAM de memoria (permite MPI_Init de nuevo)

� iniciar lam (lamboot)

M-file: 236 líneas , usando system('lamboot'/'lamhalt')

Page 35: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� ��� � �� � �� � � � � � �� �� ��� 35

[chld]=Octave_Spawn (nOct, infokey)

Usualmente se usan todos los hosts

� o la serie [1..nSlv] cuando se hace un estudio de escalabilidad

arrancar Octaves esclavos con MPI_Comm_Spawn

� por defecto nOct=nSlv=length(hosts)-1, último host maestro

� _Comm_spawn utiliza hosts round-robin (por eso maestro último)

  infokey permite iniciar spawn desde nodo/cpu concreta

¡ tras Octave_Spawn, exportar a global nOct

¢ MPI_Comm_spawn es colectiva, requiere control startup MPI_Init

protocolo para unir intercomunicadores

£ MPI_COMM_WORLD de maestro ≠ hijos (chld)

¤ unir ambos (tamaño nOct+1) (maestro rank 0) para comunicarse

¥ MPI_Intercomm_merge es colectiva, requiere control startup

Page 36: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

¦§ ¨�© ª «¬ ­ ®¯ © ° ® ± ± «² ©³ ´µ¶ 36

Arrancando Octaves esclavos

Control startup:

· octave ejecuta .octaverc -> linkar a octaverc_MPITB.m

¸ discriminar esclavos por variable entorno LAMPARENT

NET

OS

octave

MPITB

.octaverc

<añadir path a MPITB> )if ~isempty(getenv(‘LAMPARENT’))

startup_mergeParentend

info=MPI_Init;[info parent]=MPI_Comm_get_parent;[info NWORLD]=MPI_Intercomm_merge

(parent,1);MPI_Errandler_set(NWORLD,RETURN);

octaverc_MPITB.m

startup_mergeParent.m

Page 37: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

¹º »�¼ ½ ¾¿ À Á ¼ à Á Ä Ä ¾Å ¼Æ ÇÈÉ 37

Arrancando Octaves esclavos

lamboot/MPI_Init:

Ê facilitado por la utilidad LAM_Init (236 líneas M)

NET

OS

octave

MPITB

LAM_Init(1,'tcp',{'B','A'})

NET

OS

lamdlamd

host A host B

Page 38: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ËÌ Í�Î Ï ÐÑ Ò ÓÔ Î Õ Ó Ö Ö Ð× ÎØ ÙÚÛ 38

Arrancando Octaves esclavos

arrancar procesos Octave esclavos:

Ü facilitado por la utilidad Octave_Spawn (68 líneas M)

Ý startup esclavos discriminado por LAMPARENT

NET

OS

octave

MPITB

Octave_spawn(1)

NET

OS

lamd

startup_merge.m

lamd octave

MPITB

LAMPARENT

Page 39: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

Þß à�á â ãä å æç á è æ é é ãê áë ìíî 39

Arrancando Octaves esclavos

intracomunicador

ï queda definido NEWORLD con ámbito global

ð en maestro por Octave_Spawn (en esclavos por startup_merge.m)

NET

OS

octave

MPITB

Octave_spawn(1)

NET

OS

lamd

MPI_Init;_Comm_get_parent;_Icomm_merge(par)_Errhandler_set

lamd octave

Page 40: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ñò ó�ô õ ö÷ ø ùú ô û ù ü ü öý ôþ ÿ� � 40

Arrancando Octaves esclavos

necesidad protocolo

� usualmente, esclavo no va a ser utilizado interactivamente

� protocolos sugeridos: Bcast (1 comando), NumCmds (N cmds)

NET

OS

octave

MPITB

NumCmds_Init(...)_Send(N,V)

NET

OS

lamdlamd octave

MPITB

MPI_Recv/_Unpack/eval(cmd)NUMCMDS

QUITTAG

DEBUGvars/cmd

...vars/cmd

Page 41: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� ��� � � � � � � � � ��� ��� 41

Esquema de la presentaciónLAM: sistema de paso de mensajes

Octave: entorno de cálculo científico

Interfaz de programación (API)

MPITB (MPI Toolbox)

Diseño

Utilidades

Ejemplo

Aplicaciones

Conclusiones

Page 42: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� ��� � �� � � � ! � " " �# ��$ %&' 42

test ping-pong, protocolo Bcast

Page 43: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

() *�+ , -. / 01 + 2 0 3 3 -4 +�5 678 43

test ping-pong (cont)

Page 44: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

9: ;�< = >? @ AB < C A D D >E <�F GHI 44

test ping-pong (cont)

Page 45: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

JK L�M N OP Q RS M T R U U OV M�W XYZ 45

Page 46: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

[\ ]�^ _ `a b cd ^ e c f f `g ^�h ijk 46

Cálculo de пIntegrando arctan'(x)

11+x2

⌠ 1⌡ 0

dx = arctan(x) =1

0

π 4

lnm o pq rs tvu t p txw y p

z|{ }�~ �� �� �� � �� ��

� ��� � � � ��� � � � � � � �

� �� � � � ��� � ����

 ¡ ¢ £ ¤ �

¥�¦ § ¨© ª© «v¬­ © ® ¯­ © ° ª ± ²³

´ µ ¶· ¸ ¹�º » ¼ ½ ¾· ¿À ÁvÂ

ÃÄ Å ¸ µ ÆǺ ¹ È ¶É º ¹ ¸ ´ ½ ´ ¼ Â

ÊË ÌÎÍ ÏÐ ÑÒ ÓÕÔ Ö Ò Ó × Ø�Ù ÚÛ Ü ÝvÞ

código paralelo

Page 47: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ßà á�â ã äå æç èâé ç ê ê äë â�ì íîï 47

Cálculo de п

Embarazosamente paralelo

ð enviar N (i=MPI_Comm_rank, C=_size), recibir suma parcial

ñ tiempo medido desde datos enviados hasta π calculado

ò protocolo Bcast

enviar i/C/N cálculo remoto recv suma / acumular

Page 48: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

óô õ�ö ÷ øù úû üöý û þ þ øÿ ö�� �� � 48

Cálculo de п

código MPITB (partes de Mast.m / Work.m)

MPI_Barrier(NEWORLD);tic

Psum=0; Sum=0;

for numt=1:C MPI_Recv(Sum,MPI_ANY_SOURCE,...

TAG,NEWORLD); Psum=Psum+Sum;end Psum=Psum/N;

T=toc;

MPI_Barrier(NEWORLD);

[info rank]=MPI_Comm_rank(NEWORLD);

width=1/N; lsum=0; i=rank-1:C:N-1; x=(i+0.5)*width; lsum=sum(4./(1+x.^2));

MPI_Send(lsum,0,TAG,NEWORLD);

Page 49: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� �� �� �� � � � � � �� ��� ��� 49

Page 50: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� �� � �� � � � ! � " " �# ��$ %&' 50

Esquema de la presentaciónLAM: sistema de paso de mensajes

Octave: entorno de cálculo científico

Interfaz de programación (API)

MPITB (MPI Toolbox)

Diseño

Utilidades

Ejemplo

Aplicaciones

Conclusiones

Page 51: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

() *+ , -. / 01 + 2 0 3 3 -4 +�5 678 51

Test de prestaciones

ping-pong: send-recv repetidamente, variando tamaño

9: ; <= >

for SZ=0:ND-1 array=zeros(SZ,1); MPI_Barrier(WORLD);

for i=1:NTIMES MPI_Recv(array,0,TAG,WORLD); MPI_Send(array,0,TAG,WORLD); end

clear arrayend

for SZ=0:ND-1 array=zeros(SZ,1); MPI_Barrier(WORLD); T=clock; for i=1:NTIMES MPI_Send(array,1,TAG,WORLD); MPI_Recv(array,1,TAG,WORLD); end T=etime(clock,T); Data(SZ+1).time=T/2/NTIMES; clear arrayend

Page 52: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

?@ AB C DE FG HBI G J J DK B�L MNO 52

Prestaciones“Performance of parallel toolboxes”, VecPar'02, Porto

Latencia 1.8x

Overhead 20%@ 1500B

Page 53: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

PQ RS T UV WX YSZ X [ [ U\ S�] ^_` 53

Análisis WaveletVersiones color(3x)/grises(4x), con/sin servidor

a�b ced fg ceh b d ij ig ceh i

k l m n l o m p q r

s q t q r l r u

vd b w x ceh b y h c h

B/W

RGB

B/W

RGB

z { | } ~{ �

}z �

� � ~ �{ �

Page 54: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� ��� �� ��� �� � � � �� ��� ��� 54

cluster oxigeno

switch BayStack 100Mbps8 Pentium II + servidor

� 333MHz, 128MB, no HD

� 400MHz, 128MB, 14GB

������ ��� ����� ��  �¡ �¢ �¢� �£¤¥ ¦� �¢�§ £ £�  ¨©ª ¦� � ���� �� � �� ��� �� ��  �¡ �¢ �¢� � £¤¥ ¦� �¢� § £ £�   ¨©ª ¦� �

«¬ ­®¯° ««¬ ± «¬ ² «¬ ³ «¬ ´

«¬ µ «¬ ¶ «¬ · «¬ ¸

«¬ ¹º» ¼½

Page 55: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

¾¿ ÀÁ ÃÄ ÅÆÇ ÁÈ Æ É É ÃÊ Á�Ë ÌÍÎ 55

Algoritmo paralelo no trivial (4x)

2↓1

2↓1

2↓1

2↓1

1↓2

1↓2

1↓2

1↓2

ÏÐÑÒÓÔ ÔÔÕ ÓÔÖ×Ø ÐÒÙ ÔÚÛÜÝ ÛÞ Ô ÏÐßà×Ø Ôá × Ù Ôâãäå ß Ð ÏÏÐÑÒÓÔ ÔÔÕ ÓÔÖ×Ø ÐÒÙ ÔÚÛÜÝ ÛÞ Ô ÏÐßà×Ø Ôá × Ù Ôæ ã âå ß Ð ÏÏÐÑÒÓÔ ÔÔÕ ÓÔÖ×Ø ÐÒÙ ÔÚÛÜÝ ÛÞ Ô ÏÐßà×Ø Ôá × Ù Ôâãäå ß Ð ÏÏÐÑÒÓÔ ÔÔÕ ÓÔÖ×Ø ÐÒÙ ÔÚÛÜÝ ÛÞ Ô ÏÐßà×Ø Ôá × Ù Ôæ ã âå ß Ð Ï

Page 56: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

çè éêë ìí îïð êñ ï ò ò ìó ê�ô õö÷ 56

Prestaciones (ASTC-HPC'01, Seattle-WA, USA)

øùûúü ýÿþ � �� � ø� � �� ø �

���

� � �

� � �

���

�� � � ���

� �

�� �� � �� �

�� ���� � ��

"! � � #%$ !

&('

) *+ &('

, , &

&('

-. / &('

). -

0� �21 ��43 � �5 67 89 7 8

:; <= ; <> ?

@A BC�D E FG

H"I J J K%L I

M(N

O OP MN

QR S

T�U

VW X TU

YZ [

\] ^2_ ` a4b ] `c d ef"g h i

jk lm k ln o

pq rs�t u vw

(9.16s)

(14.6s)

xy z{ |2} ~ �� � x� � �� x �

����

� �� � ����

�� � �

����

� � �� ����

� � � �

�� �� � �� �

�� ���� � ��

�"� � � �%  �

¡(¢

£¤ ¥ ¡(¢

£¤ ¦

¡(¢

£ ¡ § ¡(¢

£ ¦ ¦

¨� �2© ��4ª � �« ¬­ ®¯ ­ ®

°± ²³ ± ²´ µ

¶· ¸¹�º » ¼½

¾"¿ º º À%Á ¿

Â(Ã

Ä ÅÆ Â(Ã

Ä ÅÇ

È�É

Ê ËÌ È�É

Ê Ë Ë

ÍÎ Ï2Ð Ñ Ò4Ó Î ÑÔ Õ Ö×"Ø Ù Ú

ÛÜ ÝÞ Ü Ýß à

áâ ãä�å æ çè

(27.43s)

(44.06s)

Page 57: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

éê ëíì î ïð ñ òó ì ô ò õ õ ïö ìø÷ ùúû 57

Control del pH

üþý

ÿ�� � � � � � �� � ÿ� ü � � ��� � � ü� � �� � ü�� � �� �� ü � � � �� � � ��� !" # $�% &(') * ' " # # $ ! *) ! % +-, . /0 ' . 1) ' .) +-2 $ ! * 3) ! /') +�4 ') 5 + 0 # . 6

789 : ;9

<=>? @A B CDE FG H IJKLM NO L PQ R L OS OT RU K NUV L

WXYZ [ \] ^_

`abc

defgihj

klmn om pqr st uvwxyz{ y| } st uv w

~ ��� � �� � � �� �� � ����� �� ���� � �� � � �� ����� �� � �  � � ¡   �¢

£¤¥ ¦ § ¨� ¥ � � ¡   �¢ � � ©ª « £� �¬ �

Page 58: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

­® ¯i°± ²³ ´µ¶ °· µ ¸ ¸ ²¹ °»º ¼½¾ 58

Prestaciones

¿ÁÀ

ÂÃ ÂÄ ÂÅ Æ ÇÈÉ È Ê Æ Ç ÈÉ È ËÌÁÍ

ÎÏ ÎÐ ÎÑ Ò ÓÔÕ Ô Ö Ò ÓÔ Õ Ô × ØÙ ÚÛ Ü ÝÞ ßà Øá Ø Ø ØÙ Ø Ú ØÛ Ø Üá ØÙ ÚÛ Ü ÝÞ ßà Ø áØ ØØÙ Ø ÚØÛ Ø Ü

á ØÙ ÚÛ Ü ÝÞ ßà Ø á Ø Ø ØÙ Ø Ú ØÛ Ø ÜáÜ áØ á áØ Ü áÙ á áÙ Ü áÚ á áÚ Ü á

Û á áÛ Ü áÜ á áÜ Ü áÝ á áÝ Ü áÞ á áÞ Ü á

â ã äåæçèé åêë äè ç å ê åêé ìëí è ê îï ð

ñ òóôõ ö÷ø ùúô û

üýÿþ �� �� �� � �� �� � � � � ��

�� � � � �� �� � � �

� �� ��� ���ú� ùõ

��õ� õ� ��� ø

� ! �" � �� � � � � � � � � � � �# �� $% &

'(*) +,-. /. 0 /1 23 4 256 78 96 1

' () + ,- . /. 0 /:; 3 4 2 56 78 96 1' () + ,- . /. 0 / 1 23 4 2 56 78 96 1

Page 59: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

<= >@? A BC D EF ? G E H H BI ?KJ LMN 59

NanoElectrónica

OQP RTS UV WX YZ [\ X ] ^_X Ya` b Oc de f f fhg i c i j kl m c ] no Z W pS Z g qc ` b Oc

rs tu t v vxw vy{z t |y~} � } � � t �} � �� ��� ��� �y �� t � � ��� �} �xw � �y �� � � v� � |w u �

Page 60: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

�� �@� � �� �� ��� � � � �  �K¡ ¢£¤ 60

cluster superman

Page 61: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

¥¦ §@¨ © ª« ¬­ ®¨¯ ­ ° ° ª± ¨K² ³´µ 61

simulador nanoMOS: task-bag alg.

Page 62: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

¶· ¸@¹ º »¼ ½¾ ¿¹À ¾ Á Á »Â ¹Kà ÄÅÆ 62

modelo nanoelectrónico

Page 63: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ÇÈ É@Ê Ë ÌÍ ÎÏ ÐÊÑ Ï Ò Ò ÌÓ ÊKÔ ÕÖ× 63

Prestaciones

ØÚÙ ÛÜÞÝ ßà

ØÚÙ Û ÛÝ Ûà

ØÚÙ áâ Ý ãà

Ø äåçæ å Øè æ åçé ê á ÛÝ ëà

Page 64: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

ìí î@ï ð ñò óô õïö ô ÷ ÷ ñø ïKù úûü 64

Econometría

ý þxÿ ��� � � ��� � � � � � � � � � � � ÿ �� � ��� � � � � �

�� �� ��� � � � � !"$# %& �& " " � " � '( ( )� * � � ' '( ) %+ *& * � ( � ,

-. / -0 1 / - 0 23 4 -5 - / / 2 /6 78 9 9 :$;

<>= ? @= AB C D ?

E F @G H G ? I G J @K D=L M GON IP QN R I ITS = L = M K M G ?

Page 65: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

UV WYX Z [\ ]^ _X` ^ a a [b Xdc efg 65

Prestaciones

Page 66: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

hi jYk l mn op qkr p s s mt kdu vwx 66

Esquema de la presentaciónLAM: sistema de paso de mensajes

Octave: entorno de cálculo científico

Interfaz de programación (API)

MPITB (MPI Toolbox)

Diseño

Utilidades

Ejemplo

Aplicaciones

Conclusiones

Page 67: Programación científica en clustersjfernand/investigacion/papers/OSLUCA_05.sxi.pdf · 1 Programación científica en clusters con Octave / MPITB II Jornadas de Software Libre de

yz {Y| } ~� �� �|� � � � ~� |d� ��� 67

Conclusiones

Octave / LAM / MPITB son libres

� clusters cada vez más comunes

� HPC abierta a mayor audiencia

Octave/MPITB, entorno científico HPC

� rápido aprendizaje MPITB / utilidades (incluso docencia)

� utilidades son M-files, se puede contribuir / modificar / reutilizar

� rápido prototipado aplicaciones (incluso investigación)

� overhead mínimo, no hay otra Toolbox Octave comparable

� MPITB ya era la mejor para MATLAB, comparando con otras

� eficiencia según granularidad aplicación, hasta 101x con 120 nodos

http://atc.ugr.es/javier-bin/mpitb