Università degli Studi di Napoli Federico II

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Università degli Studi di Napoli Federico II"

Transcript

1 Università degli Studi di Napoli Federico II Master di I Livello in Tecnologie per il CAlcolo Scientifico ad Alte Prestazioni - CASAP Tesi di Master Classificazione del traffico di rete mediante tecniche di data mining su architetture parallele GPGPU Relatori Prof. Roberto Bellotti Dott. Massimo Brescia Anno Accademico Candidato Mauro Garofalo matr. Z62/000004

2 Indice generale 1.Introduzione Big Data Data Mining su Big Data...10 Classificazione Machine Learning...16 Apprendimento Supervisionato...17 Apprendimento non supervisionato Architetture di Calcolo ad Alte Prestazioni GRID Cloud GPGPU...26 Architettura NVIDIA Kepler Ambienti per il calcolo parallelo Ambienti convenzionali: MPI e OpenMP Ambienti paralleli NVIDIA OpenACC FMLPGA Il modello ibrido MLPGA Modello FMLPGA Sviluppo in OpenACC Test Piattaforme di sviluppo e test...51 Pagina 2 di 69

3 6.2.Caso d'uso...51 Dataset...53 Matrice di Confusione Test Qualitativi...58 Configurazioni...58 Risultati...60 Analisi dei Risultati Test Quantitativi...62 Risultati Conclusioni e sviluppi futuri...66 Bibliografia...68 Pagina 3 di 69

4 Indice delle illustrazioni Illustrazione 1: Andamento delle performance dei TOP Illustrazione 2: Esempio di GRID...23 Illustrazione 3: Esempio di configurazione Cloud...26 Illustrazione 4: NVIDIA K20x SMX...29 Illustrazione 5: NVIDIA Kepler - Warp Scheduler...30 Illustrazione 6: Dynamic Parallelism...32 Illustrazione 7: NVIDIA Hyper-Q...33 Illustrazione 8: Codice di "Hello World" per il protocollo "MPI"...35 Illustrazione 9: Schematizzazione della tecnica denominata "fork/join"...37 Illustrazione 10: Codice di "Hello World" per il protocollo "OpenMP"...38 Illustrazione 11: Confronto tra CUDA C, Librerie e Direttive...39 Illustrazione 12: Codice OpenAcc per il calcolo di pi greco...42 Illustrazione 13: Esempio di CUDA Grid nel progetto FMLPGA...47 Illustrazione 14: Tabella delle applicazioni...55 Illustrazione 15: Esempio di Matrice di Confusione...57 Illustrazione 16: Risultati Percentuali di accuratezza CPU vs GPU...60 Illustrazione 17: Risultati - Accuratezza media: CPU vs GPU...61 Illustrazione 18: Risultati - Tempi di esecuzione della fase di train...63 Illustrazione 19: Risultati - Speed up...64 Pagina 4 di 69

5 1. Introduzione I dati derivanti da problemi scientifici negli ultimi anni sono aumentati in modo esponenziale mentre la crescita della potenza di calcolo delle architetture tradizionali, mantenendosi finora pressoché lineare seguendo la Legge di Moore (Moore 1965 [9]), è arrivata ad un punto di stallo dovuto soprattutto al thermal wall (Sutter 2005[15]) che costringe a limitare la velocità di clock delle CPU. In molti settori scientifici, la ricerca si basa ormai sulla necessità di esplorare queste enormi quantità di dati. È divenuta quindi necessaria la creazione di nuove architetture dedicate al calcolo ad alte prestazioni, come i sistemi distribuiti (Grid e Cloud) e le architetture parallele (CPU multi-core e GPU), che ben presto sono diventate degli strumenti fondamentali per la ricerca scientifica. Per utilizzare queste piattaforme c'è bisogno però di nuovi ambienti di sviluppo. Nascono così librerie per il calcolo parallelo e linguaggi dedicati alla programmazione parallela che, per ricavare il massimo beneficio sia in termini di accelerazione che di riuso del codice, mantengono la capacità di interfacciarsi con il codice già sviluppato nei linguaggi di programmazione più diffusi (FORTRAN, C/C++ e Java). Pagina 5 di 69

6 Illustrazione 1: Andamento delle performance dei TOP 500 L'argomento discusso in questa tesi riguarda la parallelizzazione di un codice preesistente tramite uno standard di programmazione per direttive: OpenACC. Il codice di partenza, denominato FMLPGA (Fast Multi Layer Perceptron trained by Genetic Algorithms), è un modello ibrido di Machine Learning (ML) basato su una rete neurale addestrata da un algoritmo genetico, dedicato al Data Mining (DM) su grandi archivi di dati. Esso è basato sul un modello seriale MLPGA (Multi Layer Perceptron trained by Genetic Algorithms), implementato in C++ e reso disponibile alla comunità scientifica attraverso la web application DAMEWARE, uno dei progetti afferenti alla Collaborazione internazionale DAME (Data Mining & Exploration), di cui l'università Federico II è uno dei tre partner ufficiali (insieme all'inaf Osservatorio Astronomico di Pagina 6 di 69

7 Capodimonte ed al California Institute of Technology della California) (Djorgovski et al. 2012). Su tale piattaforma web il modello MLPGA, testato e validato scientificamente su dati astrofisici, presentava la grossa limitazione di essere poco scalabile rispetto a grandi volumi di dati. Con la sua evoluzione (FMLPGA) si sono realizzate due versioni dell'algoritmo, una sequenziale ed una parallela sviluppata in ambiente CUDA (Compute Unified Device Architecture) C, su piattaforma GPGPU (General Purpose Graphics Processing Unit) della NVIDIA Corporation (NVIDIA Corp. 2012). Il presente lavoro è consistito nel parallelizzare l'algoritmo sequenziale del modello FMLPGA di tramite le direttive OpenACC. Questo tipo di programmazione sfrutta le alte prestazioni in termini di parallelizzazione dell'architettura GPGPU NVIDIA (anche se con performance minori se confrontate con il codice CUDA C di FMLPGA) e nel contempo libera il programmatore dal dover imparare un nuovo linguaggio di programmazione. Dal punto di vista scientifico ci si aspetta che sia comunque garantita la medesima qualità dei risultati. Pagina 7 di 69

8 2. Big Data Negli ultimi anni, ogni giorno vengono creati circa 2.5 exabyte di dati e il 90% dei dati mondiali è stato creato negli ultimi due anni. Questi dati vengono registrati ovunque: sensori per la raccolta di informazioni sul clima, video e immagini digitali, record delle transazioni di acquisto per non parlare delle missioni spaziali o degli esperimenti scientifici. Solo per fare qualche esempio la missione spaziale dell'esa Euclid, svilupperà circa 5 petabyte di dati (compressi) all'anno, LHC (Large Hadron Collider) solo nel 2012 ha prodotto 25 petabyte di dati, mentre lo SKA (Square Kilometre Array) a regime produrrà oltre un exabyte di dati al giorno. Questi tipi di dati vengono definiti Big Data. Nello specifico con il termine Big Data si identifica un insieme di dataset così grandi e complessi che l'elaborazione, sia con gli strumenti di gestione che le applicazioni di elaborazione dei dati tradizionali, diventa difficile se non impossibile. Le caratteristiche principali dei Big Data si possono riassumere nel paradigma delle 4V (Bayer 2011 [1]): Volume: la mole di dati, spesso destrutturati, aumenta in maniera esponenziale. Diventa sempre più difficile individuare in tempo quelli a maggior valore di informazione. Varietà: la tipologia di dati non è più uniforme e legata solo ai sistemi legacy. Ci troviamo di fronte a dati in formato testuale, audio, video, in streaming, provenienti da web, social network e database. I dati, che possono essere sia strutturati che non strutturati, sono caratterizzati da una forte eterogeneità. Pagina 8 di 69

9 Velocità: i dati vengono prodotti con una velocità e frequenza sempre maggiore. Il time to decision richiesto all'it si sta riducendo sempre di più. La sfida è quella di riuscire a gestire ed elaborare informazioni in tempi sempre più rapidi. Valore: i modelli analitici sono sempre più complessi e impongono capacità elaborative fino a poco tempo fa impensabili. Diventa determinante sapere individuare i dati con un valore maggiore rispetto agli altri. I Big Data sono quindi più di una semplice questione di dimensioni; rappresentano l opportunità di estrapolare informazioni, da tipi di dati e contenuti nuovi ed emergenti, consentendo di rispondere a domande che prima erano considerate fuori portata. Finora, non esisteva un modo pratico per cogliere questa opportunità ma, le nuove architetture di calcolo, parallelo e distribuito da un lato, e le nuove tecniche di analisi dei dati, come data mining e machine learning, possono essere la soluzione al problema. Pagina 9 di 69

10 2.1. Data Mining su Big Data Negli ultimi anni, i progressi nel campo dell'acquisizione di dati digitali e l'incremento delle prestazioni dei dispositivi di immagazzinamento hanno portato alla crescita di grandi database. I dati contenuti in questi database vanno dalle transazioni bancarie e tabulati telefonici fino ad arrivare a dati tecnico/scientifici come cartelle cliniche, dati astronomici. Partiamo da un presupposto reale e fondamentale: viviamo in un mondo sommerso da un'infinità di dati. I dati possono essere di molti tipi: tabelle, immagini, grafici, osservati, simulate, calcolate da statistiche o acquisiti da diversi tipi di sistemi di monitoraggio. Inoltre la recente esplosione del World Wide Web e altre risorse ad alte prestazioni stanno rapidamente contribuendo alla proliferazione di enormi database di dati. Questa grande quantità di dati porta ad una domanda importante: in che modo possiamo gestire, capire e usare in modo efficiente e completo? Pagina 10 di 69

11 E' ormai ampiamente riconosciuto lo squilibrio cronico tra la crescita dei dati disponibili e la capacità di gestirli (Hey et al. 2009[6]) e nella maggior parte dei casi, i dati acquisiti, non sono direttamente interpretabili e comprensibili; questo o perché sono oscurati da alcune informazioni ridondanti o fonti di rumore, oppure perché hanno bisogno di essere fusi con altri dati. Il quarto paradigma della scienza (Hey et al., 2009[6]), pone in primis, ancora prima della rappresentazione o della strategia di memorizzazione, il problema della comprensione dei dati. Questo infatti pone in termini scientifici una metodologia per ricavarsi informazioni utili a partire da una conoscenza senza pregiudizi e da dataset di qualsiasi tipo (Brescia & Longo, 2012[4]). Di norma questo paradigma impone l'uso di strumenti informatici efficaci e versatili, in grado di colmare il divario tra le limitate capacità umane (in termini di tempo di elaborazione) ed una crescita costante della quantità e della complessità dei dati oggi in nostro possesso. In altre parole si necessita di un software in grado di replicare le alte capacità di apprendimento e adattamento del cervello umano, e allo stesso tempo riuscire a gestire un numero molto elevato di dati, caratteristica dei moderni calcolatori. Queste due prerogative, sono, i punti cardine sui quali si basano due discipline di apprendimento: Data Mining (DM) e Machine Learning (ML). Andando nel particolare, ci sono due concetti chiave che devono essere chiariti: Cosa si intende tecnicamente con il termine apprendimento? Come sfruttare le capacità computazioni delle macchine per eseguire esperimenti di apprendimento? Generalmente l'aspetto importante non è tanto se un computer riesca ad apprendere o meno, bensì se sia in grado di rispondere in maniera corretta a specifiche domande. Questa capacità non è però sufficiente per affermare che Pagina 11 di 69

12 un computer abbia imparato, soprattutto se si considera che il vero apprendimento è legato alla capacità di generalizzazione di un problema. In altre parole, il fatto che una macchina dia risposte corrette a domande note, utilizzate durante la fase di addestramento, è solo la fase preliminare della sua formazione completa. Quello che più interessa è il comportamento della macchina in situazioni imprevedibili, cioè in quelle domande mai poste durante la fase di training. Il Machine Learning è una disciplina scientifica che si occupa della progettazione e dello sviluppo di algoritmi che consentono ai computer di far evolvere i propri comportamenti basandosi su dati empirici. Un algoritmo può usufruire di esempi (dati) per cogliere caratteristiche di interesse della loro distribuzione statistica. Questi dati costituiscono la cosiddetta Knowledge Base (KB), ovvero un insieme sufficientemente grande di esempi da utilizzare per l'addestramento dell'algoritmo, e per testarne le prestazioni. I metodi di DM, d'altro canto, sono molto utili per ottenere informazioni a partire da piccoli dataset e, pertanto, possono essere utilizzati in maniera efficace per affrontare problemi di scala molto più piccola (Brescia et al., 2012A [3]). Il DM su Massive Data Sets (MDS) pone due sfide importanti per quanto riguarda le infrastrutture computazionali: l'accesso asincrono e la scalabilità. Infatti, tramite le operazioni sincrone, tutte le entità che concorrono al funzionamento dell'attività devono rimanere attive per tutta la durata dell'attività: se qualche entità si interrompe, tutto il lavoro svolto dall'attività verrà perso. Per quanto riguarda la scalabilità, il miglior approccio per gestire una grande quantità di dati è quello di suddividere il problema in parti più piccole e farli eseguire da CPU differenti (parallelizzazione) ed infine ricombinare insieme i risultati ottenuti dai singoli sotto-problemi. Finora la tecnologia di calcolo parallelo scelta per questo scopo è stata la GPGPU Pagina 12 di 69

13 (General-Purpose computing on Graphics Processing Units) Nello scenario del DM, la scelta del modello di ML deve essere sempre associata ad un dominio delle funzionalità. Per essere più precisi, alcuni modelli di ML possono essere usati nello stesso dominio delle funzionalità, perché questo rappresenta il contesto funzionale nel quale avviene l'esplorazione dei dati. Nel presente lavoro, per confrontare i risultati ottenuti con quelli del modello di ML presentato (FMLPGA) sia in termini di prestazioni che di qualità in termini di purezza e accuratezza, ci si è focalizzati sulla classificazione. Classificazione La classificazione è una procedura nella quale singoli oggetti vengono assegnati a gruppi definiti, grazie a dataset contenenti informazioni inerenti agli oggetti stessi e sulla base di un training set di voci precedentemente etichettate (Kotsiantis 2007 [7]). Con il termine classificatore si intende un sistema che esegue una mappatura tra uno spazio di caratteristiche X e un set di etichette Y. Fondamentalmente un classificatore assegna un etichetta predefinita per ogni campione. Durante la classificazione possono verificarsi le seguenti situazioni: "Classificazione esatta": dato un pattern 'x' in input, il classificatore ritorna la sua etichetta 'y' (scalare). "Classificazione probabilistica": Dato un pattern 'x' in input, il classificatore restituisce un vettore 'y' che contiene la probabilità che 'y i' sia l'etichetta giusta per 'x'. In altre parole cerchiamo, per ogni vettore, la probabilità che esso sia un membro della classe yi (qualunque sia 'yi'). Entrambi i casi possono essere applicati in esperimenti che prevedono due o più classi di classificazione. Le fasi di classificazione sono sostanzialmente tre: Pagina 13 di 69

14 Fase di Training: durante questa fase l'algoritmo viene allenato a restituire delle valutazione di qualche tipo, a partire da un insieme di pattern di input. Fase di Testing: prevede una serie di test durante i quali l'algoritmo allenato durante la fase di training prende in ingresso pattern e vettori di target e restituisce dati statistici, matrici di confusione, errore globale, nonché le etichette di classificazione ricavate per ogni pattern). Fase di Evaluation: in questa fase viene dato all'algoritmo un insieme di dati di cui non si conosce il valore di output. L'algoritmo restituisce le etichette di classificazione per ogni pattern di input. A causa della natura supervisionata degli esperimenti di classificazione, le prestazioni del sistema possono essere misurate durante la fase di testing tramite l'utilizzo di un insieme di vettori di target, i quali vengono confrontati con le etichette generate dall'algoritmo. Il tasso di errore di classificazione, dato un dataset input, può non essere considerato rappresentativo della qualità del classificatore stesso. Infatti, nel caso in cui il dataset sia sbilanciato, il tasso di errore potrebbe essere elevato anche se il classificatore, da parte sua, risulta performante. Per una corretta visualizzazione delle prestazioni di classificazione può essere calcolata una matrice di confusione (Provost et al 1998 [12]): ogni colonna della matrice rappresenta le istanze di una classe prevista, mentre ciascuna riga rappresenta le istanze di una classe reale. Uno dei principali benefici della matrice di confusione è quello di verificare in modo semplice se il sistema stia mischiando due classi. In alternativa, si può utilizzare una procedura di validazione (molti modelli di classificazione non necessitano questa procedura). Pagina 14 di 69

15 La procedura di validazione è un processo che ha il compito di controllare la genuinità del classificatore. Questo può essere utilizzato per evitare un eccessivo overfitting e fermare la formazione del modello in base ad alcuni criteri oggettivi. Con criteri oggettivi si intendono criteri che non si basano sugli stessi dati utilizzati durante la fase di training. Se il sistema non soddisfa i criteri previsti, il sistema può essere modificato, dopodiché viene rieseguita la procedura di validazione, finché non si raggiungono i criteri richiesti (ad esempio il numero massimo di epoche). Sono diverse le procedure di valutazione utilizzabili: Una possibile soluzione è quella di utilizzare un intero dataset creato appositamente per la convalida; questo dataset può essere preparato direttamente dall'utente, o tramite metodi automatici. In altri casi (quando ad esempio il dataset di training ha una dimensione limitata) invece, è possibile utilizzare una tecnica di validazione incrociata, ovvero, tramite un partizionamento di un campione di dati, in due sotto insiemi dei quali, uno viene utilizzato per la fase di training, mentre il secondo viene utilizzato per confermare e convalidare il classificatore (Mosteller et al [10]). Possiamo concludere riassumendo che un comune esperimento di classificazione necessita di: Un dataset di training per addestrare il modello; Un dataset di test, che viene utilizzato per ottenere un giudizio finale sulla qualità del classificatore. I dati di questo dataset devono essere dati nuovi, cioè non precedentemente utilizzati nelle fasi precedenti; Un dataset di validazione che può essere fornito dall'utente, estratto casualmente dalla KB, oppure generato automaticamente tramite una procedura di validazione incrociata. Pagina 15 di 69

16 2.2. Machine Learning Con il termine Machine Learning si intende una delle discipline fondamentali dell'intelligenza artificiale che si occupa di elaborare algoritmi di ottimizzazione auto-adattivi, ossia in grado di plasmare se stessi a partire da una fase di addestramento su dati noti per lo specifico problema (Bishop 2006 [2]). Nel particolare questa scienza prevede che una macchina possa modificare il suo modo di interagire con il mondo esterno grazie all'analisi approfondita di eventi noti. Da questa definizione possiamo dedurre che il ML rappresenta una forma di adattamento analoga a quella che avviene per gli organismi biologici i quali (in tempi ovviamente più lunghi), si adattano all'ambiente in cui si trovano. Per effettuare effettuare l'apprendimento la macchina ha bisogno di due componenti: un dataset contenente informazioni riguardanti il dominio di applicazione; un algoritmo di apprendimento in grado di estrarre le conoscenze dal dataset in analisi. Il primo esperimento di ML fu effettuato negli anni '50, dallo scienziato americano Arthur Lee Samuel, il quale progettò un programma in grado giocare a scacchi ad alti livelli (Samuel, 1990 [14]). La cosa sorprendente era che Samuel non era assolutamente un bravo giocatore di scacchi; egli infatti progettò un programma che effettuava centinaia di partite contro se stesso, durante le quali la macchina imparava quali fossero le mosse più o meno opportune da fare durante una partita. Pagina 16 di 69

17 Esistono due tipologie di modelli di ML: Modelli supervisionati: Approccio top-down applicabile quando è noto il dominio del problema; Modelli non supervisionati: Approccio botton-up che, diversamente dall apprendimento supervisionato, costruisce modelli a partire da dati non appartenenti a classi predefinite. Apprendimento Supervisionato Per un apprendimento supervisionato, abbiamo i seguenti step: Analisi preliminare dei dati: Prima di tutto dobbiamo costruire dei pattern di input appropriati da dare in pasto al nostro algoritmo. In questa fase avviene il ridimensionamento e la preparazione dei dati; Creazione del dataset per il training e la validazione: Questa fase è effettuata suddividendo in maniera casuale lo spazio dei data pattern. Il dataset di training contiene i dati utilizzati dal classificatore per apprendere le loro correlazioni interne, mentre il set di validazione viene utilizzato per validare il modello precedentemente addestrato, in modo da calcolare il tasso di errore, che può aiutare l'utente ad identificare le performance e l'accuratezza del classificatore; Addestramento del modello: In questa fase eseguiamo il modello sul dataset di training. Il risultato ottenuto in questa fase è un modello che (in caso di successo) è in grado di prevedere il giusto risultato di un pattern anche quando nuovi dati sconosciuti vengono inseriti; Validazione: Dopo aver creato il modello, bisogna eseguire un test delle Pagina 17 di 69

18 sua precisione, prestazioni, completezza e contaminazione. E' molto importante che il dataset utilizzato in questa fase non debba mai essere stato utilizzato in questo modello. Questo è il motivo principale per il quale, nelle fasi precedenti, abbiamo suddiviso il dataset in una parte dedicata al training e una da utilizzare in questa situazione. Lo scopo della validazione è verificare e misurare le capacità di generalizzazione del modello. Se l'errore di classificazione ottenuto durante questa fase è maggiore rispetto all'errore ottenuto nella fase di training, significa che il modello non è stato settato correttamente, e bisogna ritornare alle fase di training e modificare i parametri. Il motivo potrebbe essere che il modelle ha semplicemente memorizzato le risposte vista durante l'addestramento, fallendo così il processo di generalizzazione. Questo è un tipico comportamento di overfitting, e ci sono varie tecniche per superarlo; Utilizzo: Se la fase di validazione è andata a buon fine, il modello è addestrato a dovere. Possiamo quindi utilizzare il modello per classificare/predire nuovi dati. Apprendimento non supervisionato Per un apprendimento non supervisionato, abbiamo i seguenti step: Analisi preliminare dei dati. Così come accade con i modelli supervisionati, in questo step viene effettuata la selezione delle caratteristiche da dare all'algoritmo, tramite il ridimensionamento dei dati in modo da creare un adeguato dataset di training; Addestramento del modello. Viene eseguito l'algoritmo non supervisionato sul dataset appena creato in modo da ricavarci i cluster Pagina 18 di 69

19 di dati; Validazione. Dopo aver ottenuto i gruppi di dati, dobbiamo verificare se questi sono stati concepiti nel giusto modo. Per far ciò in questa fase verranno effettuati calcoli di dati statistici sui risultati del modello, così come analisi basate sul dominio di conoscenza, dove si può misurare come certe caratteristiche si comportano quando inserite in un gruppo. Una volta soddisfatti dei risultati ottenuti tramite la creazione dei gruppi, il modello può essere utilizzato per l'esecuzione di esperimenti con dati nuovi e mai utilizzati prima durante il training. Pagina 19 di 69

20 3. Architetture di Calcolo ad Alte Prestazioni Con l'aumentare della complessità dei problemi nel calcolo scientifico e nella vita di tutti i giorni, le singole macchine come ad esempio le moderne CPU multi-core, anche se molto performanti, risultano essere insufficienti per l'esecuzione di esperimenti con modelli particolarmente e strutturalmente complessi. E' proprio da questa necessità che negli ultimi anni si è cercato di implementare architetture computazionali costituite da reti di singoli calcolatori, all'interno delle quali il lavoro viene distribuito sui singoli nodi. Oggi giorno le architetture più utilizzate nel calcolo scientifico risultano essere afferenti a tre macro-categorie: Grid, Cloud e GPGPU (General Purpose computation on Graphic Processing Units) GRID L'architettura GRID usa singoli computer ed altre risorse interconnesse con l'unico scopo di raggiungere alte prestazioni di calcolo. Questa architettura è stata sviluppata inizialmente nella metà degli anni 90, ma solo negli ultimi anni, grazie alle reti ad alta velocità e ad Internet che consentono interconnessioni anche a grandi distanze, le GRID sono diventate una delle più importanti tecniche computazionali ad alte prestazioni, utilizzate soprattutto per la condivisione di dati scientifici, tecnologici, ingegneristici ed economici. Grazie all'utilizzo del web che permette reti intercontinentali ad alte prestazioni, sono le architetture preferite dai ricercatori per eseguire collaborazioni collettive atte alla soluzione di un problema di grandi dimensioni (come ad esempio l'esperimento LHC del CERN). I benefici di questa struttura sono i seguenti: Pagina 20 di 69

21 I problemi che non potevano essere risolti dall'uomo a causa delle limitate capacità di calcolo, possono ora essere affrontati. Un esempio di questi problemi è la comprensione del genoma umano; Squadre specializzate, provenienti da ogni parte del mondo, possono cooperare per affrontare problemi che richiedono conoscenze interdisciplinari; Se un dispositivo specializzato alla risoluzione di un esperimento viene inserito nella griglia, questo può essere utilizzato da remoto ed in maniera collettiva da chiunque abbia accesso alla griglia. L'enorme quantità di risorse condivise dalle GRID ha bisogno di regole precise per quanto riguarda: le risorse condivise; gli utenti autorizzati ad utilizzarle; le condizioni sul loro utilizzo. In risposta a questa necessità, ci vengono incontro le Virtual Organization (o più semplicemente VO). Le Virtual Organization sono gruppi di persone, la maggior parte delle volte appartenenti ad un unica istituzione, con determinate autorizzazione di accesso alle risorse della GRID; queste possono essere di diverse dimensioni e un utente può appartenere a più di una sola VO nello stesso momento. Per fare un esempio di VO, si può pensare ad un insieme di fisici in diversi campi di ricerca coinvolti nello stesso esperimento. Per autenticarsi ed accedere alla Grid l utente deve disporre di alcuni precisi Pagina 21 di 69

22 requisiti. Esistono degli enti di terza parte pubblici o privati (trusted third party), le CA (Certification Authorities), che si occupano di rilasciare un certificato digitale tramite procedura di certificazione che segue standard internazionali. Viene utilizzata la crittografia a doppia chiave, o asimmetrica, in cui una delle due chiavi viene resa pubblica all interno del certificato (chiave pubblica), mentre la seconda, univocamente correlata con la prima, rimane segreta e associata al titolare (chiave privata). Una coppia di chiavi può essere attribuita ad un solo titolare. L autorità dispone di un certificato con il quale sono firmati tutti i certificati emessi agli utenti. In aggiunta, ciascuna VO si può dotare di politiche per l accesso dei propri utenti alle risorse appartenenti a domini differenti. Un altro aspetto altrettanto fondamentale nell'implementazione di una GRID è sicuramente lo scheduling; infatti, mentre nei sistemi tradizionali le risorse e i processi vengono controllati direttamente dallo scheduler del sistema, nelle GRID le risorse sono eterogenee e distribuite su più macchine che gestiscono in locale lo scheduling, i tempi di accesso e la disponibilità delle risorse. La mancanza di uno scheduler centralizzato e della presenza di utenti che generano processi diversi tra loro, rendono il management del sistema molto più complicato che in sistemi tradizionali. Pagina 22 di 69

23 Illustrazione 2: Esempio di GRID Pagina 23 di 69

24 3.2. Cloud L'architettura Cloud è nata per la distribuzione di servizi (commerciali e non) eterogenei, ed è gestita da un singolo individuo, chiamato host, il quale ha il pieno controllo del sistema e del suo hardware. La particolarità del Cloud Computing è quella di fornire una collezione eterogenea di risorse implementate come un unico grande sistema. L'utente che vuole usufruire dei servizi di questa architettura ha esclusivamente bisogno di un dispositivo con accesso ad internet, questo perché i dati e le applicazioni per gestirle sono già situati sul Cloud, ed è il Cloud stesso ad occuparsi dell'esecuzione di questi. In generale i servizi offerti dal Cloud possono essere suddivisi in tre distinti classi: Software as a Service (SaaS): Nei servizi che ricadono in questa categoria, l'utente acquista una licenza per l'utilizzo di un software presente sul Cloud. Tramite il software acquistato l'utente può utilizzare ed elaborare i dati presenti sul proprio dispositivo. Tramite questa tipologia di servizi l'utente può utilizzare software richiedente grandi risorse computazionali senza dover in alcun modo nuovo hardware per il proprio dispositivo locale. Un chiaro esempio di SaaS è Office 365, una versione online di Microsoft Office che offre editing di documenti senza dover installare nulla sulla propria macchina; Pagina 24 di 69

25 Data as a Service (DaaS): E' una tipologia di servizio molto simile alla precedente, ma con alcune piccole variazioni. I servizi di questa classe si occupano di fornire dati il cui calcolo risulta essere, computazionalmente parlando, complesso e non facilmente raggiungibile utilizzando il semplice hardware del dispositivo dell'utente. Un classico esempio di DaaS è Google Maps, il quale offre, tramite incroci di dati provenienti da immagini satellitari, mappe digitali, e database di attività commerciali informazioni multiple riguardanti la maggior parte dei luoghi presenti sul globo; Hardware as a Service (HaaS): Questa tipologia di servizio prevede il noleggio di un sistema ad alte prestazioni, al quale, l'utente, può accedervi tramite la rete, e tramite il quale può effettuare calcoli con una rapidità e precisione impossibili con l'hardware a sua disposizione. Platform as a Service (PaaS): Infine questa tipologia di servizio, (a differenza del SaaS che prevede un singolo programma), prevede la fornitura di una intera piattaforma software che contiene applicazioni, librerie e framework utili all'utente. Un esempio di servizio PaaS è AppScale : una piattaforma che permette all'utente di sviluppare applicazioni scritte per Google App Engine direttamente sui propri server. Il modello di Cloud Computing risulta essere molto diverso da quello della GRID; infatti, nel Cloud, le risorse sono condivise da tutti gli utenti allo stesso tempo, a differenza delle risorse dedicate delle Grid il cui accesso è gestito da un sistema di code. Questo dovrebbe consentire alle applicazioni sensibili alla latenza (es. applicazioni real time) di operare in modo nativo all'interno del sistema, anche se, a causa della crescita esponenziale dei sistemi Cloud e dei Pagina 25 di 69

26 loro utenti, garantire un livello di QoS (Quality of Service) sufficiente non è banale, ed è una delle principali sfide di questa architettura. Illustrazione 3: Esempio di configurazione Cloud 3.3. GPGPU L'acronimo GPGPU, (General Purpose computing on Graphics Processing Units) è stato coniato da Mark Harris nel 2002 (Harris 2003), riconoscendo la tendenza ad impiegare la tecnologia GPU per applicazioni non grafiche. I chip grafici, grazie alla loro natura intrinseca di processori many-core, basandosi su centinaia di unità di elaborazione floating-point specializzate, permettono, per molti algoritmi parallelizzabili, di ottenere maggiori prestazioni delle classiche CPU multi-core. Essi hanno il vantaggio di essere anche più economici rispetto a questi ultimi, a causa del prezzo relativamente basso dei componenti dei chip grafici. Pagina 26 di 69

27 Anche se la programmazione parallela su CPU risulta essere nella maggior parte dei casi il miglior metodo di ottimizzazione di un algoritmo grazie anche alla sua semplicità di programmazione, le moderne GPU many-core hanno indotto, negli ultimi anni, i ricercatori a sfruttare questa tipologia di architettura per ridurre drasticamente il tempo di calcolo dei propri algoritmi. Ai giorni nostri infatti, le GPU hanno complesse architetture parallele che permettono il processo di numerosi poligoni in maniera indipendente (NVIDIA Corp [11]). Questi device appartengono a quella categoria di processori che nella tassonomia di Flynn vanno sotto il nome di architetture SIMD (Single Instruction, Multiple Data), e il loro uso, grazie al grande numero di core, permette una elevata velocità di computazione rispetto alle moderne CPU (anche se con qualche limitazione come vedremo in seguito). L'ultima generazione di GPU favorisce l'esecuzione di programmi definiti general purpose (utilizzo generico), permettendo agli sviluppatori di creare software eseguibile su GPU, ovvero permettono di eseguire General Purpose computation on Graphic Processing Units (GPGPU). Per quanto riguarda la tecnologia GPGPU, esistono diversi ambienti di sviluppo per la programmazione su processori grafici e diverse soluzioni architetturali hardware di diversi produttori, ma in questo testo ci soffermeremo principalmente su quella utilizzata nei nostri esperimenti: NVIDIA Kepler. Architettura NVIDIA Kepler L'elaborazione su GPU ha riscosso un tale successo applicativo da portare le case produttrici a commercializzare prodotti concepiti specificatamente per questo scopo. Concentrandoci su NVIDIA, già con la serie Fermi aveva permesso ad applicazioni come simulazioni in ambito della biochimica e fluidodinamica computazionale di accelerare notevolmente i tempi di esecuzioni, e con la serie Kepler sarà possibile aumentare considerevolmente il parallelismo. Pagina 27 di 69

28 Nella precedente architettura Fermi ogni GPU è composta da una serie di processori chiamati Streaming Multiprocessor (SMP). Ogni SMP è a sua volta composto da 8 Streaming Processor (SP), i quali fanno capo ad un unica unità di controllo, che ha il compito di decodificare le istruzioni che dovranno essere eseguite dai vari SP. Ci troviamo, come accennato in precedenza, in una tipica architettura SIMD (Single Instruction Multiple Data), che impone l'esecuzione della stessa istruzione, con dati diversi, a tutti i thread. Un limite dell'architettura CUDA è la lentezza dell'unità di controllo nella decodifica di una singola istruzione: ogni CPU riesce a codificare una istruzione ad ogni ciclo di clock, mentre le unità di controllo delle GPU Fermi riescono a decodificare una istruzione ogni 4 cicli di clock. La nuova architettura Kepler è composta da unità Next Generation SM (SMX), una struttura multiprocessore concepita allo scopo di essere più potente e programmabile. Ogni SMX è composta da 192 CUDA core, 64 unità funzionali in doppia precisione, 32 unità per funzionalità specifiche. Nel passaggio da SM di Fermi a SMX di Kepler è stata dedicata una quantità maggiore di risorse ai core di elaborazione rispetto alla logica di controllo, il risultato è stato un incremento del 3x sulle performance. L'elaborazione, come negli SM, è inviata ad un SMX, che la fa eseguire contemporaneamente dai core a sua disposizione in processi chiamati thread. In particolare ogni SMX è in grado di gestire 2048 thread, o meglio 64 threadblock (Illustrazione 4). Ogni threadblock a livello hardware è composto da 32 blocchi di thread consecutivi chiamato warp. Pagina 28 di 69

29 Illustrazione 4: NVIDIA K20x SMX C: single precision/integer CUDA core; DP: Double precision FP Unit; L/S: memory load/store unit; SF: Special function unit Di fatto la GPU ragiona avendo come riferimento il warp, e quindi schedula le istruzioni per blocchi da 32 thread. La NVIDIA descrive questo come un modello chiamato SIMT (Single Instruction Multiple Thread). Ogni SMX ha 4 schedulers (Illustrazione 5 blocco Instruction Issuing ) di cui ognuna, per ogni ciclo di clock, cerca di allocare tramite le due unità di dispatch a sua disposizione due istruzioni indipendenti sullo stesso warp. Pagina 29 di 69

30 Illustrazione 5: NVIDIA Kepler - Warp Scheduler Mediamente un'architettura Kepler è equipaggiata circa 13 SMX, per un massimo di 15 per i casi delle full Kepler. La NVIDIA K20c che verrà usata nel resto della trattazione è equipaggiata con 14 di queste unità. Per quanto riguarda la memoria troviamo lo stesso tipo di struttura e ramificazione, con aree quindi disponibili all'intero dispositivo e unità specifiche disponibili per i singoli SMX e quindi ai thread. Abbiamo una memoria DRAM di tipo GDDR5 da 6GB, usata per contenere le repliche dei dati della CPU necessari per l'elaborazione. È una memori globale per tutto il dispositivo. Questa memoria si interfaccia con un'altra memoria globale, la cache di secondo livello, grande 1, 5MB, che permette la comunicazione tra la DRAM e gli SMX e con la memoria CPU (d'ora in avanti host). All'interno degli SMX è presente una memoria di sola lettura grande 48kB, il cui utilizzo è compito specifico del programmatore, e una memoria da 64kB che viene usata come memoria condivisa dai thread e come L1 cache, sempre secondo le specifiche impostate dal programmatore. La shared Pagina 30 di 69

31 memory ha come caratteristica quella di presentare scarsa latenza e alto bandwidth e viene utilizzata dal programmatore, mentre nella L1 cache viene usata in automatico dal dispositivo per gestire l'esecuzione, come stack per gli indirizzi di ritorno e altri parametri[17]. Abbiamo dunque una struttura fortemente parallela che per essere sfruttata al meglio necessita che nel codice siano presenti cicli con un numero finito di ripetizioni, con istruzioni indipendenti da poter essere eseguite in contemporanea suddividendole lungo gli SMX. In particolare quello che succede quando si esegue un programma scritto per CUDA è di copiare i dati necessari all'elaborazione dalla memoria della CPU a quella della GPU, che quindi esegue il ciclo producendo (ad esempio) nuovi dati, che poi vengono ricopiati sulla memoria della CPU. Qualora il ciclo venisse suddiviso su più SMX sarà la logica di controllo a tenere traccia delle singole esecuzioni e a sincronizzare il risultato. Cosa accade nel caso in cui un ciclo contenesse al suo interno un altro ciclo? Accadrebbe che (in base alla topologia) ognuno di essi verrebbe inviato dalla CPU alla GPU, per poi tornare indietro al termine, ed eventualmente essere rinviato alla GPU per l'esecuzione di un nuovo ciclo. Tra le principali novità della serie Kepler figura il Dynamic Parallelism (Illustrazione 6), e cioè una nuova gestione interna dei processi grazie alla quale la GPU è capace di gestire i cicli annidati direttamente e senza passare per la CPU. I processi sono in gradi di avviare altri processi, gestendo il traffico dei dati e la sequenzialità dei risultati. Questo è chiaramente un grande vantaggio per il programmatore, rendendo il codice più semplice da leggere, facile da manutenere ed espandere, non dovendo più gestire gli spostamenti di dati e sincronizzare gli eventi, ma solo curare l'algoritmo. Pagina 31 di 69

32 Illustrazione 6: Dynamic Parallelism La terza principale innovazione della serie Kepler è il meccanismo chiamato Hyper-Q. Questo permette alla GPU di ricevere e gestire istruzioni da più CPU core contemporaneamente, ottimizzando al massimo l'utilizzo server di questi dispositivi. Questa funzione di fatto aumenta il numero di connessioni tra l'host e il dispositivo Kepler permettendo 32 connessioni simultanee, contro la singola connessione permessa dalla serie Fermi. La flessibilità di questa soluzione permette l'interazione tra i CUDA stream e i processi MPI. Quindi applicazioni con algoritmi multiprocessore potranno inviare per ogni thread della CPU parte dell'esecuzione su GPU, ottenendo due livelli di elaborazione parallela. A livello di risorse questo non rappresenta un limite, in quanto il carico di lavoro che in genere viene assegnato ad un thread della CPU è più piccolo di quello gestibile dalla GPU, quindi è difficile che un singolo thread di un processo MPI occupi l'intera GPU, lasciando di fatto spazio ad altri processi. Hyper-Q è quindi prevalentemente un meccanismo di accelerazione per le applicazioni MPI. Pagina 32 di 69

33 Illustrazione 7: NVIDIA Hyper-Q Pagina 33 di 69

34 4. Ambienti per il calcolo parallelo Gli ambienti di programmazione parallela forniscono gli strumenti di base, caratteristiche del linguaggio e interfacce di programmazione (API), necessari per costruire un programma parallelo. Questi ambienti di programmazione utilizzano un'astrazione chiamata modello di programmazione. I computer sequenziali utilizzano il ben noto modello di von Neumann (von Neumann 1945 [16]). Poiché tutti i computer sequenziali utilizzano questo modello, gli sviluppatori che programmano in questa astrazione software possono mappare i loro codici sulla maggior parte, se non tutti, i computer sequenziali. Al contrario, ci sono molti modelli possibili per il calcolo parallelo Ambienti convenzionali: MPI e OpenMP Fortunatamente, alla fine del 1990, la comunità di programmazione parallela ha iniziato a convergere prevalentemente su due ambienti di programmazione parallela: Message Passing Interface (MPI) per il calcolo del cluster scalabili (sistemi a memoria distribuita o più semplicemente distribuiti) e OpenMP per i sistemi multi-processore con memoria condivisa (Mattson et al [8]). MPI (Message Passing Interface), è una libreria (implementata in linguaggi come C e Fortran) per la gestione delle comunicazioni tra processi che compongono un programma parallelo su memoria distribuita (Queen, 2004 [13]). Il protocollo prevede l'utilizzo di thread con memoria autonoma che comunicano tra di loro mediante l'utilizzo di messaggi inviati tramite l'uso delle funzioni send e recv. Nell'immagine sottostante possiamo vedere un programma Hello World! scritto in C tramite l'uso del protocollo MPI, dal quale possiamo ricavarci le Pagina 34 di 69

35 prime funzioni MPI: Illustrazione 8: Codice di "Hello World" per il protocollo "MPI" L'inclusione della libreria mpi. h contiene le dichiarazioni di tutte le funzioni MPI, dopodiché all'interno del main vediamo un trittico fondamentale per la gestione dei thread: MPI_Init MPI_Comm_rank e MPI_Comm_size ; Il primo si occupa della generazione dei thread e passa ad ognuno di loro gli argomenti del programma; al termine dell'esecuzione di questa funzione ogni operazione sarà eseguita in contemporanea da ogni thread appena creato. MPI_Comm_rank copia nella variabile rank l'id del thread corrente, mentre MPI_Comm_size ritorna il numero dei thread del programma. Una volta terminata l'esecuzione di queste tre funzioni si può iniziare a scrivere un programma parallelo, al termine del quale si possono uccidere tutti i thread tramite l'utilizzo della funzione MPI_Finalize. Come detto in precedenza, ogni thread ha un proprio spazio di memoria inaccessibile dagli altri processi; dunque per poter comunicare tra loro, i thread hanno bisogno di un canale di comunicazione che in MPI è dato dalle Pagina 35 di 69

36 due funzioni, send e recv le quali sono dichiarate in questo modo: MPI_Send (void* data, int count, MPI_Datatype datatype, int destination, int tag, MPI_Comm communicator) MPI_Recv (void* data, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm communicator, MPI_Status*status) dove: data : puntatore alla variabile da inviare (o ricevere). count : dimensione del dato datatype : tipo del dato trasferito destination : ID del thread al quale inviare (o dal quale ricevere) il dato. tag : valore che identifica univocamente la trasmissione. communicator : identifica il canale di comunicazione attraverso il quale i threads si scambiano l'informazione (il communicator globale è MPI_COMM_WORLD ). status : contiene le informazioni generali riguardanti la trasmissione (mittente, destinatario, esito della trasmissione... ecc). Pagina 36 di 69

37 OpenMP è invece una libreria (implementata per C, C++ e Fortran) che contiene le API per lo sviluppo di applicazioni multi-thread con memoria condivisa (Queen, 2004 [13]). La caratteristica di OpenMP, oltre alla memoria condivisa tra processi, è la sua semplicità d'uso; Al programmatore che intende parallelizzare una porzione di codice di un programma, basta solo utilizzare la direttiva di preprocessore #pragma seguita dalle clausole che caratterizzano il tipo di parallelismo (forking); Al termine della porzione di codice scelta dal programmatore, il programma tornerà ad eseguirsi con un singolo thread (joining). Illustrazione 9: Schematizzazione della tecnica denominata "fork/join" Così come accade con MPI, anche in OpenMP ogni thread ha un valore identificativo che si può ottenere tramite l'uso della funzione omp_get_thread_num (). Di seguito possiamo vedere un Hello World scritto in C dove viene utilizzata la libreria OpenMP. Pagina 37 di 69

38 Illustrazione 10: Codice di "Hello World" per il protocollo "OpenMP" Come possiamo vedere il codice è molto simile al classico Hello World per C; l'unica differenza è nella chiamata della direttiva di preprocessore #pragma il quale, in questa situazione crea un numero prefissato di thread (che può essere definito durante la chiamata del programma tramite variabile d'ambiente, o settato in fase di esecuzione tramite la funzione omp_set_num_threads ) che eseguirà la stampa a schermo. Una caratteristica fondamentale di OpenMP è, come detto in precedenza, l'utilizzo delle clausole all'interno della direttiva #pragma che hanno il compito di impostare le seguenti caratteristiche: La visibilità delle variabili che vengono usate durante la fase parallela (condivise o private); La tipologia di sincronizzazione dei threads; Lo scheduling che deve essere adottato per gestire i threads; Come devono essere gestiti i risultati ottenuti da ogni thread (es. reduction). Pagina 38 di 69

39 4.2. Ambienti paralleli NVIDIA Illustrazione 11: Confronto tra CUDA C, Librerie e Direttive Esistono diverse strategie per parallelizzare il codice sequenziale. CUDA ne mette a disposizione tre: scrivere codice CUDA C, utilizzare delle librerie parallele dedicate (cublas, Thrust, etc. ) oppure con compilatori paralleli tramite l'utilizzo delle direttive. Un approccio più semplice alla programmazione parallela è sicuramente quello che sfrutta le librerie. Il CUDA Toolkit ne include diverse come cublas, porting parallelo delle più famose BLAS, cufft per il calcolo della trasformata di Fourier veloce, curand per la creazioni dei numeri casuali e così via. Un altra libreria che è simile alla Standard Template Library di C++ è Thrust. Questa libreria include una vasta collezione di primitive parallelizzate come gli Pagina 39 di 69

40 algoritmi di ordinamento, quelli di scan e reduce, garantendo una buona prototipazione e buone performance. Per le applicazioni che necessitano di un parallelismo più spinto o funzioni che non sono fornite dalle librerie parallele, il linguaggio CUDA C è la soluzione migliore. Una volta che viene identificato un hotspot (una porzione di codice che conviene parallelizzare) tramite un operazione di profiling, si può usare CUDA C per scrivere il codice della funzione kernel che verrà eseguita sul dispositivo. Una volta che l'esecuzione del kernel sarà terminata spetterà a noi recuperare il risultato dal device e spostarlo sul host. Questo approccio garantisce le performance migliori rispetto all'utilizzo delle direttive o delle librerie, ma necessita di molto tempo. sia in termini di acquisizione del know how necessario per comprendere appieno il paradigma che sta dietro questo linguaggio di programmazione parallela, sia per lo sviluppo vero e proprio delle funzioni kernel. L'approccio più rapido dei tre è sicuramente quello tramite direttive poiché si delega al compilatore il compito di mappare le regioni di codice seriale da parallelizzare sull'architettura parallela. In questo lavoro di tesi si è scelto quest'ultimo approccio per parallelizzare il codice del modello FMLPGA OpenACC OpenACC è uno standard di programmazione che consente di accelerare codice Fortran, C e (sempre più) C++ sfruttando la potenza dei sistemi eterogenei di CPU/ ACCELERATORE. OpenACC consente ai programmatori di utilizzare semplici direttive del compilatore per individuare quali aree di codice accelerare, senza richiedere modifiche al codice stesso. Identificando i segmenti di codice da parallelizzare, le direttive permettono al compilatore di Pagina 40 di 69

41 mappare il calcolo da eseguire sulla GPU per essere accelerato. Lo standard delle direttive conservano una base di codice comune che è multipiattaforma e compatibile con più architetture (a differenza del codice CUDA C che è compatibile solo con le schede NVIDIA) offrendo un modo ideale per preservare gli investimenti nelle applicazioni legacy consentendo inoltre un approccio a basso rischio verso il computing accelerato. Molti programmatori non possono permettersi il tempo di imparare e applicare un linguaggio di programmazione parallela, altri lavorano con enormi quantità di codice già esistenti, possono apportare solo quelle modifiche al proprio codice che mantengano la portabilità tra hardware, e che beneficino di un aumento di prestazioni su più piattaforme. Questo tipo di sviluppatori necessita di un approccio più ad alto livello. Le direttive OpenACC costituiscono la soluzione facile e sicura per accelerare il codice delle proprie applicazioni utilizzando le GPU. È sufficiente inserire le direttive OpenACC nelle porzioni del proprio codice più impegnative dal punto di vista dei calcoli e sarà il compilatore stesso a mapparle automaticamente sulla GPU. Ecco un esempio di come una singola direttiva può accelerare il calcolo del p greco. Pagina 41 di 69

42 Illustrazione 12: Codice OpenAcc per il calcolo di pi greco. La linea #pragma acc kernels nel programma indica che seguirà una direttiva del compilatore. In questo caso stiamo suggerendo al compilatore che quello sottostante è un ciclo parallelizzabile e che c'è da eseguire un operazione di riduzione la cui variabile di uscita è pi, il compilatore dovrà generare il codice del kernel parallelo per un acceleratore (nel nostro caso una GPU). Nella pratica, questa direttiva dice al compilatore di generare una funzione kernel, da parallelizzare per il nostro acceleratore (nel nostro caso sarà una funzione kernel CUDA), che esegua il codice del for che segue la direttiva. Per compilare il codice diremo al compilatore di considerare le direttive OpenACC e usare una GPU NVIDIA come architettura di deploy, utilizzando i comandi -acc e -ta=nvidia (volendo è possibile specificare anche la compute capability in questo modo: -ta=cc30). Possiamo avere delle informazioni circa la parallelizzazione aggiungendo l'opzione -Minfo=accel, un esempio di risposta del compilatore potrebbe essere questa: Pagina 42 di 69

43 7, Generating NVIDIA code Generating compute capability 1.3 Generating compute capability 2.0 Generating compute capability 3.0 8, Loop is parallelizable Accelerator kernel generated 8, #pragma acc loop gang, vector threadidx. x */ 10, Sum reduction generated for pi binary binary binary (128) /* blockidx. x Il compilatore ci sta dicendo che il loop alla riga 7 ha generato 3 kernel per le diverse compute capability, che il loop alla riga 8 è parallelizzabile e che, in questo caso a differenza dell'esempio abbiamo utilizzato la direttiva generica #pragma acc kernels, il pragma è stato modificato passando 128 thread per blocco ed ottimizzando la riduzione per la variabile pi. In contrasto con CUDA C, non abbiamo bisogno di allocare o inizializzare degli array sul device, non definire lo spostamento di dati da host (CPU) ad acceleratore (GPU) o copiare il risultato dal device all'host alla fine dei calcoli. Il compilatore OpenACC farà tutto il lavoro. Nell'esempio precedente viene lasciato al compilatore la scelta di come allocare i dati sull'acceleratore, come spostare i dati e come parallelizzare il ciclo for ma è possibile, con l'uso di clausole nelle direttive, specificare in modo esplicito queste cose. In questo modo OpenACC può essere contemporaneamente semplice e potente anche se si potrà solo avvicinare alle performance di un codice scritto completamente in CUDA C. Uno dei vantaggi maggiori vantaggi dell'utilizzo delle direttive del compilatore è che possono essere ignorate. Ciò significa che è possibile compilare il codice anche per una piattaforma non supportata da OpenACC e funzionerà, il compilatore semplicemente si comporterà come se le direttive non ci fossero. Questo permette di avere un codice portabile su diverse architetture senza dover fare un lavoro specifico sul codice. Pagina 43 di 69

44 Non è tutto rose e fiori però. A volte, ottenere buoni incrementi nella velocità con OpenACC richiederà modifiche al codice originale. Ad esempio, alcune strutture dati si trovano sotto forma di modelli di accesso che non sono parallel-friendly. Spesso, ad esempio, è saggio rappresentare un array di strutture (AOS) come una struttura di array (SOA). Questo non è specifico per GPU: una rappresentazione SoA è conveniente per qualsiasi processore parallelo, comprese le CPU multi-core. Questo tipo di cambiamento del codice aiuta a rendere il codice orientato al parallelismo, e quindi tende ad avere vantaggi prestazionali universali. Pagina 44 di 69

45 5. FMLPGA Il modello ibrido Multi Layer Perceptron con Algoritmo Genetico (MLPGA) si basa sulla coniugazione delle proprietà architetturali della rete neurale MLP con quelle algoritmiche di un algoritmo genetico (GA). Quest'ultimo viene impiegato come sistema di addestramento (nel seguito training) del modello MLP, in modo da aggiornare i pesi della rete neurale. Il GA viene quindi a sostituire il classico algoritmo di training noto come Back Propagation (BP), comunemente usato per la rete MLP (Bishop 2006 [2]). L'addestramento con un GA introduce un meccanismo di ottimizzazione basato su proprietà statistiche fondando il processo di training sul concetto di evoluzione genetica piuttosto che sulle proprietà del gradiente discendente per minimizzare la funzione errore del paradigma supervisionato Il modello ibrido MLPGA Tenendo presente le considerazione fatte per MLP e GA, mostriamo ora come questi vengono combinati insieme ottenendo così il modello MLPGA. In pratica i geni dei cromosomi della popolazione rappresentano i possibili pesi della rete neurale, e l evoluzione di questi cromosomi ha lo scopo di trovare il set di pesi (il DNA) che, innestato all interno della rete, restituisce un output con il minor errore possibile. Pagina 45 di 69

46 L esecuzione di questo algoritmo comporta i seguenti passi: 1. Generazione di una popolazione random di cromosomi; 2. Forward propagation su tutti i pattern del dataset preso in input generando un risultato di output. Questo passaggio viene ripetuto per ogni set di pesi (ogni singolo cromosoma della popolazione); 3. Calcolo dell errore di training; 4. Generazione di una nuova popolazione di cromosomi applicando gli operatori genetici e i metodi precedentemente mostrati 5. Ripetizione dei passi da 2 a 4 finché non si verifichi un evento di terminazione (raggiungimento del numero massimo di epoche oppure un cromosoma con un fitness minore di un valore inizialmente settato). Il modello risulta essere mediamente efficiente, anche se in presenza di dati particolarmente rumorosi o complessi, subisce un degrado delle prestazioni rispetto a modelli MLP con differenti regole di apprendimento (Brescia et al. 2012A [3]). La vera limitazione del modello è l'eccessivo tempo impiegato per effettuare la fase di training Modello FMLPGA Il modello FMLPGA (Fast MLPGA), è una versione parallelizzata del modello MLPGA realizzata utilizzando la tecnologia NVIDIA CUDA. Pagina 46 di 69

47 Nello sviluppo del nuovo algoritmo, per sfruttare al meglio l'architettura CUDA, va semplificata la rappresentazione della rete MLP eliminando quanto più è possibile l'uso dei puntatori. Questo perché uno dei bottleneck di CUDA è proprio la latenza nell'accesso alla memoria. Per diminuire inutili passaggi da memoria host a quella device si cerca di allocare tutte le strutture dati e le variabili utilizzate nell'ambiente CUDA nella fase di start-up del modello. Una volta terminata l'allocazione delle variabili e delle strutture dati sulla GPU, bisogna configurare la CUDA Grid. Con il termine CUDA Grid intendiamo la griglia virtuale composta dai thread che eseguono il lavoro parallelo. La CUDA Grid, in questo modello, è costituita da un numero di blocchi pari al numero di pattern del dataset, ed ogni blocco sarà a sua volta composto da un numero di thread pari al numero di individui della popolazione. Ogni thread eseguirà la funzione di Forward su una specifica coppia pattern/dna attraverso una delle N reti allocate in fase di start-up. Nell'immagine sottostante vediamo la morfologia della CUDA Grid per dataset di dimensione 4 e una popolazione di dimensione 8. Illustrazione 13: Esempio di CUDA Grid nel progetto FMLPGA Pagina 47 di 69

48 Una volta allocate le variabili sulla GPU e settate le dimensioni della CUDA Grid, il modello è pronto per affrontare la fase di Training. Questa tipologia di implementazione offre prestazioni fino a 10 volte superiori alla classica implementazione seriale. Il workflow del modello FMLPGA può essere schematizzato e semplificato tramite il seguente Activity Diagram: Pagina 48 di 69

49 Pagina 49 di 69

50 5.3. Sviluppo in OpenACC Prendendo spunto dal lavoro di analisi di FMLPGA, abbiamo cercato quali fossero, nella fase di training, le porzioni di codice del modello MLPGA da parallelizzare tramite direttive. Sono state identificate due regioni critiche: 1. il loop della funzione di forward della rete MLP #pragma acc parallel loop reduction (+: totinput) for (k=0; k< (n->layers[i]->neurons[j]->weights_size) -1; k+ +) { totinput += n->layers[0]->neurons[j]->weights[k]*input[k]; } 2. il loop interno dell'algoritmo di ordinamento (bubble sort) delle fitness usato nell'algoritmo genetico #pragma acc parallel for (j = 0; j <population_size-1; j++) { if (p->popv[j]->fitness > p->popv[j + 1]->fitness) { Chromosome* temp = p->popv[j + 1]; p->popv[j + 1] = p->popv[j]; p->popv[j] = temp; } } Pagina 50 di 69

51 6. Test Il presente capitolo è dedicato alla descrizione e discussione dei test quantitativi e qualitativi, ed al confronto dei risultati del modello parallelizzato rispetto a quello seriale. Come caso d uso scientifico si è scelto la classificazione del traffico di rete Piattaforme di sviluppo e test I test per confrontare le due versioni del modello MLPGA, sono stati eseguiti sfruttando le risorse di calcolo del progetto DAME, consistenti in un sistema multi-core dotato di CPU AMD Opteron 6220 a 1.4Ghz 8-core, memorie Kingston DDR3 a 1333Mhz e una GPU NVIDIA Tesla K20c con 2496 core, dedicata al calcolo parallelo Caso d'uso Le tecniche di classificazione del traffico di rete mirano ad associare ad una sequenza di pacchetti che viaggiano tra due host, attraverso le rispettive porte, l'applicazione che li ha generati. Si tratta di uno strumento importantissimo per l allocazione delle risorse necessarie a soddisfare specifiche esigenze di QoS (Quality of Service), il monitoraggio della rete e l'attuazione delle policy di sicurezza. Per classificare il traffico di rete si possono utilizzare diverse metodologie. Un metodo semplice consiste determinare l'applicazione che genera il flusso di traffico, identificando le porte sorgente e destinazione del livello di trasporto. Il criterio si basa però sul presupposto che tutte le applicazioni utilizzino una porta nota assegnata dall Internet Assigned Numbers Authority (IANA), ma purtroppo la costante crescita di nuove applicazioni Internet (tra cui ad Pagina 51 di 69

52 esempio quelle peer-to-peer) che fanno uso di porte di livello di trasporto casuali, o comunque non assegnate dallo IANA, o che sfruttano l'http tunnel (tecnica che permette di incapsulare diversi protocolli di rete usando il protocollo HTTP) per superare i firewall rende questa tecnica poco attendibile anche se semplice e veloce. Un altro metodo, molto diffuso per la sua precisione, consiste nel riconoscere l'applicazione tramite l'ispezione del contenuto del payload di ciascun pacchetto. Questa soluzione richiede però calcoli computazionalmente onerosi, che devono essere tanto più veloci quanto maggiore è la capacità dei link, ed è quindi di difficile attuazione su reti a banda larga. I presupposti per l'utilizzo di quest'approccio sono: la possibilità di ispezionare il payload di ogni pacchetto IP la conoscenza, da parte del classificatore, della sintassi di ogni applicazione all'interno del payload del pacchetto. Attualmente, la prima ipotesi è limitata sia dall'utilizzo di tecniche di cifratura dei pacchetti (inclusi i numeri di porta TCP o UDP) sia dalle regolamentazioni in difesa della privacy che possono limitare la capacità di parti terze di ispezionare i payload. La seconda ipotesi inoltre impone l'aggiornamento frequente degli strumenti d'analisi dovuto sia alle modifiche che alla creazione di nuove firme delle applicazioni all'interno del payload dei pacchetti. La recente letteratura propone nuove metodologie di classificazione, basate esclusivamente sull'analisi delle proprietà statistiche del flusso dei pacchetti, usando quindi attributi osservabili del flusso di traffico, come le dimensioni dei pacchetti e tempi di interarrivo. Tramite l'analisi dei valori di tali attributi, il classificatore può attribuire al flusso in esame l'applicazione d'appartenenza più probabile. Quest'approccio di tipo statistico può essere realizzato tramite tecniche di Machine Learning. Pagina 52 di 69

53 Come più volte evidenziato nei capitoli precedenti, il modello MLPGA si basa sul paradigma supervisionato del Machine Learning che ben si presta quindi a trattare problemi di classificazione. Utilizzando dei dataset, descritti nel seguito, sono stati realizzati vari esperimenti atti a: confrontare la capacità di classificazione al variare delle classi di traffico; misurare i tempi di esecuzione di entrambi gli algoritmi. Dataset Nel caso di apprendimento di tipo supervisionato, è necessario effettuare la raccolta preventiva di un rappresentativo numero di flussi delle applicazioni (classi) che si desidera vengano riconosciute dal classificatore. Il primo passo consiste proprio nel reperire un sufficiente numero di flussi di appartenenza certa (dati etichettati) alle classi di interesse, in modo da fornire una base di conoscenza affidabile: una possibile soluzione è quella di registrare varie tracce di traffico ed usare tecniche di ispezione manuale dei payload offline per etichettare i dati di training. I dati usati sono stati raccolti tramite Ground Truth (gt), un software per l'associazione di informazioni Ground Truth, con tracce di traffico Internet. Ogni traccia del flusso, anonimizzata crittografando gli IP e pulendo il payload, ha un file di log che indica per ciascun flusso: numeri di porta di trasporto; risultato dell'analisi DPI (Deep Packet Inspection); nome dell'applicazione che ha generato il flusso, (secondo gt). Una volta ottenute le tracce si applica una procedura euristica per identificare il protocollo a livello applicazione che ha generato ciascun flusso di rete. Pagina 53 di 69

54 Nelle tracce analizzate sono stati riconosciuti i seguenti protocolli di livello applicazione: Web (HTTP e HTTPS), posta (POP3, IMAP4, SMTP e varianti SSL), Skype, P2P (BitTorrent e edonkey), e ad altri protocolli (FTP, SSH, e MSN). Analizziamo la composizione del file Ground Truth e del file dei biflussi: Ground Truth Time Stamp IP sorgente IP destinatario Porta sorgente Porta destinatario Protocollo a livello applicazione Applicazione Protocollo a livello trasporto Biflussi Time Stamp IP sorgente IP destinatario Porta sorgente Porto destinazione Protocollo a livello Trasporto Time Elapsed Bytes UpPackets DownPackets Up+DownPackets La quadrupla iniziale, uguale in entrambi i file, identifica la traccia. Per i nostri esperimenti, si sono scelte quattro caratteristiche del file dei biflussi: Time Elapsed Byte UpPackets DownPackets. Pagina 54 di 69

55 Queste caratteristiche fanno riferimento ad informazioni temporali e quantitative contribuiscono all'operazione di classificazione del traffico di rete ed andranno a costituire le features nei dataset usati per i test. Le applicazioni identificate al livello Applicazione del TCP/IP da Ground Truth sono 31 e riportate nella seguente tabella: Illustrazione 14: Tabella delle applicazioni Pagina 55 di 69

56 Per realizzare gli esperimenti, le 31 classi del dataset originario sono state raggruppate per attinenza ricavando un dataset con 5 classi di traffico suddiviso percentualmente come segue: Classe Applicazione Percentuale Browser Web firefox-bin, firefox, safari, opera, firefox.exe 64.7% P2P Bittorrent. exe, amule, Transmission, Btdna.exe 24.1% Mail Mail, thunderbird-bin, Thunderbird.exe 8% Traffico Cifrato Privoxy, ssh, ocspd 1.1% Skype Skype, Skype.exe 2.1% Dall insieme di dati così ottenuto sono stati ricavati dieci dataset in modo da poter studiare comportamento del modello nel confronto di tutte le possibili combinazioni di coppie di classi di traffico; Browser Web vs Mail; Browser Web vs Skype; Browser Web vs P2P; Browser Web vs Traffico Cifrato; Mail vs P2P; Mail vs Skype; Mail vs Traffico Cifrato; Traffico Cifrato vs P2P; Traffico Cifrato vs Skype; Skype vs P2P. Pagina 56 di 69

57 Ogni dataset così ottenuto è stato suddiviso in Train Set e Test Set nella percentuale 80%-20% garantendo una distribuzione delle classi bilanciata per entrambi. Essendo la distribuzione delle classi nel dataset di partenza non uniforme (vedi tabella precedente), i risultati risultano fortemente sbilanciati a favore della classe Browser Web (quella con più pattern). La fase di preprocessing e, di conseguenza, i 10 dataset derivanti da essa sono stati elaborati e messi a disposizione dal gruppo DAME. Matrice di Confusione La matrice di confusione è l elemento chiave per l interpretazione dei risultati di classificazione (Cavuoti 2014 [5]). Questa matrice va letta per righe: ogni riga si riferisce ad una classe target, mentre ogni colonna riporta la classe output del modello. Illustrazione 15: Esempio di Matrice di Confusione Per ogni classe target la somma dei valori nelle sue colonne corrisponde al numero totale di oggetti di quella classe. In genere si fa uso dei seguenti indicatori statistici in riferimento alle valutazioni delle performance: Total Efficiency (te): (Detta anche Classification Accuracy) definita come il rapporto tra il numero di oggetti classificati correttamente e il numero totale di oggetti nel dataset. Pagina 57 di 69

58 Purezza di una classe (pcn): Definita come il rapporto tra il numero di oggetti correttamente classificati di una classe e il numero di oggetti classificati in tale classe, noto anche come efficienza di una classe. Contaminazione: Definita come il complemento della purezza. Entrambi i casi d'uso, train e test, forniscono in output le matrici di confusione Test Qualitativi In esperimenti basati su tecniche di ML, nella fase di training i risultati statistici servono a per valutare il livello di apprendimento del modello rispetto al dataset fornito in input. Nella fase di Test, invece, le prestazioni qualitative vengono dedotte proprio dall analisi dei risultati, è in questa fase che il grado di generalizzazione dei classificatori empirici ha un'importanza oggettiva. Configurazioni Per gli esperimenti qualitativi del modello di ML, si è scelto di studiarne le prestazioni al solo variare del numero di iterazioni. Inoltre, siccome di questo modello abbiamo anche l implementazione per GPU, i test sono stati eseguiti su entrambe le piattaforme. Pagina 58 di 69

59 I parametri utilizzati relativi alla configurazione della rete neurale sono: numero di caratteristiche (features) input 4; numero di livelli nascosti intermedi: 2; numero di neuroni del primo livello nascosto 9; numero di neuroni del secondo livello nascosto 3; numero di neuroni output (classi target) 3; funzione di attivazione del 1 livello hidden: tanh; funzione di attivazione del 2 livello hidden: tanh; funzione di attivazione del livello output: tanh. I parametri riferiti alla configurazione di Train sono: esperimento: CLASSIFICATION; generazione casuale: GRANDOM; funzione di selezione: FITTING; soglia d errore: 0.001; numero di iterazioni: ; probabilità di crossover: 0.9 (90%); probabilità di mutazione: 0.4 (40%); numero cromosomi per popolazione: 20; elitismo: 2; numero cromosomi per il RANKING: 4; Pagina 59 di 69

60 Risultati Nel seguito si riportano la tabella dei risultati su una media di tre prove, al variare del numero di iterazioni, relativi alle percentuali di accuratezza di classificazione delle coppie di traffico, nei casi d'uso di train e test, con una divisione tra Training Set e Training Test Set di 80%-20%. 80% train - 20% test Br-Ml VER U.C. Iter , ,6 TRAIN , NUM PATTERNS 1192 CPU , ,9 TEST , ,5 NUM PATTERNS , ,3 TRAIN ,5 NUM PATTERNS 1192 GPU , ,6 TEST , NUM PATTERNS 298 NETWORK TRAFFIC CLASSIFICATION classification accuracy percentage Br-PP Br-Sk Br-TC Ml-PP Ml-Sk Ml-TC PP-Sk 83,7 92,6 63,3 76,8 93,8 93,1 81,3 83,9 91,7 77,7 91,5 95,8 96, ,8 91,7 77, ,1 82,1 84,1 91,7 88,3 76,4 95,8 93,4 81, ,25 90,5 61,2 79,1 90,3 93,5 78,6 81,6 90, ,55 92,2 86,7 79,8 90,5 69,2 91,5 90,32 93,5 79,6 79,3 90,5 85,7 78,6 90,9 92,2 82, ,9 91,7 75,1 86,7 96,5 89,4 84,3 82, ,2 92,7 95,2 92,4 83,4 81, ,8 93, ,8 82,6 89,4 96,3 86,8 94,1 96,6 93,9 88, ,6 94,6 71,4 88,4 92,9 84,8 82,9 78,1 94,7 75,5 92,4 94,8 95,8 83, ,8 77,6 93,7 94,8 93,5 82,9 82, ,7 93,6 93, , PP-TC 91,8 95,5 92,5 87, ,4 87,1 72,8 71, ,5 90,7 88, ,4 76, ,3 70 Sk-TC 96,3 96,6 93,9 96, ,5 92,7 92,7 91, , ,1 91, , ,7 94,3 82 Illustrazione 16: Risultati Percentuali di accuratezza CPU vs GPU Per Versione CPU si intende il modello FMLPGA in modalità seriale mentre la Versione GPU è quella con le direttive OpenACC attive. Pagina 60 di 69

61 Illustrazione 17: Risultati - Accuratezza media: CPU vs GPU Analisi dei Risultati Come è possibile notare della tabella e dall'istogramma precedente, è possibile distinguere alcune coppie di classi che hanno ottenuto in media percentuali di classificazione nel Test molto più basse rispetto alle altre. È il caso di: Browser vs Traffico Criptato (Br-TC) ~ 75% Peer to Peer vs Traffico Criptato (PP-TC) ~ 74% In questi casi il risultato è dovuto molto probabilmente alle dimensioni ridotte dei dataset. Br-TC (197 pattern) e PP-TC (270 pattern) risultano essere i più piccoli dataset a disposizione. È possibile notare comunque che con i parametri utilizzati questo modello di ML ottiene risultati molto soddisfacenti in termini di Total Efficiency per tutti i dataset. Le coppie che hanno ottenuto complessivamente i migliori risultati, con percentuali di classificazione più alte sono state: Mail vs Skype (Ml-Sk) ~ 92% Pagina 61 di 69

Università degli Studi di Salerno

Università degli Studi di Salerno Università degli Studi di Salerno Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea in Informatica Tesi di Laurea Algoritmi basati su formule di quadratura interpolatorie per GPU ABSTRACT

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo I Thread 1 Consideriamo due processi che devono lavorare sugli stessi dati. Come possono fare, se ogni processo ha la propria area dati (ossia, gli spazi di indirizzamento dei due processi sono separati)?

Dettagli

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Sistemi multiprocessori Fin qui si sono trattati i problemi di scheduling su singola

Dettagli

GPGPU GPGPU. anni piu' recenti e' naturamente aumentata la versatilita' ed usabilita' delle GPU

GPGPU GPGPU. anni piu' recenti e' naturamente aumentata la versatilita' ed usabilita' delle GPU GPGPU GPGPU GPGPU Primi In (General Purpose computation using GPU): uso del processore delle schede grafice (GPU) per scopi differenti da quello tradizionale delle generazione di immagini 3D esperimenti

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Introduzione alla Virtualizzazione

Introduzione alla Virtualizzazione Introduzione alla Virtualizzazione Dott. Luca Tasquier E-mail: luca.tasquier@unina2.it Virtualizzazione - 1 La virtualizzazione è una tecnologia software che sta cambiando il metodo d utilizzo delle risorse

Dettagli

Creare una Rete Locale Lezione n. 1

Creare una Rete Locale Lezione n. 1 Le Reti Locali Introduzione Le Reti Locali indicate anche come LAN (Local Area Network), sono il punto d appoggio su cui si fonda la collaborazione nel lavoro in qualunque realtà, sia essa un azienda,

Dettagli

Pronto Esecuzione Attesa Terminazione

Pronto Esecuzione Attesa Terminazione Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Architetture Applicative

Architetture Applicative Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

3. Introduzione all'internetworking

3. Introduzione all'internetworking 3. Introduzione all'internetworking Abbiamo visto i dettagli di due reti di comunicazione: ma ce ne sono decine di tipo diverso! Occorre poter far comunicare calcolatori che si trovano su reti di tecnologia

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

La piattaforma di lettura targhe intelligente ed innovativa in grado di offrire servizi completi e personalizzati

La piattaforma di lettura targhe intelligente ed innovativa in grado di offrire servizi completi e personalizzati La piattaforma di lettura targhe intelligente ed innovativa in grado di offrire servizi completi e personalizzati Affidabilità nel servizio precisione negli strumenti Chanda LPR Chanda LPR è una piattaforma

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

C Cloud computing Cloud storage. Prof. Maurizio Naldi

C Cloud computing Cloud storage. Prof. Maurizio Naldi C Cloud computing Cloud storage Prof. Maurizio Naldi Cos è il Cloud Computing? Con cloud computing si indica un insieme di tecnologie che permettono, tipicamente sotto forma di un servizio, di memorizzare/

Dettagli

ISTITUTO TECNICO ECONOMICO MOSSOTTI

ISTITUTO TECNICO ECONOMICO MOSSOTTI CLASSE III INDIRIZZO S.I.A. UdA n. 1 Titolo: conoscenze di base Conoscenza delle caratteristiche dell informatica e degli strumenti utilizzati Informatica e sistemi di elaborazione Conoscenza delle caratteristiche

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello del sistema 4 2.1 Requisiti hardware........................ 4 2.2 Requisiti software.........................

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software di sistema e software applicativo I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software soft ware soffice componente è la parte logica

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

INFORMATICA. Il Sistema Operativo. di Roberta Molinari INFORMATICA Il Sistema Operativo di Roberta Molinari Il Sistema Operativo un po di definizioni Elaborazione: trattamento di di informazioni acquisite dall esterno per per restituire un un risultato Processore:

Dettagli

Sommario. Analysis & design delle applicazioni parallele. Misura delle prestazioni parallele. Tecniche di partizionamento.

Sommario. Analysis & design delle applicazioni parallele. Misura delle prestazioni parallele. Tecniche di partizionamento. Sommario Analysis & design delle applicazioni parallele Misura delle prestazioni parallele Tecniche di partizionamento Comunicazioni Load balancing 2 Primi passi: analizzare il problema Prima di iniziare

Dettagli

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09 SISTEMI OPERATIVI Prof. Enrico Terrone A. S: 2008/09 Che cos è il sistema operativo Il sistema operativo (SO) è il software che gestisce e rende accessibili (sia ai programmatori e ai programmi, sia agli

Dettagli

Struttura del calcolatore

Struttura del calcolatore Struttura del calcolatore Proprietà: Flessibilità: la stessa macchina può essere utilizzata per compiti differenti, nessuno dei quali è predefinito al momento della costruzione Velocità di elaborazione

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...

Dettagli

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Dettagli

Esame di INFORMATICA

Esame di INFORMATICA Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello

Dettagli

03. Il Modello Gestionale per Processi

03. Il Modello Gestionale per Processi 03. Il Modello Gestionale per Processi Gli aspetti strutturali (vale a dire l organigramma e la descrizione delle funzioni, ruoli e responsabilità) da soli non bastano per gestire la performance; l organigramma

Dettagli

Scenario di Progettazione

Scenario di Progettazione Appunti del 3 Ottobre 2008 Prof. Mario Bochicchio SCENARIO DI PROGETTAZIONE Scenario di Progettazione Il Committente mette a disposizione delle risorse e propone dei documenti che solitamente rappresentano

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Ambienti di calcolo a griglia Parte 2. Risorse (e loro gestione) Job di griglia e applicazioni di griglia Riservare le risorse ai job

Ambienti di calcolo a griglia Parte 2. Risorse (e loro gestione) Job di griglia e applicazioni di griglia Riservare le risorse ai job Ambienti di calcolo a griglia Parte 2 Risorse (e loro gestione) Job di griglia e applicazioni di griglia Riservare le risorse ai job Docente: Marcello CASTELLANO La vera rivoluzione non è più la capacità

Dettagli

LE RETI: STRUMENTO AZIENDALE

LE RETI: STRUMENTO AZIENDALE LE RETI: STRUMENTO AZIENDALE INDICE -Introduzione -La rete e i principali tipi di rete -La rete delle reti: Internet -Evoluzione tecnologica di internet: cloud computing -Vantaggi della cloud all interno

Dettagli

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO Descrizione Nell ambito della rilevazione dei costi, Solari con l ambiente Start propone Time&Cost, una applicazione che contribuisce a fornire

Dettagli

Più processori uguale più velocità?

Più processori uguale più velocità? Più processori uguale più velocità? e un processore impiega per eseguire un programma un tempo T, un sistema formato da P processori dello stesso tipo esegue lo stesso programma in un tempo TP T / P? In

Dettagli

Lezione 1. Introduzione e Modellazione Concettuale

Lezione 1. Introduzione e Modellazione Concettuale Lezione 1 Introduzione e Modellazione Concettuale 1 Tipi di Database ed Applicazioni Database Numerici e Testuali Database Multimediali Geographic Information Systems (GIS) Data Warehouses Real-time and

Dettagli

Lo scenario: la definizione di Internet

Lo scenario: la definizione di Internet 1 Lo scenario: la definizione di Internet INTERNET E UN INSIEME DI RETI DI COMPUTER INTERCONNESSE TRA LORO SIA FISICAMENTE (LINEE DI COMUNICAZIONE) SIA LOGICAMENTE (PROTOCOLLI DI COMUNICAZIONE SPECIALIZZATI)

Dettagli

Sistemi informativi secondo prospettive combinate

Sistemi informativi secondo prospettive combinate Sistemi informativi secondo prospettive combinate direz acquisti direz produz. direz vendite processo acquisti produzione vendite INTEGRAZIONE TRA PROSPETTIVE Informazioni e attività sono condivise da

Dettagli

FPf per Windows 3.1. Guida all uso

FPf per Windows 3.1. Guida all uso FPf per Windows 3.1 Guida all uso 3 Configurazione di una rete locale Versione 1.0 del 18/05/2004 Guida 03 ver 02.doc Pagina 1 Scenario di riferimento In figura è mostrata una possibile soluzione di rete

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Introduzione ai Database! Tipologie di DB (gerarchici, reticolari, relazionali, oodb) Introduzione ai database Cos è un Database Cos e un Data Base Management System (DBMS)

Dettagli

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE 1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) 7 Architettura di un calcolatore Lez. 7 1 Modello di Von Neumann Il termine modello di Von Neumann (o macchina di Von

Dettagli

Una architettura peer-topeer per la visualizzazione 3D distribuita

Una architettura peer-topeer per la visualizzazione 3D distribuita Una architettura peer-topeer per la visualizzazione 3D distribuita Claudio Zunino claudio.zunino@polito.it Andrea Sanna andrea.sanna@polito.it Dipartimento di Automatica e Informatica Politecnico di Torino

Dettagli

Generazione Automatica di Asserzioni da Modelli di Specifica

Generazione Automatica di Asserzioni da Modelli di Specifica UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Generazione Automatica di Asserzioni da Modelli di Specifica Relatore:

Dettagli

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Sistema operativo Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Architettura a strati di un calcolatore

Dettagli

Agenti Mobili Intelligenti e Sicurezza Informatica Utilizzare un nuovo paradigma applicativo per la realizzazione di sistemi informatici sicuri.

Agenti Mobili Intelligenti e Sicurezza Informatica Utilizzare un nuovo paradigma applicativo per la realizzazione di sistemi informatici sicuri. Agenti Mobili Intelligenti e Sicurezza Informatica Utilizzare un nuovo paradigma applicativo per la realizzazione di sistemi informatici sicuri. Roma, 25 ottobre 2010 Ing. Antonio Salomè Ing. Luca Lezzerini

Dettagli

SCENARIO. Personas. 2010 ALICE Lucchin / BENITO Condemi de Felice. All rights reserved.

SCENARIO. Personas. 2010 ALICE Lucchin / BENITO Condemi de Felice. All rights reserved. SCENARIO Personas SCENARIO È una delle tecniche che aiuta il designer a far emergere le esigente dell utente e il contesto d uso. Gli scenari hanno un ambientazione, attori (personas) con degli obiettivi,

Dettagli

La Metodologia adottata nel Corso

La Metodologia adottata nel Corso La Metodologia adottata nel Corso 1 Mission Statement + Glossario + Lista Funzionalià 3 Descrizione 6 Funzionalità 2 Schema 4 Schema 5 concettuale Logico EA Relazionale Codice Transazioni In PL/SQL Schema

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Introduzione alla Progettazione per Componenti

Introduzione alla Progettazione per Componenti Introduzione alla Progettazione per Componenti Alessandro Martinelli 6 ottobre 2014 Obiettivo del Corso Il Progetto Software Reale Il Componente Software La Programmazione Ad Oggetti Fondamenti di Informatica

Dettagli

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014 Archivi e database Prof. Michele Batocchi A.S. 2013/2014 Introduzione L esigenza di archiviare (conservare documenti, immagini, ricordi, ecc.) è un attività senza tempo che è insita nell animo umano Primi

Dettagli

Reti di Telecomunicazione Lezione 8

Reti di Telecomunicazione Lezione 8 Reti di Telecomunicazione Lezione 8 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Livello di trasporto Programma della lezione relazione tra lo strato di trasporto e lo strato

Dettagli

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro Introduzione alle tecnologie informatiche Strumenti mentali per il futuro Panoramica Affronteremo i seguenti argomenti. I vari tipi di computer e il loro uso Il funzionamento dei computer Il futuro delle

Dettagli

Il sistema operativo TinyOS

Il sistema operativo TinyOS tesi di laurea Anno Accademico 2005/2006 relatore Ch.mo prof. Domenico Cotroneo candidato Giovanni Chierchia Matr. 534 / 804 ::. Obiettivi del lavoro di tesi Studio del sistema operativo TinyOS Studio

Dettagli

SERVER E VIRTUALIZZAZIONE. Windows Server 2012. Guida alle edizioni

SERVER E VIRTUALIZZAZIONE. Windows Server 2012. Guida alle edizioni SERVER E VIRTUALIZZAZIONE Windows Server 2012 Guida alle edizioni 1 1 Informazioni sul copyright 2012 Microsoft Corporation. Tutti i diritti sono riservati. Il presente documento viene fornito così come

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni Introduzione Ai Data Bases Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni I Limiti Degli Archivi E Il Loro Superamento Le tecniche di gestione delle basi di dati nascono

Dettagli

Turismo Virtual Turismo Virtual Turismo Virtual

Turismo Virtual Turismo Virtual Turismo Virtual Da una collaborazione nata all inizio del 2011 tra le società Annoluce di Torino e Ideavity di Porto (PT), giovani e dinamiche realtà ICT, grazie al supporto della Camera di Commercio di Torino, nasce

Dettagli

Ottimizzazioni 1 Corso di sviluppo Nvidia CUDATM. Davide Barbieri

Ottimizzazioni 1 Corso di sviluppo Nvidia CUDATM. Davide Barbieri Ottimizzazioni 1 Corso di sviluppo Nvidia CUDATM Davide Barbieri Panoramica Lezione Principali versioni dell'hardware CUDA Tesla Fermi Accesso veloce alla memoria globale Accesso veloce alla memoria condivisa

Dettagli

OmniAccessSuite. Plug-Ins. Ver. 1.3

OmniAccessSuite. Plug-Ins. Ver. 1.3 OmniAccessSuite Plug-Ins Ver. 1.3 Descrizione Prodotto e Plug-Ins OmniAccessSuite OmniAccessSuite rappresenta la soluzione innovativa e modulare per il controllo degli accessi. Il prodotto, sviluppato

Dettagli

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

Dettagli

Introduzione al Cloud Computing

Introduzione al Cloud Computing Risparmiare ed innovare attraverso le nuove soluzioni ICT e Cloud Introduzione al Cloud Computing Leopoldo Onorato Onorato Informatica Srl Mantova, 15/05/2014 1 Sommario degli argomenti Definizione di

Dettagli

Network Monitoring. Introduzione all attività di Network Monitoring introduzione a Nagios come motore ideale

Network Monitoring. Introduzione all attività di Network Monitoring introduzione a Nagios come motore ideale Network Monitoring & Introduzione all attività di Network Monitoring introduzione a Nagios come motore ideale Nicholas Pocher Poker SpA - Settimo Torinese, Novembre 2013 1 Indice Il Network Monitoring:

Dettagli

C. P. U. MEMORIA CENTRALE

C. P. U. MEMORIA CENTRALE C. P. U. INGRESSO MEMORIA CENTRALE USCITA UNITA DI MEMORIA DI MASSA La macchina di Von Neumann Negli anni 40 lo scienziato ungherese Von Neumann realizzò il primo calcolatore digitale con programma memorizzato

Dettagli

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque? NOSQL Data Model HBase si ispira a BigTable di Google e perciò rientra nella categoria dei column store; tuttavia da un punto di vista logico i dati sono ancora organizzati in forma di tabelle, in cui

Dettagli

Hardware delle reti LAN

Hardware delle reti LAN Hardware delle reti LAN Le reti LAN utilizzano una struttura basata su cavi e concentratori che permette il trasferimento di informazioni. In un ottica di questo tipo, i computer che prendono parte allo

Dettagli

La Videosorveglianza Criteri per il dimensionamento dello storage

La Videosorveglianza Criteri per il dimensionamento dello storage La Videosorveglianza Criteri per il dimensionamento dello storage Serie vol 1005/2010 L importanza di registrare le immagini video Il valore di un sistema di videosorveglianza non dipende solo dall abilità

Dettagli

Installazione di GFI WebMonitor

Installazione di GFI WebMonitor Installazione di GFI WebMonitor Requisiti di sistema di GFI WebMonitor Server Microsoft Windows 2000 (SP 3) o 2003. Microsoft ISA 2000 Server (non in modalità solo firewall) OPPURE Server Microsoft ISA

Dettagli

Docebo: la tua piattaforma E-Learning Google Ready.

Docebo: la tua piattaforma E-Learning Google Ready. Docebo: la tua piattaforma E-Learning Google Ready. Potenzia la tua suite Google Apps con Piattaforma FAD e Tutorial gratuiti Docebo! Docebo aiuta le aziende nella transizione da altre suite d ufficio

Dettagli

Gestione Turni. Introduzione

Gestione Turni. Introduzione Gestione Turni Introduzione La gestione dei turni di lavoro si rende necessaria quando, per garantire la continuità del servizio di una determinata struttura, è necessario che tutto il personale afferente

Dettagli

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Scopo della lezione. Informatica. Informatica - def. 1. Informatica Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni

Dettagli

Il modello di ottimizzazione SAM

Il modello di ottimizzazione SAM Il modello di ottimizzazione control, optimize, grow Il modello di ottimizzazione Il modello di ottimizzazione è allineato con il modello di ottimizzazione dell infrastruttura e fornisce un framework per

Dettagli

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi

Dettagli

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...

Dettagli

Guida alla registrazione on-line di un DataLogger

Guida alla registrazione on-line di un DataLogger NovaProject s.r.l. Guida alla registrazione on-line di un DataLogger Revisione 3.0 3/08/2010 Partita IVA / Codice Fiscale: 03034090542 pag. 1 di 17 Contenuti Il presente documento è una guida all accesso

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

Software per Helpdesk

Software per Helpdesk Software per Helpdesk Padova - maggio 2010 Antonio Dalvit - www.antoniodalvit.com Cosa è un helpdesk? Un help desk è un servizio che fornisce informazioni e assistenza ad utenti che hanno problemi nella

Dettagli

La Gestione delle risorse Renato Agati

La Gestione delle risorse Renato Agati Renato Agati delle risorse La Gestione Schedulazione dei processi Gestione delle periferiche File system Schedulazione dei processi Mono programmazione Multi programmazione Gestione delle periferiche File

Dettagli

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

Dettagli

Configuration Management

Configuration Management Configuration Management Obiettivi Obiettivo del Configuration Management è di fornire un modello logico dell infrastruttura informatica identificando, controllando, mantenendo e verificando le versioni

Dettagli

Introduzione alla consultazione dei log tramite IceWarp Log Analyzer

Introduzione alla consultazione dei log tramite IceWarp Log Analyzer Introduzione alla consultazione dei log tramite IceWarp Log Analyzer L Analizzatore di Log è uno strumento che consente un'analisi statistica e logica dei file di log generati dal server. Lo strumento

Dettagli

Comunicazione tra Processi

Comunicazione tra Processi Comunicazione tra Processi Comunicazioni in un Sistema Distribuito Un sistema software distribuito è realizzato tramite un insieme di processi che comunicano, si sincronizzano, cooperano. Il meccanismo

Dettagli

Comunicazione tra Processi

Comunicazione tra Processi Comunicazione tra Processi Comunicazioni in un Sistema Distribuito Un sistema software distribuito è realizzato tramite un insieme di processi che comunicano, si sincronizzano, cooperano. Il meccanismo

Dettagli

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI Documenti su Internet LINGUAGGI DI MARKUP Internet permette (tra l altro) di accedere a documenti remoti In generale, i documenti acceduti via Internet sono multimediali, cioè che possono essere riprodotti

Dettagli

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale La soluzione modulare di gestione del Sistema Qualità Aziendale I MODULI Q.A.T. - Gestione clienti / fornitori - Gestione strumenti di misura - Gestione verifiche ispettive - Gestione documentazione del

Dettagli

Il calendario di Windows Vista

Il calendario di Windows Vista Il calendario di Windows Vista Una delle novità introdotte in Windows Vista è il Calendario di Windows, un programma utilissimo per la gestione degli appuntamenti, delle ricorrenze e delle attività lavorative

Dettagli

EXPLOit Content Management Data Base per documenti SGML/XML

EXPLOit Content Management Data Base per documenti SGML/XML EXPLOit Content Management Data Base per documenti SGML/XML Introduzione L applicazione EXPLOit gestisce i contenuti dei documenti strutturati in SGML o XML, utilizzando il prodotto Adobe FrameMaker per

Dettagli

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione Lezione 4 La Struttura dei Sistemi Operativi Introduzione Funzionamento di un SO La Struttura di un SO Sistemi Operativi con Struttura Monolitica Progettazione a Livelli di un SO 4.2 1 Introduzione (cont.)

Dettagli

Appunti di Sistemi Distribuiti

Appunti di Sistemi Distribuiti Appunti di Sistemi Distribuiti Matteo Gianello 27 settembre 2013 1 Indice 1 Introduzione 3 1.1 Definizione di sistema distribuito........................... 3 1.2 Obiettivi.........................................

Dettagli

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi 1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi Il processo E' un programma in esecuzione Tipi di processo Stati di un processo 1 indipendenti

Dettagli

Gartner Group definisce il Cloud

Gartner Group definisce il Cloud Cloud Computing Gartner Group definisce il Cloud o Cloud Computing is a style of computing in which elastic and scalable information technology - enabled capabilities are delivered as a Service. Gartner

Dettagli