Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin.
-
Upload
azzurra-venturini -
Category
Documents
-
view
217 -
download
0
Transcript of 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
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
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
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
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
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
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
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
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
Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR
CCACCA
Puppin Diego
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
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
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)
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
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
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
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
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
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
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...
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
Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR
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
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)
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!!
Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR
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
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!
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)
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!
Verifica 4 luglio 2003Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Diego Puppin ISTI-CNR
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
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
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
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
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)
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.
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
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.
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
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