La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Task 2 Diego Puppin."— Transcript della presentazione:

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

2 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Agenda ● 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

3 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Persone ● 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

4 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Persone ● 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

5 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Obiettivi ● 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

6 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Obiettivi ● Dopo (luglio) – Analisi (e sviluppo) di CCAffeine – XCAT inutilizzabile al momento ● Globus 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

7 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Morale ● 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

8 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Problemi 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

9 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Prossimi 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

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

11 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Standard CCA Common 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

12 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Varie piattaforme CCA ● Ccaffeine – SPMD/SCMD parallel – Direct connection ● CCAT / XCAT – Distributed – Network connection ● SCIRun – Parallel, multithreaded – Direct connection ● Decaf – Language interoperability via Babel

13 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Perche' una componente ● Permette che diversi languaggi, diverse piattaforme co-operino ● Permette l'evoluzione a moduli del software (utile con librerie e servizi esterni)

14 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Cos'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

15 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Warning (dal sito) ● Can I use CCA today for scientific applications? – yes, but it is a research project

16 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Babel ● 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 i) – In-process optimizations – Special directives for large-scale parallel distributed programming (future) – Syntax for specifying interface behavior (future) ● C, C++, F77, Java, Python, F90

17 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Babel ● 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

18 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Babel 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

19 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Esempio 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

20 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR 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...

21 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR 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

22 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR

23 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Creare 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

24 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR 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)

25 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR In 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!!

26 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR

27 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Flusso 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

28 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Problemi con la distribuzione ● Momento di transizione verso Babel ● Supporto “studentesco” informale ● Installazione estremamente complessa!

29 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Installazione ● 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)

30 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR 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!

31 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR

32 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Test: Integrazione MPI ● Con componenti CCA ● Sviluppo monolitico ● CCA, con funzione inline ● Monolite, inline

33 Verifica 4 luglio 2003 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

34 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Matrix Multiply

35 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Matrix Multiply

36 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Row-major vs. Colum-major

37 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR 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, Epperly Aggregate time for linear solver component in unconstrained minimization problem.

38 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR 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 – GCC ● Components took 3X longer ● Ensure granularity is appropriate! ● Paper by Bernholdt, Elwasif, Kohl and Epperly 241ns86ns Double complex 209ns75ns Complex 224ns80 ns Array Componentf77 Function arg type

39 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Scalability 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.

40 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Conclusioni ● CCA + Babel: aumentano riuso e interoperabilita' ● No caratteristiche GRID ● High Perf in mano al programmatore ● Comunicazioni in mano al programmatore

41 Verifica 4 luglio 2003 Diego Puppin ISTI-CNR Questo 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


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

Presentazioni simili


Annunci Google