Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto

Slides:



Advertisements
Presentazioni simili
Obbligo e Riordino dei Cicli
Advertisements

Introduzione ad XML Mario Arrigoni Neri.
Recupero debito quarto anno Primo incontro
Procedure In assembler.
Università degli Studi di Napoli Federico II Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni –
Massa Laura Mela Enrica
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
UNIVERSITA DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica Progetto e sviluppo di.
Tesi di Laurea Triennale in Ingegneria Elettronica Applicata
Ottimizzazione statica del codice per processori pipelined Canella Matteo & Miglioli Filippo.
Programmazione Procedurale in Linguaggio C++
Eccezioni Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA Uff
Distributed Object Computing
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
Alcuni esercizi e domande per il compitino quali sono le parti principali dellarchitettura di von Neumann? citare le caratteristiche salienti della RAM.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Terza parte: Programmazione ad oggetti in Java. Cosè Java Linguaggio di programmazione definito dalla Sun Obiettivo: sviluppo di applicazioni sicure,
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
Corso di Informatica (Programmazione)
Introduzione al linguaggio Java
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
CALCOLATORI ELETTRONICI Gestione delle subroutine.
Architettura del World Wide Web
Gestione delle subroutine
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
AA 2005/06 Informatica Programmazione M.A. Alberti-L. Capra 1 Le eccezioni in Java Programmazione Corso di laurea in Informatica.
Lezione 11. Risposte multiple M1 r1 M2 R2 M3.
Codifica di algoritmi linguaggio macchina vs programmazione strutturata Lab Programmazione - turno /2006.
Approfondimento delle classi
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Calcolo di resistenze viste da vari punti
Argomenti della lezione
Programmazione in Java
4 Tipi di dati & variabili
Architettura del calcolatore
Implementazione di un linguaggio ad alto livello (con riferimento a Java)
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
Sistemi di elaborazione e trasmissione delle informazioni
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Conversione da base 10 a base X (Utilizzo della pila)
Programmazione ad oggetti
la traduzione dei programmi
Introduzione a Javascript
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Ingegneria del software Modulo 3 -Tecniche di implementazione Unità didattica 1 -Ingegneria dei componenti Ernesto Damiani Università degli Studi di Milano.
LIP: 22 Marzo 2005 Eccezioni. Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Esercitazione sull’ ordinamento 20 maggio 2003
Esercizi.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

An XML-based virtual machine for distributed computing in a Fork/Join framework Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto DEEI, Universita’ di Trieste, Italy Dipartimento di Elettrotecnica, Elettronica , Speech, Multimedia and Robotics Informatica, Universita' di Trieste Technologies Lab http://smartlab.univ.trieste.it

Introduction “GRID Computing”: a High Performance Computing 1/39 Introduction “GRID Computing”: a High Performance Computing paradigm based on sharing computing resources in internet Complex problems in theoretical physics, medicine, genetics, astronomy, financial, whether analysis … Some requirement of GRID: multi-platform nodes  Java Virtual Machine dynamic environment: hardware and software moving A typical GRID monolytic architecture: p2p node Byte code + data results Dynamic linking Security Verification Optimization

Introduction (cont.) some problems of the monolythic architecture: 2/39 Introduction (cont.) some problems of the monolythic architecture: performance – security - scalability The point of view used in this work: p2p node Algorithm described in XML + data results XML Interpretation Why using XML to describe algorithms in GRID? efficient algorithms distribution (HTTP’s Post ) efficient XML interpretation

Motivations of this work To increase computing power on a mobile robot Image – demining applications Distributed environment Radio LAN LAN

Il Meta-linguaggio XML 8/39 Il Meta-linguaggio XML L’XML (eXtensible Markup Language) è un linguaggio di meta – markup, specifica una sintassi per altri linguaggi di markup semantici <?xml version="1.0"?> <!DOCTYPE nome descrittivo del documento [ <!ELEMENT elemento 1 (second1.1, ..,> <!ELEMENT second1.1 tipo> …. <!ELEMENT elemento N> <!ATTLIST elementoN Attributo1 tipo Valore ]> <!ENTITY nome “definizione”> <elemento 1>Contenuti e funzionalità </elemento 1> Struttura Logica: Prologo Elemento Document o Document Type Definition (DTD) Fisica: Contenuti e Funzionalità Sintassi Documenti validi e ben formati

XML-RPC: chiamata a procedure remote 9/39 XML-RPC: chiamata a procedure remote Header HTTP per i parametri di comunicazione Corpo XML per passare la richiesta coi parametri d’esecuzione Richiesta URI al codice di gestione richieste HTTP User-Agent Host Content-Type Content-length <?xml version="1.0"?> <methodCall> <methodName> nome procedura richiamata </methodName> <params> <param> Parametro 1 </param> …. </params> </methodCall> Risposta Verifica Trasmissione Chiusura connessione Content-Type Content-lengthDate GMTServer: agente di collegamento del server <?xml version="1.0"?> <methodResponse> <methodResponse> <params> <fault> parametri di ritorno <value> </params> struttura che segnala </methodResponse> l’errore </value> </fault> </methodResponse>

XML-RPC: chiamata a procedure remote 10/39 XML-RPC: chiamata a procedure remote Schema che descrive una comunicazione RPC

Architettura del sistema 12/39 Architettura del sistema Esempio di rete Peer – to - peer Chiamata tra i Nodi Peer – to – peer (nostra realizzazione) Chiamata tra i Nodi Peer – to – peer (teorico) Schema con restituzione dei risultati

Architettura software 13/39 Architettura software Non esiste una precompilazione del documento sorgente Il documento viene analizzato (Parsing)  eventi Eventi  interprete scritto in Java (esecuzione) Lettura Parsing Esecuzione *** ** *** ** * ** * *** * ** * ** *** ** * ** ** * ** ** ** * ** ** ** * ********** *** ** *** ** * ** * *** * ** * ** *** ** * ** ** * ** ** ** * ** ** ** * ********** *** ** *** ** * ** * *** * ** * ** *** ** * ** ** * ** ** ** * ** ** ** * ********** *** ** *** ** * ** * *** * ** * ** *** ** * ** ** * ** ** ** * ** ** ** * ********** Interprete Scritto in Java

Il Meta-linguaggio XML-VM 14/39 Il Meta-linguaggio XML-VM Permette di descrivere un algoritmo con XML I Tag XML diventano le istruzioni del nuovo linguaggio Il linguaggio si può vedere come un tipo semplificato di Assembler Si è deciso di non sviluppare una DTD del linguaggio per non appesantire la fase d’interpretazione Il controllo della sintassi è affidato allo stesso compilatore Java

Il Meta-linguaggio XML-VM (continua) 15/39 Il Meta-linguaggio XML-VM (continua) Caratteristiche principali del linguaggio: Attributi come parametri Strutture dati Registro Disco Virtuale I dati sono immagazzinati nel Disco Virtuale I dati possono essere elaborati solo nel Registro Abbiamo introdotto il tipo di dato Index

Le istruzioni Matematiche 16/39 Le istruzioni Matematiche Istruzioni: Esempio <OPER target=“0” op1=“13” op2=“11” op3=“9” command=“*+”/> <ADD target=“2” first=“3” second=“9”/> ADD ADD ADD CONV r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r0 Registro 1 m3 6 2 12 DIV ELEV MUL 30 m9 OPER OPER SUB

Le istruzioni di Spostamento Dati 17/39 Le istruzioni di Spostamento Dati Esempio Istruzioni: <LOAD register=“4” index=“10”/> <STORE topointed=“5” from=“4”/> <LOAD regpointed=“4” index=“3”/> r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r0 Registro Disco Virtuale m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13 m14 m15 m16 m19 m20 m21 m22 m23 m24 m25 m26 m27 m28 m29 m17 m18 1 12 7 LOAD LOAD LOAD MOVE r5 m3 STORE STORE r5

Le istruzioni Logiche Istruzioni: CMP CMP JEQ JGR JNEQ JNGR LABEL QUIT 18/39 Le istruzioni Logiche Esempio Istruzioni: <CMP first=“6” second=“9”/> <CMP first=“6” second=“11”/> CMP CMP JEQ r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r0 Registro 1 m3 2 6 12 Flag = “ ” Flag = “ 2 ” Flag = “ 3 ” JGR JNEQ JNGR LABEL QUIT START STRUCT

Le istruzioni di Chiamata 19/39 Le istruzioni di Chiamata Esempio Istruzioni: <JOIN to=“m15-m19”/> <FORK id=“N00” file=“pippo.xml” name=“via” to=“m15-m19” clone=“m5-m9”/> r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r0 Registro Disco Virtuale m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13 m14 m15 m16 m19 m20 m21 m22 m23 m24 m25 m26 m27 m28 m29 m17 m18 1 8 12 7 5 15 CALL FORK FORK FORK JOIN JOIN LOCALCALL RETURN 5 7 8 12 15 *RESERVED*

Fork/Join L’istruzione Fork è simile ad una chiamata a procedura 20/39 Fork/Join L’istruzione Fork è simile ad una chiamata a procedura classica, solo che lancia due processi in parallelo Il compito di raccordo è svolto dall’istruzione Join, che sincronizza i flussi di programma separati col Fork

Fork/Join Si può usare un contatore delle chiamate Fork 21/39 Fork/Join Esistono diverse sintassi per descrivere il Fork/Join Si può usare un contatore delle chiamate Fork Si possono associare le istruzioni a delle variabili

Fork/Join Esempio di chiamata Fork/Join in XML-VM 22/39 … … <FORK id=“N00” file=“pippo.xml” name=“via” to=“m3-m5” clone=“m7-m9”/> <JOIN to=“m3-m5”/> <QUIT/> *** ** *** ** ** * ** <LABEL name=“via”/> ** * ** ** * ** *** ** * ** ** * * ************ ** * ** ** ** <RETURN from=“r6-r8”/>

<RANDOM to=“m15-m25” type=“int” mul=“10”/> 23/39 Le istruzioni Varie Esempio Istruzioni: <RANDOM to=“m15-m25” type=“int” mul=“10”/> r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r0 Registro Disco Virtuale m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13 m14 m15 m16 m19 m20 m21 m22 m23 m24 m25 m26 m27 m28 m29 m17 m18 1 12 7 RANDOM RANDOM SHOW 3 2 5 9 8 6 1 7

24/39 Il Parser Java È un traduttore in grado d’interpretare un documento XML Permette al linguaggio Java di trattare le informazioni contenute nel documento come eventi concatenati Esistono due tipi di specifiche per il Parser Sax 1.0 (contenuto dei Tag ed attributi) Sax 2.0 (anche analisi DTD, fogli di stile ed altro…) Prima realizzazione: Xerces dell’Apache (Sax 2.0) Realizzazione definitiva: MinML (Sax 1.0)

L’interprete di XML-VM 25/39 L’interprete di XML-VM È scritto in Java per potersi adattare ad ogni piattaforma È strutturato nei seguenti 14 file File che implementano la Macchina Virtuale Index.java xmlvm.java xmlvmcontext.java XmlvmException.java xmlvmcontenthandler.java xmlvmgeneric.java xmlvmStack.java File che contengono procedure main() saxtest.java xmlvmCall.java xmlvmnamres.java File con compiti vari Methods.java PseudXmlRpc.java xmlvmMachine.java xmlvmMachineTable.java

L’interprete di XML-VM (continua) 26/39 L’interprete di XML-VM (continua) public Object startExecution(Object[] arg, xmlvmMachine Machine) throws Exception{   Inizializzazioni; Scansione rapida del documento per la ricerca dei Tag Label; Verifica che l’intestazione del documento sia corretta; Cerca nel documento il Tag <START/> o quello <STRUCT/>, e inizializza la variabile i con la posizione del Tag appena trovato; try { FOR(i < tag.getChildrenCount(); i++) { SE (il Tag[i] è uno tra ADD LOAD MOV STORE SUB …) Allora lancia la procedura associata; Altrimenti { Per START e LABEL non fare niente; Per STRUCT ripristina le informazioni presenti nell’array Arg[]; Per JEQ, JNEQ, JGR, JNGR lancia le procedure associate ed aggiorna i; Per RETURN esegui la procedura Return(tag); Per SHOW mostra il contenuto del registro indicato; Per QUIT esci dal ciclo; }  } catch(Exception e) SE (non termina con QUIT) Lancia un errore e scrivi “non termina con Quit”;

L’interprete di XML-VM (continua) 27/39 L’interprete di XML-VM (continua) xmlvmCall public class xmlvmCall implements XmlRpcHandler {   public Object execute (String method, Vector v) throws Exception { Vector vResult = Methods.execute(method,v); return (vResult); } public static void main(String args []) throws Exception { WebServer webserver = new WebServer (...porta...); webserver.addHandler ("$default", new xmlvmCall()); xmlvmnamres class nameres implements XmlRpcHandler { Inizializzo la xmlvmMachineTable, inserendo tutti i Nodi a disposizione: nameres() { } public class xmlvmnamres { public static void main(String args []) throws Exception {  WebServer webserver = new WebServer (10000); //attivo il Server XML-RPC webserver.addHandler ("$default", new nameres()); public Object execute (String method, Vector v) throws Exception { Riconosci che la chiamata è per una vera a propria risoluzione del nome; Confronta l’identificativo che ti è stato passato con quelli disponibili; Se l’identificativo è “N00”, allora restituisci i dati di uno dei Nodi disponibili a caso; Altrimenti restituisci quello specificato; public class saxtest {   public static void main(String[] arg) throws Exception { Definisci l’oggetto “xmlvmMachine” con l’ip e la porta del risolutore dei nomi, e chiamalo “table”; xmlvmcontext ct = new xmlvmcontext(); ct.init(); Object[] args = new Object[2]; args[0] = "http://... ... .xml"; //nome del documento XML-VM da elaborare ct.parseXmlvmDoc(args[0].toString()); //Esegui il Parsing del documento Object o = ct.startExecution(args, table); //Lancia l’esecuzione del } Saxtest.java

L’interprete di XML-VM (continua) 28/39 L’interprete di XML-VM (continua) Sistema distribuito completo

L’interprete di XML-VM (continua) 29/39 L’interprete di XML-VM (continua) Esempio d’istruzione Logica Esempio d’istruzione per le Chiamate Esempio d’istruzione per Spostamento dati Esempio di codice d’istruzione Matematica public void LocalCall(xmlvm tag) throws Exception {   Estrai gli attributi TO, NAME; Aggiungi un elemento all’XML-VMStack, dove sono memorizzati il registro al momento della chiamata ed i parametri inviati; Metti nelle celle del disco virtuale dalla 1 in poi i parametri annidati nell’ordine in cui appaiono; Salta all’etichetta definita dal nome NAME; Raccogli i risultati della chiamata; Memorizza nelle celle di memoria indicate dall’attributo TO; } public void Div(xmlvm tag) throws Exception {   Estrai gli attributi RESULT, REST, FIRST e SECOND; Se R[FIRST] e R[SECOND] sono numeri, allora Se (RESULT.compareTo(“”) == 0), allora metti il risultato della divisione in R[FIRST] rispettando il tipo di dato del risultato; Altrimenti mettilo in R[RESULT]; Se (REST.compareTo(“”) != 0), allora metti il resto della divisione in R[REST]; } public void Store(xmlvm tag) throws Exception {   Estrai gli attributi TO, TYPE, FROM e TOPOINTED; Se (FROM.compareTo(“”) != 0), carica il valore della cella R[FROM]; altrimenti cairca il valore contenuto all’interno del TAG; Se (TO.compareTo(“”) != 0), metti il valore caricato in DV[TO]; altrimenti mettilo nella locazione di memoria del disco virtuale puntato da R[TOPOINTED]; } public void Cmp(xmlvm tag) throws Exception {   Estrai gli attributi FIRST e SECOND; Se (FIRST>SECOND), aggiorna la variabile di flag a 1; Altrimenti Se (FIRST<SECOND), aggiorna la variabile di flag a 2; Altrimenti Se (FIRST==SECOND), aggiorna la variabile di flag a 3; }

L’interprete di XML-VM (continua) 30/39 L’interprete di XML-VM (continua) Pseudo-codice istruzione Join Pseudo-codice istruzione Fork public void Fork(xmlvm tag) throws Exception {   Estrai gli attributi TO, IP, FILE, NAME e CLONE; Effettua una chiamata RPC al risolutore dei nomi e aggiorna l’IP; Prepara nel vettore args tutti i parametri necessari per l’invio della richiesta remota, ovvero il registro per intero e la sezione del disco virtuale indicata dall’attributo CLONE; Inizializza le celle del disco virtuale descritte da “TO” al valore “*RESERVED*”; ForkThread remoteCall = new ForkThread(); RemoteCall.start();  }  protected class ForkThread extends Thread {  Definizione delle Variabili locali; public void run() { Effettua la richiesta remota direttamente verso la macchina corrispondente all’IP; Digli di eseguire il documento XML-VM indicato nell’attributo FILE a partire dalla procedura etichettata col nome NAME; Raccogli i risultati della chiamata; Memorizza nelle celle di memoria indicate dall’attributo TO; } public void Join(xmlvm tag) throws Exception {   Estrai gli attributi TO e TOPOINTED; SE(TO.compareTo(“”) != 0) verifica che le celle individuate dall’attributo TO non siano ancora *RESERVED*; se sono ancora *RESERVED*, esegui un ciclo che continui a monitorare le celle; Altrimenti { verifica che le celle contigue a partire dalla cella puntata dalla prima parte dell’attributo TOPOINTED per una lunghezza pari alla seconda parte dello stesso attributo non siano ancora *RESERVED*; }

Accorgimenti presi per gli esperimenti 31/39 Accorgimenti presi per gli esperimenti Risolutore dei nomi per raccogliere le misurazioni Procedure di rilevazione dei tempi Procedure di rilevazione del flusso di dati XML-RPC Strumenti a disposizione per gli esperimenti 16 computer eterogenei 8 Pentium III 800MHz, Windows2000, 128 MB RAM 8 Celeron 400MHz, WindowsNT 4.0, 64 MB RAM Impostazioni adottate negli esperimenti Nodo centrale escluso dalla computazione (Pentium III) Misurazioni in funzione del numero di macchine coinvolte Carico doppio sui Pentium III I Pentium III sono le prime macchine introdotte

Risultati Sperimentali 32/39 Risultati Sperimentali Tre tipi di esperimenti Una Sommatoria Un Integrale Un Ordinamento Quick Sort f(x) x

Esempio di sorgente XML-VM 33/39 Esempio di sorgente XML-VM Codice XML-VM per la Sommatoria <?xml version='1.0'?> <XMLVM> <START/> <STORE to="12" type="int"> 1 </STORE> <STORE to="0" type="index"> m1 <STORE to="13" type="int"> <STORE to="14" type="int"> 2 <STORE to="15" type="index"> m0 <STORE to="16" type="int"> 20 <LOAD register="15" index="15"/> <LOAD register="16" index="16"/> <ADD first="15" second="16"/> <STORE to="15" from="15"/> <LOAD register="29" index="14"/> <LOAD register="30" index="13"/> <LOAD register="31" index="12"/> <MOVE target="15" source="30"/> <STORE to="10" type="int"> 4000000 </STORE> <STORE to="11" type="int"> 100000 <LOAD register="0" index="10"/> <LOAD register="1" index="11"/> <DIV result="2" first="0" second="1"/> <CONV register="2" to="int"/> <MOVE target="3" source="30"/> <LABEL name="For1"/> <CMP first="2" second="3"/> <JNGR to="EndFor1"/> <MUL target="4" first="3" second="1"/> <ADD target="5" first="4" second="1"/> <STORE to="1" from="4"/> <STORE to="2" from="5"/> <FORK id="N00" file="http://10.0.0.3:80/SommaNodo_xmlvm.xml" name="Somma" to="m15[m12]" clone="m0[m14]"/> <LOAD register="15" index="15"/> <ADD first="15" second="31"/> <STORE to="15" from="15"/> <ADD first="3" second="31"/> <JGR to="For1"/> <LABEL name="EndFor1"/> <STORE to="17" type="index"> m0 </STORE> <LOAD register="17" index="17"/> <LOAD register="16" index="16"/> <ADD first="17" second="16"/> <STORE to="17" from="17"/> <MOVE target="17" source="30"/> <STORE to="9" from="2"/> <JOIN topointed="m17[m9]"/> <MOVE target="3" source="30"/> <LOAD register="6" index="13"/> <LOAD register="8" index="17"/> <LABEL name="For2"/> <CMP first="2" second="3"/> <JNGR to="EndFor2"/> <LOAD register="7" pointer="8"/> <ADD first="8" second="31"/> <ADD first="3" second="31"/> <ADD first="6" second="7"/> <JGR to="For2"/>  <LABEL name="EndFor2"/> <QUIT/> </XMLVM>  

Risultati Sperimentali (Sommatoria) 34/39 Risultati Sperimentali (Sommatoria) Grafico dei Tempi per numero di macchine Grafico degli Speedups

Risultati Sperimentali (Integrale) 35/39 Risultati Sperimentali (Integrale) Grafico degli Speedups Grafico dei Tempi per Pentium e Celeron Grafico dei Tempi per numero di macchine Grafico stimato per Pentium e Celeron

Risultati Sperimentali (Quick Sort) 36/39 Risultati Sperimentali (Quick Sort) Grafico degli Speedups riscalato (Pentium) Grafico dei Tempi per numero di macchine Volume dati trasferiti via XML-RPC Grafico degli Speedups

Risultati Sperimentali (Parsing) 37/39 Risultati Sperimentali (Parsing) Il Tempo di Parsing comprende il download e l’analisi del documento XML Si effettua il Parsing dei documenti XML-VM ad ogni chiamata remota Tabella dei tempi di Parsing

Conclusioni Trasferimento dei metodi in Java 38/39 Conclusioni Metodi variabili: Trasferimento dei metodi in Java Nodo Sorgente Nodo Remoto Compilazione Esecuzione Java Trasferimento dei metodi con XML-VM Nodo Sorgente Nodo Remoto Parsing Esecuzione XML Nel Nodo remoto ci sono: Parser MinML Codice eseguibile (~100KB)

Conclusioni Si è progettato e sviluppato un sistema per Grid Computing 39/39 Conclusioni Si è progettato e sviluppato un sistema per Grid Computing Si è utilizzato XML per descrivere algoritmi Si è utilizzato Java per implementare la macchina virtuale I risultati raccolti hanno risposto adeguatamente alle attese I grafici delle prestazioni dimostrano efficienza di calcolo I Tempi di download e d’analisi dei metodi sono leggerissimi Non è stato affrontato il problema della distribuzione del Carico e della tolleranza ai guasti Non sono stati affrontati i problemi di sicurezza e programmazione complessa