• Non ci sono risultati.

2.5 Pervasive Computing e HPC

2.5.2 High Performance Pervasive Computing

Uno dei maggiori esempi per l’HPPC `e la gestione delle emergenze ambienta- li [42, 74], in cui operatori mobili e non (polizia, medici, vigili del fuoco, pro- tezione civile, etc) collaborano per gestire situazioni di pericolo ambientale. Questo tipo di applicazioni sono significative, perch´e prevedono l’elaborazio- ne di una grande quantit`a di informazioni, ottenute in parte da sensori dislo- cati nelle aree a rischio, in parte da altri servizi (Meteo, fotografie satellitari, etc), sia per motivi di prevenzione, sia per la gestione dell’emergenza.

In generale gestire questo flusso di informazioni ed utilizzarlo per previ- sioni accurate `e una operazione non banale che richiede grandi capacit`a di calcolo, per eseguire algoritmi di simulazione, data mining, etc. Questo ren- de necessario l’utilizzo di sistemi paralleli, e di tutte le tecniche e tecnologie tipiche dell’HPC. Allo stesso tempo, per`o, soprattutto in caso di emergenze, abbiamo a che fare con un grande numero di dispositivi di piccole dimensio- ni nell’area geografica vicina all’emergenza. In questi casi, proprio a causa dell’emergenza stessa, le risorse normalmente utilizzate per analizzare i dati potrebbero non essere raggiungibili; nell’ottica di aiutare al meglio gli ope- ratori si rende necessario l’utilizzo delle poche risorse accessibili sul luogo, per generare delle previsioni “peggiori” ma che possano comunque dare agli operatori un’idea di cosa potrebbe accadere.

In figura 2.3 `e riportato uno schema delle differenti tipologie di dispositivi presenti in questo tipo di applicazione[58].

Queste applicazioni hanno quindi tutte le caratteristiche del pervasive computing, associate alla necessit`a (tipica dell’HPC ) di effettuare calcoli non banali sulla grande quantit`a di dati raccolta.

Figura 2.3: Esempio delle tipologie di dispositivi utilizzati in una applicazione di gestione delle emergenze

Pur essendo una idea completamente nuova, l’HPPC eredita gli ultimi stu- di sulle pervasive grid come ambienti di esecuzione per applicazioni parallele altamente pervasivi ed eterogenei[62, 63].

Allo stesso modo sono gi`a presenti molti studi su sistemi di adattivit`a per programmi paralleli, orientati principalmente (ma non solo) all’ottimiz- zazione automatica delle prestazioni dell’applicazione rispetto alle risorse disponibili[10, 41, 79].

Modelli di programmazione

Context-Aware

Nel capitolo precedente abbiamo mostrato i principali problemi da affrontare nello sviluppo di applicazioni pervasive.

Fino alla fine degli anni ’90 realizzare tali sistemi significava trattare tutti questi problemi a livello applicativo, aumentando notevolmente la comples- sit`a nello sviluppo di tali applicazioni.

Per questo motivo i ricercatori si sono concentrati sulla definizione di strumenti atti a semplificarne la realizzazione. Questo ha portato alla nascita, negli ultimi anni, di un numero sempre maggiore di sistemi per lo sviluppo di applicazioni context-aware. Vista l’enorme quantit`a di problemi da risolvere in tali ambienti, gli approcci utilizzati nella definizione e nello sviluppo di questi sono stati di due tipi:

1. studio delle caratteristiche di alcune applicazioni di esempio, e realiz- zazione del sistema tenendo conto dei requisiti di tali applicazioni;

2. studio di un particolare problema legato alla context awareness (ge- stione dei sensori, definizione dei dati acquisiti da essi, mobilit`a, etc) e successiva realizzazione di un framework orientato alla risoluzione di quel particolare problema.

Questi due approcci hanno permesso agli sviluppatori di focalizzare la loro attenzione su alcuni dei punti chiave della context-awareness, riuscendo a definire soluzioni buone ed eleganti per tali problemi. Al tempo stesso, per`o, questa attenzione ristretta ha portato ad ambienti di sviluppo che si adattano alle applicazioni di esempio, ma non sono abbastanza generali per definire altre tipologie di programmi context-aware.

Analizzando la letteratura ci troviamo perci`o davanti ad un gran numero di sistemi di sviluppo di applicazioni pervasive, tutti diversi e focalizzati su differenti aspetti della context-awareness. Nessuno per`o si candida ad am- biente “definitivo” per lo sviluppo di applicazioni pervasive, ed in particolare nessuno offre le caratteristiche richieste per lo sviluppo di una applicazione HPPC come quella descritta nel capitolo precedente.

In questo capitolo presenteremo alcuni degli ambienti di sviluppo esistenti, descrivendone l’architettura e le principali caratteristiche. Tra tutti i sistemi discussi in letteratura abbiamo scelto quelli che presentano idee innovative o particolari, e che ci hanno fornito importanti spunti per la definizione del modello di ASSISTANT.

Infine studieremo brevemente i problemi che rendono complicata, o im- possibile, la realizzazione dell’applicazione di gestione delle emergenze de- scritta nella sezione 2.5.2 utilizzando i sistemi presentati, sottolineando per`o le caratteristiche di questi che potrebbero essere utilizzate in un nuovo am- biente di sviluppo specifico per questo tipo di applicazioni, come ASSI- STANT.

3.1

Odyssey

Tra il lavori presentati, Odyssey `e il pi`u vecchio: l’articolo che lo presenta ([61]) risale al 1997. Il lavoro su Odyssey `e poi confluito in Aura[47], di cui parliamo nella sezione successiva. Nonostante questo consideriamo molto importanti alcuni dei principi chiave di questo modello, passati in secondo piano nella sua evoluzione; per questo motivo lo presentiamo come framework indipendente.

Il problema che Odyssey si propone di risolvere `e quello dell’adattivit`a. Come descritto ampiamente nella sezione 2.3, in un ambiente pervasivo le applicazioni possono trovare una quantit`a di risorse inferiore a quella richiesta per assicurare una corretta esecuzione. In questo caso `e necessario modificare il comportamento delle stesse o dell’ambiente, in modo da poterle eseguire con le risorse presenti.

In questo ambito Odyssey implementa un framework per gestire l’adat- tivit`a tramite la modifica del comportamento delle applicazioni. Questa va- riazione porta ad una riduzione della qualit`a percepita dall’utente, che in Odyssey viene definita “fidelity”. Una diminuzione della fidelity porta ad una applicazione che svolge il suo lavoro con una qualit`a minore ma che richiede meno risorse. In questo modo una applicazione pu`o adattarsi all’ambiente (o contesto) in cui `e eseguita.