Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

41
Verifica 4 luglio 20 Diego Puppin ISTI-CNR Task 2 Diego Puppin

Transcript of Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Page 1: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Task 2Task 2

Diego Puppin

Page 2: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

AgendaAgenda

● Prima parte– Rivisti le forze e gli obiettivi

– Nuovi traguardi per fine estate

● Seconda parte– Il modello di componenti CCA

– Babel

– CCAffeine

– Prime misure

– Primi commenti

Page 3: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

PersonePersone

● Prima (aprile)● Coordinatamento: Puppin

● Dip. Pisa: Vitale, Ravazzolo, Petrocelli

● CNR Pisa: Laforenza, Fagni, Tonellotto

● Palermo: Machi

● Genova: Clematis, D'agostino, De Marco, Giannuzzi

● Roma: Vitale

Page 4: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

PersonePersone

● Dopo (luglio)● Coordinatamento: Puppin (CCA, XCAT)

● Dip. Pisa: (nuove forze?)

● CNR Pisa: Fagni (XCAT)

● Palermo: Machi, Lombardo (porting applicazioni)

● Genova: Moscati (porting applicazioni)

● Roma:

Se prima eravamo in 10 a ballare l'hully-gully... adesso siamo in 5 a ballare l'hully-gully

Page 5: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

ObiettiviObiettivi

● Prima (aprile)● Analisi di ambienti a componenti:

– CCA (CNR)

– XCAT (CNR)

– WebService (CNR)

– CCM (Dip. Pisa)

– JavaBeans (Vitale)

– Librerie Parallele (Genova, Palermo)● Considerando sicurezza e applicazioni

Page 6: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

ObiettiviObiettivi

● Dopo (luglio)– Analisi (e sviluppo) di CCAffeine

– XCAT inutilizzabile al momento● Globus 2.2.4 usato (non supportato al CNR)● Non c'e' supporto per GTK 2.4

– CCM e WebServices dati per dispersi

– Nessuna notizia su JavaBeans

– A Genova, porting dell'applicazione su CCA

– Qualcuno deve andare a Palermo per far partire il porting

Page 7: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

MoraleMorale

● Per l'estate avremo, probabilmente, solo dati su CCAffeine

● Ci sara' un lavoro iniziale di porting delle applicazioni di Genova e Palermo

● Genova: 3000 linee, buon benchmark

Page 8: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Problemi di comunicazioneProblemi di comunicazione

● Mailing list: FWDed to /dev/null● Richiesta di un responsabile locale in ogni gruppo

(Pisa, Roma....)● Richiesta di un account su ogni macchina per

prove● Feedback su metodologia d'analisi (solo marcod)● Con Task 1: debole coordinazione sugli scopi

Page 9: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Prossimi passiProssimi passi

– Due gruppi completano in parallelo il porting, su due tecnologie diverse:

– CCA/Globus/Web Service– Assist– Confronto prestazioni e caratteristiche– Position paper su ambienti componenti

esistenti– Risultati sperimentali sull'applicazione di

Ge/Pa

Page 10: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

CCACCA

Puppin Diego

Page 11: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Standard CCACommon Component Architecture

Standard CCACommon Component Architecture

● Promuove uno standard per lo sviluppo di applicazioni eterogenee. Vari ambienti:– Orientati alle applicazioni distribuite– Orientati alle applicazioni SPMD (SCMD)– Interfaccia con Globus– Supporto per MPI/PVM ecc.

● Defisce una serie di servizi minimi per una componente– Port, getPort, setServices

Page 12: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Varie piattaforme CCAVarie piattaforme CCA

● Ccaffeine

– SPMD/SCMD parallel

– Direct connection

● CCAT / XCAT– Distributed

– Network connection

● SCIRun– Parallel, multithreaded

– Direct connection

● Decaf– Language interoperability via Babel

Page 13: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Perche' una componentePerche' una componente

● Permette che diversi languaggi, diverse piattaforme co-operino

● Permette l'evoluzione a moduli del software (utile con librerie e servizi esterni)

Page 14: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Cos'e' una componenteCos'e' una componente

● E' un'unita' di sviluppo:– Componibile

– Con chiara definizione di cio' che usa e fornisce

– Con una chiara interfaccia all'esterno

– Non ha stato interno, non ci sono dati globali

● Simile ai package di Java– Separata dalle altre componenti

– Sviluppata autonomamente

● In soldoni, si possono creare componenti a partire da classi

● MA una componente esiste solo col supporto di un ambiente

Page 15: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Warning (dal sito)Warning (dal sito)

● Can I use CCA today for scientific applications?– yes, but it is a research project

Page 16: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

BabelBabel● Supporto all'uso di linguaggi di programmazione diversi

● Offre un'interfaccia simile a CORBA, ma orientata al calcolo scientifico– Dynamic multi-dimensional arrays

– Complex numbers (e.g. 2 + 3i)

– In-process optimizations

– Special directives for large-scale parallel distributed programming (future)

– Syntax for specifying interface behavior (future)

● C, C++, F77, Java, Python, F90

Page 17: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

BabelBabel

● Per ogni classe, file IOR, skel, impl, stubs

● IOR: descrive l'Internal Object Representation di babel

● Skel fa la conversione ai dati nativi

● Impl fa scritta in qualunque linguaggio supportato

● Stubs chiamano il supporto di Babel

● Crea una tonnellata di file

– Permette di chiamare i metodi della componente da un qualunque linguaggio supportato

Page 18: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Babel e CCAffeineBabel e CCAffeine

● Le porte di CCAffeine e le componenti vengono definite con Babel per maggior flessibilita'

● Facilita il riuso in ambienti diversi ● Il processo di wrapping e' lento, costoso,

introduce errori

Page 19: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Esempio di wrappingEsempio di wrapping

● Crea l'interfaccia SIDL (Babel)● Inserisci l'implementazione in IMPL.c● Inserisci nell'impl i dettagli delle port CCA

(noioso!)● Creare i file wrapper e cca (perche'?)● Aggiustare i makefile● Incrociare le dita

Page 20: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Problemi di software eng.Problemi di software eng.

● Babel e' un generatore di codice, dal SIDL● Fissa dei punti per inserire l'implementazione● MA altri file vanno creati a mano● Manca una chiara documentazione● Occorre seguire gli esempi del tutorial● Possibili errori “stupidi”, segnalati male● Verranno corretti nella prossima versione...

Page 21: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Se tutto va bene...Se tutto va bene...

● Il framework lancia un'applicazione SPMD

● Ogni componente e' responsabile delle sue comunicazioni: MPI, PVM, Morse...

● La comunicazione all'interno di una macchina e' gestita dall'ambiente (che NON riconosce scorciatoie...)

● GUI rudimentale per creare e connettere componenti

● L'ambiente replica i comandi di creazione e connessione su tutte le macchine (uso interno di MPI)

● In via di sviluppo: componenti con parametri visibili dall'utente

Page 22: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Page 23: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Creare nuove applicazioniCreare nuove applicazioni

FunctionPort

MidpointIntegrator

IntegratorPort

FunctionPort

MonteCarloIntegrator

IntegratorPort

RandomGeneratorPort

IntegratorPort

Driver

GoPort

NonlinearFunction

FunctionPort

LinearFunction

FunctionPort

RandomGenerator

RandomGeneratorPort

PiFunction

FunctionPort

Dashed lines indicate alternate

connections

Create different applications in "plug-and-play" fashion

Page 24: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Insomma...Insomma...

● Fornisce un wrapping di MPI● Supporto allo sviluppo di ambiente eterogenei● NESSUNA funzionalita' di Grid● Tutte le interfacce devono essere in locale a

tempo di compilazione ● E' possibile comporre librerie .so (wrapping di

altre funzioni, possibilmente)● Non permette di importare servizi (GRIDLE)

Page 25: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

In particolare, ogni componenteIn particolare, ogni componente

● Offre una o piu' porte di ingresso e uscita

● Identificate dal tipo

● Ereditarieta' e specializzazione delle porte

● Porte multiple per lo stesso servizio

● Una componente astrae una procedura: chiamata ricorsiva!!

Page 26: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Page 27: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Flusso e comunicazioneFlusso e comunicazione

● Un solo flusso di controllo per processore

● Un solo comunicatore MPI

● Il programmatore deve gestire synch e comm

● Il programmatore deve gestire dati e codice condivisi

● La creazione e la connessione non e' disponibile a programma

● Una volta costruita l'applicazione e lanciata, non si possono cambiare le connessioni

Page 28: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Problemi con la distribuzioneProblemi con la distribuzione

● Momento di transizione verso Babel● Supporto “studentesco” informale● Installazione estremamente complessa!

Page 29: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

InstallazioneInstallazione

● Inizialmente rilasciato come tarball

● A fine maggio, rilascio segreto di RPM per RH7.3 e RH8 (io ho RH9 ☺)

● Richiede molto software: Python, Java, Ruby, Blas, Lapack, Babel, Boost, MPI

● Problemi con versioni e makefile

● Puo' richiedere una settimana per essere messo a punto!

● Per chi ci vuole giocare: disponibile su cavit.isti.cnr.it e cannonau.isti.cnr.it (Giancarlo permettendo)

Page 30: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

High Performance?High Performance?

● Ne' piu' ne' meno di MPI● In mano al programmatore● Nel manuale: ottimizzazione dello scambio dati

tra componenti (eterogenee)● Se omogenee, forse non peggiora● NON riconosce scorciatoie in componenti omog.● Prime prove: grosso overhead!

Page 31: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Page 32: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Test: Integrazione MPITest: Integrazione MPI

● Con componenti CCA● Sviluppo monolitico● CCA, con funzione inline● Monolite, inline

0

2.5

5

7.5

10

12.5

15

17.5

20

22.5

25

27.5

30

32.5

Confronto tempi

CCA

MONOLITE

CCA – senza func

MONOLITE -senza funcS

econ

di

Page 33: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

● #0 functions::PiFunction_impl::evaluate() at functions_PiFunction_Impl.cc:47● #1 skel_functions_PiFunction_evaluate () at functions_PiFunction_Skel.cc:32● #2 functions::Function::evaluate() at functions_Function.cc:236● #3 integrators::MonteCarloIntegrator_impl::integrate() at

integrators_MonteCarloIntegrator_Impl.cc:134● #4 skel_integrators_MonteCarloIntegrator_integrate () at

integrators_MonteCarloIntegrator_Skel.cc:48● #5 integrators::Integrator::integrate() at integrators_Integrator.cc:237● #6 tutorial::Driver_impl::go() at tutorial_Driver_Impl.cc:100● #7 skel_tutorial_Driver_go () at tutorial_Driver_Skel.cc:45● #8 gov::cca::ports::GoPort::go() at gov_cca_ports_GoPort.cc:244● #9 BabelOpaqueGoPort::go() at BabelOpaqueGoPort.cc:28● #10 ConnectionFramework::goOne() at ConnectionFramework.cxx:1139● #11 DefaultBuilderModel::goOne() at DefaultBuilderModel.cxx:222● #12 CmdActionCCAGo::doIt() at CmdActionCCAGo.cxx:55● #13 CmdParse::parse() at CmdParse.cxx:564● #14 CmdLineBuilderController2::parse() at

CmdLineBuilderController2.cxx:118● #15 CmdLineClient::main() at CmdLineClient.cxx:861● #16 main () at CmdLineClientMain.cxx:318● #17 __libc_start_main () from /lib/tls/libc.so.6

Page 34: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Matrix MultiplyMatrix Multiply

16 32 64 128 256 5120

1

2

3

4

5

6

7

8

9

10

11

12

13

Matrix Multiply

C++

CCA

Matrix size (NxN)

Sec

onds

Page 35: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Matrix MultiplyMatrix Multiply

C++ CCA Diff Ratio16 3.33E-04 0.06 0.06184.1432 4.28E-04 0.08 0.08178.8964 2.68E-03 0.12 0.12 46.51

128 0.03 0.37 0.35 13.78256 0.33 1.62 1.29 4.94512 8.12 12.11 3.99 1.49

Page 36: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Row-major vs. Colum-majorRow-major vs. Colum-major

RCR CRR CRC Transp.16 0.06 0.02 0.02 0.0032 0.08 0.03 0.03 0.0064 0.12 0.1 0.09 0.10

128 0.37 0.31 0.29 0.31256 1.62 2.99 2.65 2.30512 12.11 54.95 54.13 62.32

AxB=C R=row-major C=column-major(stride N,1) (stride 1,N)

Page 37: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Component Overhead Component Overhead • Negligible overhead for component

implementation and abstract interfaces when using appropriate levels of abstraction

• Linear solver component currently supports any methods available via the ESI interfaces to PETSc and Trilinos; plan to support additional interfaces the future, e.g., those under development within the TOPS center

• Here: Use the conjugate gradient method with no-fill incomplete factorization preconditioning

• DA: tutorial CCA, 15 jan 2003• E: “A Component Architecture for

High-Performance Computing”, Bernholdt, Elwasif, Kohl, EpperlyAggregate time for linear solver component in

unconstrained minimization problem.

Page 38: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Overhead from Component Invocation

Overhead from Component Invocation

● Invoke a component with different arguments

● Array● Complex● Double Complex

● Compare with f77 method invocation

● Environment– 500 MHz Pentium III– Linux 2.4.18– GCC 2.95.4-15

● Components took 3X longer● Ensure granularity is appropriate!● Paper by Bernholdt, Elwasif, Kohl

and Epperly 241ns86nsDouble complex

209ns75nsComplex

224ns80 nsArray

Componentf77Function arg type

Page 39: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Scalability on a Linux ClusterScalability on a Linux Cluster

• Newton method with line search

• Solve linear systems with the conjugate gradient method and block Jacobi preconditioning (with no-fill incomplete factorization as each block’s solver, and 1 block per process)

• Negligible component overhead; good scalability

Total execution time for the minimum surface minimization problem using a fixed-sized 250x250 mesh.

Page 40: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

ConclusioniConclusioni

● CCA + Babel: aumentano riuso e interoperabilita'● No caratteristiche GRID● High Perf in mano al programmatore● Comunicazioni in mano al programmatore

Page 41: Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.

Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR

Questo talk in tourQuesto talk in tour

● Date richieste– Pisa, appena disponibili al dipartimento– Genova, nei prossimi giorni– Palermo, appena c'e' un minuto libero (dopo Vico)– Londra– New York– Rio de Janeiro