• Non ci sono risultati.

Introduzione Capitolo I

N/A
N/A
Protected

Academic year: 2021

Condividi "Introduzione Capitolo I"

Copied!
8
0
0

Testo completo

(1)

Introduzione

Nella tesi sono affrontate le problematiche di progettazione e di sviluppo di applicazioni ad alte prestazioni, con caratteristiche di adattività al contesto ambientale. Per contesto si intendono tutte quelle informazioni che consentono di caratterizzare la situazione in cui si trovano le entità (risorse, utenti, etc…), che possono essere considerate rilevanti per l’esecuzione delle applicazioni. In letteratura la capacità di adattarsi al contesto ambientale prende il nome di Context Awareness [1, 2, 3], e propone tutta una serie di problematiche che devono essere affrontate e risolte, per la realizzazione di sistemi di questa tipologia. La tesi individua ed analizza queste tematiche, e propone delle metodologie risolutive nell’ambito della programmazione ad alte prestazioni.

Lo sviluppo di sistemi ad alte performance, adattivi alle informazioni di contesto, è un settore nuovo cui la ricerca comincia a rivolgersi con attenzione. Questo è vero specialmodo per la realizzazione di sistemi per la gestione delle emergenze e degli allarmi, come quelli studiati nel progetto FIRB INSYEME [4], in cui la protezione civile, oppure qualsiasi altro ente/organismo predisposto al compito di soccorso, si “appoggia” ad un sistema sia hardware che software articolato e complesso, per avere un supporto alla gestione del fenomeno. Il sistema può eseguire previsioni, trasmettere informazioni in tempo reale sullo stato delle emergenze, e suggerire azioni da intraprendere, come l’organizzazione delle risorse sia umane che tecnologiche.

Dal punto di vista hardware, questi sistemi sono distribuiti geograficamente su un elevato numero di nodi d’elaborazione, sia nodi classici come workstation, cluster, server, ma anche dispositivi mobili a disposizione degli utenti, come palmari, cellulari di terza generazione, oppure dispositivi miniaturizzati ed indossabili. Tutta quest’infrastruttura rappresenta un’evoluzione del concetto di Grid [5], e può essere definita meglio con il termine di Pervasive Grid [6], sottolineando cioè la presenza di nodi di elaborazione con le caratteristiche tipiche del Pervasive Computing [7].

Un’applicazione Context-Aware è quindi un sistema sensibile a dati di contesto, ovvero un sistema che è in grado in modo automatico di fornire servizi diversi, in relazione allo stato di diverse informazioni: la locazione degli utenti e delle risorse, la tipologia e il

(2)

numero di risorse disponibili, sia fisiche (dispositivi) che logiche (applicazioni), oppure in relazione allo stato dell’ambiente (presenza di un’alluvione o di un incendio).

Consideriamo un esempio generale di un’applicazione, che dal lato server viene eseguita in situazioni di “normalità” su un server centrale, e fornisce in risposta alle richieste da parte dei client le informazioni sullo stato attuale di un’emergenza, mediante l’elaborazione in una mappa dei dati provenienti da sensori. Supponiamo che a seguito di un allarme, i client non siano più in grado di accedere al server centrale. In questo caso l’applicazione Context-Aware è in grado di rilevare la situazione di crisi, e di reagire mediante ristrutturazioni delle computazioni, che comportino, per esempio, la realizzazione del lato server in modalità distribuita tra un insieme di nodi di elaborazione mobili, ciascuno in grado di ottenere dati da una partizione dei sensori ambientali, oppure se non fosse possibile simulandoli mediante modelli predittivi. In tutti questi casi l’applicazione reagisce alle situazioni di contesto esterne, in modo da garantire la continuità del servizio, ricorrendo ad operazioni di riconfigurazione complesse.

Le interazioni tra questi sistemi e gli utenti richiedono, inoltre, vincoli prestazionali il cui soddisfacimento è spesso indispensabile per l’utilità del servizio offerto. Tali vincoli di QoS (Quality of Service) possono riguardare, aspetti prestazionali come la banda di elaborazione, il tempo di servizio, oppure il tempo di completamento di intere operazioni. Questo è specialmente vero nel caso dell’esecuzione di modelli previsionali, che richiedono di essere completati in “tempo utile” per poter produrre risultati utilizzabili, ma anche aspetti di tolleranza ai guasti e continuità del servizio.

Lo sviluppo di applicazioni come quelle descritte, propone la necessità di avere un modello di programmazione che, da una parte risulti “sensibile” allo sviluppo di applicazioni ad alte prestazioni, e dall’altra esponga tutti quegli strumenti che consentano l’adattività al contesto ambientale, ovvero la capacità di un modulo o componente di:

1. Realizzare operazioni di ristrutturazione, senza modificare il codice delle funzionalità eseguite. Per esempio un modulo parallelo può avere la necessità di mantenere un certo contratto di qualità del servizio, modificando il “mapping” dei propri processi sui nodi disponibili, oppure mutando il grado di parallelismo. Si parla in questo senso di adattività delle prestazioni.

2. Realizzare operazioni di ristrutturazione delle funzionalità. Un modulo di un sistema adattivo può avere la necessità di sostituire l’implementazione di alcune

(3)

proprie funzionalità, con implementazioni alternative, che mantengano la semantica e le interfacce, ma che siano maggiormente adatte a situazioni di contesto differenti. Per esempio implementazioni che richiedano un’occupazione di memoria inferiore, nel caso in cui le sole risorse disponibili per il calcolo in una certa fase della computazione siano risorse mobili, piccole in dimensione e capacità. Si parla in questo senso di adattività delle funzioni.

1.1 Le metodologie proposte

Come abbiamo già accennato precedentemente, la realizzazione di un modello di programmazione ad alte prestazioni e Context-Aware prevede la necessità di esprimere, da un lato la struttura delle computazione parallele, dall’altro la possibilità di interagire con i dati di contesto e reagire alla loro modifica. Nella tesi viene affrontato il problema di estendere il modello di programmazione parallela strutturata ASSIST [8, 9], per la realizzazione di applicazioni adattive ad alte prestazioni.

ASSIST è un progetto del Gruppo di Architetture Parallele e Distribuite del Dipartimento di Informatica dell’Università di Pisa, ed è un modello basato sul concetto di PARMOD, uno skeleton general-purpose per esprimere le generiche computazioni parallele, istanziabile nel caso specifico con diverse forme di parallelismo (data parallel map, data parallel stencil, farm, forme miste di parallelismo, etc…).

La metodologia proposta nella tesi prende il nome di ASSISTANT (ASSIST with Adaptivity and coNText-awareness), il cui punto saliente è la definizione di un’estensione del costrutto PARMOD, come mostrato sinteticamente in figura 1.1.

Figura 1.1: Evoluzione del PARMOD ASSIST per la realizzazione dell’adattività alle informazioni di contesto ambientale.

(4)

Oltre ai tre stadi tradizionali del pipeline del PARMOD, ovvero la “Input Stream Section”, responsabile della distribuzione e pre-elaborazione dei dati ricevuti dagli stream di input, l’insieme dei “Virtual Processor”, responsabili dell’esecuzione del calcolo parallelo, e la “Output Stream Section”, per le collezione e post-elaborazione dei dati prodotti dai processori virtuali, il modello ASSISTANT prevede, inoltre, la presenza di una quarta entità chiamata “Adaptation Manager”, responsabile delle attività di:

1. Acquisizione dei dati dalle interfacce di contesto, che possono essere sensori ambientali (di disponibilità, connettività, etc…), oppure servizi più complessi, come servizi di Resource Discovery delle risorse di Grid.

2. Processo di memorizzazione dei dati di contesto e gestione degli stessi, mediante processi di elaborazione della conoscenza, che facciano uso di strumenti più o meno formali (ontologie, reti semantiche, etc…).

3. Processo di reazione alle modifiche del contesto, che comportano richieste di riconfigurazione che interessano i diversi stadi del pipeline relativo al PARMOD.

La definizione e lo sviluppo del modello ASSISTANT comporta la necessità di estendere il linguaggio di coordinamento (ASSIST-CL), che consente di definire la forma delle computazioni sequenziali e parallele, introducendo uno specifico formalismo per programmare il manager dell’adattività del PARMOD. La sintassi stabilisce, in sostanza, delle politiche di adattività per descrivere il comportamento del modulo, in relazione ad eventi di contesto di cui il manager deve essere in grado di notificare la presenza, mediante l’interazione con le interfacce di contesto. Le politiche specificano le alternative funzionali che devono essere utilizzate dal modulo, e in quali contesti, oltre che le operazioni di riconfigurazione delle prestazioni, come la modifica del grado di parallelismo (nel caso di moduli paralleli) o il “mapping” dei processi sui nodi.

Un’applicazione parallela complessa, può essere strutturata in un grafo di moduli sequenziali e paralleli interconnessi, secondo una specifica logica descritta dalla particolare applicazione. L’adattività complessiva dell’applicazione comporta la necessità di prevedere un’interconnessione in una rete dei manager (Figura 1.2) dei PARMOD, in modo da realizzare un duplice obiettivo:

(5)

1. da un lato la possibilità che i manager si scambino informazioni di conteso, specialmodo in caso di contesto partizionato, in cui per i vincoli di locazione o di opportunità, ogni manager sia connesso ad una specifica partizione dell’insieme complessivo delle interfacce di contesto, che producono dati di interesse all’applicazione.

2. dall’altro la possibilità di implementare politiche di adattività coordinate e consistenti tra moduli paralleli, che comportino una riconfigurazione più complessa dell’applicazione parallela, non limitata al singolo modulo o componente, ma nell’ottica di una ristrutturazione globale di più entità che eseguono i calcoli.

Figura 1.2 Rete di Adaptation Manager mediante la quale si realizzano processi di adattività coordinati.

Il modello ASSISTANT mira così ad avere un costrutto estremamente potente, che consenta di esprimere in modo generico le diverse computazioni parallele, e che preveda i meccanismi per ristrutturare le proprie funzioni e prestazioni, in relazione ad eventi anche di contesto ambientale. Nella tesi viene definito nel dettaglio il modello ASSISTANT, le operazioni di riconfigurazione che devono essere eseguite, e la modalità di gestione dei dati provenienti dalle interfacce di contesto.

Le soluzioni individuate per ASSISTANT scaturiscono da un’analisi iniziale del problema della Context Awareness, che in principio viene affrontato nella tesi in termini generali, studiando un esempio concreto di sistema per la gestione delle emergenze, e proponendo poi una strutturazione a componenti per la realizzazione sia delle funzionalità dell’applicazione, che dei processi di adattività e riconfigurazione in relazione allo stato

(6)

dell’ambiente. Questa parte di trattazione generica copre il capitolo secondo, terzo e quarto, mentre con i capitoli quinto e sesto viene esposta l’applicazione concreta delle idee formulate, al modello di programmazione parallela ASSIST.

1.2 I risultati

La realizzazione del modello ASSISTANT, così come descritto nel capitolo quinto della tesi, pone il superamento di molti vincoli legati all’attuale implementazione di ASSIST, che non ne consentono una realizzazione a breve termine, ma che richiedono una fase di riprogettazione e di conseguente implementazione, che saranno oggetto di sviluppo nei prossimi mesi. Nel capitolo sesto viene comunque illustrata una possibile emulazione dei meccanismi di ASSISTANT, in modo da dare una valutazione dell’idoneità del modello in termini qualitativi. Viene proposto un esempio di applicazione parallela, in cui i moduli sequenziali e paralleli sono in grado di riconfigurarsi in relazione alla ricezione di eventi esterni, che in questo caso sono relativi alle seguenti situazioni di contesto ambientale:

• Disponibilità delle risorse e tipologia dei nodi su cui i processi dei PARMOD sono attualmente mappati.

• Eventi che segnalano la necessità di modificare il grado di parallelismo dei moduli paralleli dell’applicazione, in relazione all’analisi in tempo reale delle prestazioni dei moduli dell’applicazione.

Dei moduli paralleli vengono date delle implementazioni alternative sia di tipo task-parallel che di tipo data-task-parallel. Con l’esempio viene quindi descritta ed implementata, un’applicazione che è in grado di adattare il grado di parallelismo dei propri moduli paralleli, in relazione alla prestazioni (tempi di interpartenza ed interarrivo ai moduli), ma anche di scegliere le alternative funzionali in relazione a condizioni esterne, per esempio transitare da una implementazione task-parallel ad una implementazione data-parallel, nel caso in cui la tipologia di nodi a disposizione renda preferibile la seconda implementazione rispetto alla prima.

(7)

1.2 Sviluppi futuri

L’emulazione dei meccanismi di ASSISTANT, esposta nel sesto capitolo, mostra come la possibilità di modificare a run-time il codice sequenziale eseguito dai processi, e il loro numero, sia una caratteristica da cui il modello ASSIST adattivo non possa prescindere. Questo è specialmente vero per il progetto FIRB INSYEME, dove la necessità di realizzare un modello di programmazione ad alte performance, adattivo e proattivo, è un punto considerevole del lavoro che verrà realizzato nel prossimo futuro dal Gruppo di Architetture Parallele e Distribuite.

Il modello ASSISTANT comporta la necessità di superare alcuni limiti dell’attuale implementazione di ASSIST, come la possibilità di definire un modulo parallelo con una topologia variabile, la possibilità di modificare a tempo d’esecuzione le modalità di distribuzione degli input e collezione degli output del PARMOD, la possibilità di modificare a run-time il codice sequenziale eseguito dai processi che eseguono la computazione parallela, fornendolo anche dinamicamente mediante plug-in. Tutto questo comporta delle modifiche sostanziali al supporto di ASSIST, in modo da avere un modello di programmazione completo, sia per la “sensibilità” nella realizzazione di applicazioni ad alte prestazioni, sia in termini delle operazioni di riconfigurazione che sono possibili. In questo modo è possibile ottenere un modello significativo, che incontri le aspettative e i requisiti necessari per la programmazione di applicazioni adattive, come le applicazioni di INSYEME per la gestione delle emergenze.

1.4 Contenuto dei capitoli

Di seguito viene fornita una rapida elencazione dei capitoli della tesi e del loro contenuto, in modo da fornire una visione di massima che guidi la lettura del documento.

• Capitolo II: presentazione del background di conoscenze necessarie alla lettura della tesi. Viene introdotto il paradigma del Pervasive Computing, e vengono ricordate le caratteristiche dei sistemi eterogenei, mobili e pervasivi. Viene inoltre introdotta una panoramica sui sistemi Context-Aware, con le caratteristiche e le problematiche comuni a questi. Viene infine illustrato il concetto di applicazione di High Performance Pervasive Computing (HPPC), ovvero un sistema software,

(8)

eseguito su un’infrastruttura distribuita, eterogenea e pervasiva, con vincoli importanti sulle prestazioni e con una natura adattiva al contesto.

• Capitolo III: presentazione informale di un esempio di applicazione per la gestione delle emergenze, nel caso di fenomeni di inondazioni fluviali, in modo da esporre i casi d’uso che suggeriscano, sia i requisiti prestazionali che di adattività al contesto ambientale.

• Capitolo IV: presentazione di una possibile strutturazione a componenti dell’esempio di applicazione per la gestione delle alluvioni, esposta nel capitolo precedente. Nella formulazione vengono individuate le componenti funzionali del sistema, e quelle di contesto, adibite alla raccolta e gestione dei dati contestuali, e viene definita un’interazione tra le diverse tipologie di componenti, per rendere adattivo il sistema descritto.

• Capitolo V: viene presentata l’applicazione della strutturazione a componenti per l’adattività, proposta nel precedente capitolo, al modello di programmazione ad alte prestazioni di ASSIST. Il modello risultante (ASSISTANT) viene descritto nelle sue caratteristiche peculiari, con particolare enfasi all’Adaptation Manager dei moduli paralleli.

• Capitolo VI: nel capitolo viene presentata un’applicazione parallela ASSISTANT, adattiva ad eventi esterni di contesto. L’adattività dei moduli viene emulata con gli strumenti attualmente offerti da ASSIST, in due modi alternativi, ciascuno con propri limiti, e vengono formulate a riguardo valutazioni sull’importanza della realizzazione concreta dei meccanismi descritti.

• Conclusioni: vengono mostrate le conclusioni della tesi, i risultati ottenuti e gli sviluppi futuri che saranno realizzati.

Riferimenti

Documenti correlati

- istruzioni elementari : sono operazioni più o meno riconducibili a operazioni dirette sull’hardware della macchina quali operazioni di input/output, lettura di dati dalla

3.3 The Appliances Safety Act and its application in practice The German law on technical appliances (the Gerätesicher­ heitsgesetz — Appliances Safety Act (GSG))39 is

  È  costituito  con  sede  in  Milano,  un  Consorzio  denominato  “Comieco”,  Consorzio  Nazionale  per  il  recupero  ed  il  riciclo  degli  imballaggi 

Come descritto in premessa, l’impianto di vagliatura e selezione rifiuti non pericolosi non verrà più posizionato su una piattaforma sopraelevata ma verrà

Tale modifica non comporta alcuna variazione nelle valutazioni e considerazioni fatte nel documento “Relazione Ambientale – Descrizione attività in essere,

L’esecuzione di un’istruzione altera lo stato della Macchina astratta perch` e modifica almeno l’indicatore della prossima istruzione da eseguire... Macchina

L’esecuzione di un’istruzione altera lo stato della Macchina astratta perch` e modifica almeno l’indicatore della prossima istruzione da eseguire... Macchina

Traduttore: genera il programma oggetto mediante la traduzione del programma sorgente da linguaggio simbolico a linguaggio macchina. compilatore: la traduzione è effettuata una