UNIVERSITA DEGLI STUDI DI PARMA TECNICHE DI PROGRAMMAZIONE PORTABILI PER LA SIMULAZIONE DI SISTEMI FISICI SULLE ARCHITETTURE GPU E MANY-CORE

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "UNIVERSITA DEGLI STUDI DI PARMA TECNICHE DI PROGRAMMAZIONE PORTABILI PER LA SIMULAZIONE DI SISTEMI FISICI SULLE ARCHITETTURE GPU E MANY-CORE"

Transcript

1 UNIVERSITA DEGLI STUDI DI PARMA DIPARTIMENTO DI FISICA E SCIENZE DELLA TERRA CORSO DI LAUREA TRIENNALE IN FISICA ANNO ACCADEMICO 2013/2014 TECNICHE DI PROGRAMMAZIONE PORTABILI PER LA SIMULAZIONE DI SISTEMI FISICI SULLE ARCHITETTURE GPU E MANY-CORE Relatore: Prof. Roberto Alfieri Candidato: Paolo Leoni Correlatore: Prof. Roberto De Pietri

2

3 Introduzione Nel 1965, un famoso postulato noto come Prima Legge di Moore[1] enunciava che le prestazioni dei processori, ed il numero di transistor ad essi relativo, raddoppiano ogni 18 mesi. Questo postulato, ha previsto correttamente lo sviluppo dei microprocessori fino al Come si può vedere dall immagine, il numero dei transistor con l andare degli anni ha effettivamente seguito le previsioni di Moore, ma lo stesso non si può dire per il clock, il quale nel ha visto un sostanziale arresto di crescita. Tutt ora (nel 2014) siamo ancora mediamente fermi ad un clock singolo pari a circa 3 Ghz, se la legge di Moore fosse ancora applicabile alla frequenza di clock oltre che al numero di transistor, dovremmo avere oggi clock superiori ai 10 Ghz. Il motivo per cui ciò non è avvenuto è principalmente dovuto ad un limite strutturale dei materiali di cui sono composti gli stessi processori. La presa di coscienza da parte dei produttori hardware che l epoca di Moore era cessata, ha determinato la nascita dell era dei multi-core, ovvero dei processori dotati di più core all interno di un singolo socket CPU 1. Dal punto di vista del programmatore, questo passaggio rappresenta un cambiamento significativo nello sviluppo del software. Mentre durante l epoca di Moore si poteva contare su un rapido e progressivo aumento delle prestazioni permesso semplicemente dallo sviluppo hardware, oggi per ottenere prestazioni sempre migliori lo sviluppo software deve essere più attento all implementazione e tenere conto di come l architettura mette a disposizione le risorse disponibili. Si è quindi assistito alla necessità di implementare, al fine di aumentare le prestazioni dei sistemi di calcolo, sistemi intrinsecamente paralleli anche a livello di singolo socket di silicio. 1 Nel Marzo 2005, sulla rivista online Dr. Dobb s Journal, fu pubblicato un celebre articolo sull argomento dal titolo Free lunch is over di Herb Sutter, reperibile all indirizzo web 3

4 In questo processo stanno emergendo due tendenze parallele: nella prima si integrano molti processori tradizionali ( core di calcolo) nel singolo elemento di silicio (ordine 8-16 per i processori consumer) fino al limite di ordine 100 core nei sistemi dedicati al calcolo come i coprecessori PHI della Intel; nella seconda, seguendo la tendenza di sviluppo introdotta dalle schede grafiche, vengono realizzati dei coprocessori matematici (definite GP-GPU, general purpose graphical processing units ) in cui è integrato su un sicolo socket di silicio un ordine di oltre 1000 unità di calcolo a virgola mobile destinate unicamente ad accelerare le prestazioni di calcolo numerico. Nell ambito degli HPC (High Performance Computing) di particolare interesse Scientifico, ci si trova davanti ad architetture spesso piuttosto complesse (e col tempo questa complessità tende ad aumentare), risulta quindi molto importante lo sviluppo di tecniche e strumenti che permettano un calcolo sempre più efficiente e veloce tramite questo particolare tipo di elaboratori. Linguaggi come OpenMP, OpenACC e OpenMPI vengono in aiuto al programmatore proprio per favorire lo sfruttamento delle risorse di device che, pur essendo installati nella stessa macchina, hanno architteture anche molto diverse tra loro, il tutto nel modo più trasparente e più semplice possibile. Lo scopo principale dello sviluppo tecnologico nel campo dell HPC è l aumento delle prestazioni di calcolo, il quale si può ottenere su vari livelli: Figura 1: rappresentazione dei diversi livelli di parallelismo teoricamente possibili per un HPC[2] cluster: tipicamente un HPC mette a disposizione più nodi connessi tra di loro, a questo livello si pone il problema di sfruttare in modo coordinato la potenza di calcolo dei nodi connessi, al fine di ottenere quello che viene chiamato weak scaling, ovvero la capacità di aumentare le dimensioni del problema studiato senza aumentare i tempi di calcolo del singolo nodo. In questo caso sono di notevole aiuto le API 2 di programmazione come OpenMPI. accelerators: gli acceleratori di calcolo sono oggetto di grande interesse attualmente, soprattutto quelli con architettura di tipo General Purpose GPU (GPGPU). 2 il termine API sta per Application Programming Interface, indica un insieme di librerie che permettono di interfacciarsi con il software. In questo caso particolare si intende un API in grado di integrarsi nel codice sorgente grazie a delle particolari funzioni di lbreria o direttive #pragma. 4

5 In generale si tratta di periferiche collegate direttamente ai nodi in grado di velocizzare notevolmente il calcolo rispetto all host. A seconda del tipo di hardware utilizzato, queste periferiche possono lavorare in modalità offload (accesso indiretto all acceleratore) o in modalità nativa (accesso diretto all acceleratore). Data la diversità di queste architetture rispetto all host, in questo caso si evidenzia molto l importanza di avere un API che permette di utilizzare l acceleratore in modo da mantenere un buon rapporto prestazioni / semplicità di utilizzo. node / socket /core / hyperthreads: in questo caso si tratta di suddividere il calcolo tra le unità di elaborazione del singolo nodo, ciò che vogliamo ottenere è, a parità di dimensione del problema, una diminuzione del tempo di calcolo, ovvero, lo strong scaling. Spesso già in questo modo è possibile ottenere un ottimo aumento delle prestazioni rispetto al calcolo seriale, ovvero si ottiene una buona scalabilità (anche su elaboratori tradizionali come le workstations). In questo caso il programmatore può appoggiarsi a strumenti come OpenMP, un tipo particolare di API in grado di gestire dinamicamente la suddivisione di processi con i quali può essere eseguito un particolare calcolo. Spesso i singoli core delle CPU possono inoltre eseguire più di una istruzione in parallelo (hyperthreading), ciò consente un livello di scalabilità in più (anche se in questo caso la scalabilità non è sempre buona). Un ulteriore ottimizzazione può essere data dall analisi della cosiddetta hardware affinity, ovvero una distribuzione dei processi che tenga conto della disposizione fisica delle componenti (livello socket). superscalar / pipeline / vector: questi livelli di ottimizzazione dipendono fortemente dall architettura, essi riguardano la capacità delle singole unità di elaborazione di gestire il calcolo al loro interno. In determinati ambiti, assume una certa importanza lo sfruttamento della cosiddetta vettorizzazione, ovvero la possibilità di fare molti calcoli nell unità di tempo grazie al fatto di poter gestire molti dati con una sola istruzione, questo è ciò che accade nelle unità SIMD delle CPU (Single Instruction Multiple Data). In questo senso l industria hardware ha come obiettivo l ottenimento di registri SIMD sempre più lunghi, in modo che la singola istruzione possa elaborare sempre più dati in un solo ciclo. Tuttavia è possibile sfruttare questa caratteristica solo se il calcolo è vettorizabile, e questo non sempre è possibile. In generale quando l utente si trova davanti ad un elaboratore HPC, si pone il problema di avvicinarsi il più possibile a quella che è la performance di picco. Questa tuttavia non è quasi mai facile da raggiungere, poiché per ottenere tale potenza il software andrebbe scritto in un linguaggio di basso livello (vicino al linguaggio macchina), in modo da ottenere il massimo dell ottimizzazione dalla particolare architettura che si sta utilizzando. Di fatto però, essa risulta un operazione spesso estremamente dispendiosa in termini di tempo e poco fattibile nella pratica. Si evidenzia quindi il problema di ottenere uno speedup che sia il più elevato possibile, mantenendo al tempo stesso un buon livello di semplicità in quello che viene chiamato porting del software. Il tempo speso per il porting sta acquisendo un importanza crescente nello sviluppo del software, per questo motivo è nata l esigenza di disporre di strumenti di programmazione che permettano al programmatore di sfruttare una buona parte delle performance di picco senza un elevato dispendio di tempo in termini di lavoro di scrittura del codice. In questo lavoro di tesi sono state studiate alcune delle nuove tecnologie di accelerazione di calcolo in funzione di un applicabilità orientata al porting di applicazioni scientifiche. Per poter eseguire lo studio è stato sviluppato un software ad hoc che potesse simulare (con le stesse caratteristiche algoritmiche di base, ma al tempo stesso in modo descrittivo rispetto ad un problema semplice) il comportamento di un software scientifico tipico destinato allo studio dell evoluzione nel tempo di un sistema descritto da equazioni differenziali alle derivate parziali discretizzate su una 5

6 griglia rettangolare o cubica. L algoritmo scelto è stato Game of Life di John Conway. Esso implementa una semplice regola di evoluzione e conserva tutte le caratteristiche necessarie al nostro studio, come la possibilità di separare la griglia di calcolo in sottodomini e di avere un controllo fine sull esecuzione. Poichè la densità di calcoli secondo l algoritmo originale è piuttosto bassa, abbiamo aggiunto una funzione di calcolo vettoriale il cui peso è parametrizzato con l obiettivo di testare la capacità di vettorizzazione nei diversi device studiati. In particolare, grazie alla possibilità di lavorare sul cluster Eurora messo a disposizione dal Cineca di Bologna, è stato possibile mettere a confronto la potenza di calcolo di un nodo convenzionale (2 CPU Sandy Bridge da 8 core Gflops), con due acceleratori di calcolo di ultima generazione: l acceleratore Intel Xeon PHI MIC (1,01 Tflops) e la GPGPU Nvidia Tesla K20 (1,1 Tflops), inoltre è stata studiata l integrazione di queste tecnologie in un architettura cluster multinodo. Parallelamente sono state studiate le problematiche di implementazione delle API di programmazione necessarie al calcolo parallelo, in particolare è stata studiata l integrazione di OpenMPI, OpenMP e OpenACC, focalizzandoci sull utilizzo di quest ultima, un API nata con l obiettivo di facilitare e uniformare la programmazione degli acceleratori (in particolare GPGPU). 6

7

8 1 Hardware Dal punto di vista dell hardware HPC, stiamo assistendo ad una transizione da sistemi seriali collegati in parallelo a sistemi, sempre collegati in parallelo, dotati di elevata accelerazione vettoriale, attraverso particolari device chiamati coprocessori o acceleratori di calcolo. Attualmente l industria dell hardware fornisce principalmente due possibilità di implementazione a livello di coprocessore: acceleratori di tipo manycore, in cui si cerca di inserire un elevato numero di core all interno di un architettura dalle caratteristiche simili a quelle tradizionali. In questo caso l aumento di prestazioni è dato da un numero mediamente elevato di unità di calcolo che conservino però anche molte delle caratteristiche computazionali dei processori tradizionali. In questo tipo di tecnologie il numero di core di calcolo in un device può essere dell ordine di 100 unità. acceleratori di tipo GPGPU, dove si cerca di sfruttare l elevato parallelismo hardware delle GPU. In questi device le singole unità di calcolo sono più elementari (non hanno a disposizione lo stessa sistema di componenti logici delle CPU) inoltre funzionano normalmente ad un clock più basso, tuttavia possono essere presenti in un numero notevolmente elevato sullo stesso device. Tipicamente in un acceleratore di tipo GPGPU è presente un numero di core di calcolo che può andare dalle 1000 alle 3000 unità. In questo lavoro di tesi, abbiamo cercato di esplorare entrambe le strade attraverso due esemplari ben rappresentativi delle due tecnologie: Intel Xeon PHI MIC come device manycore e Nvidia Tesla Kepler 20 come device GPGPU, il tutto mantenendo un confronto con la tecnologia convenzionale di riferimento, nel nostro caso il processore Sandy Bridge installato sull host utilizzato per i test. Figura 2: l andamento del numero delle unità di calcolo dei device con gli anni, le GPGPU tendono ad aumentarne sempre di più la quantità. Il device Intel MIC si posiziona in una zona intermedia poiché cerca di raccogliere entrambe le caratteristiche: elevato parallelismo del device ed elevata prestazione di calcolo del singolo core. 8

9 Figura 3: l andamento della potenza in Gflops delle singole unità di calcolo dei device lungo gli anni. Sulle GPGPU la potenza per singolo core aumenta abbastanza lentamente, poiché rispetto a tale tecnologia l industria si sta focalizzando sull aumento del numero di unità di calcolo all interno dello stesso socket. 9

10 1.1 CPU Intel Xeon Sandy Bridge Questo processore possiede molte caratteristiche del tutto simili ai processori in commercio comunemente utilizzati nelle workstation. Come per i modelli equivalenti nelle workstation, anche i Sandy Bridge possono in linea teorica aumentare le prestazioni grazie all hyperthreading, tecnologia che consente al processore di elaborare istruzioni in più thread separati nello stesso core. Questi particolari processori possono gestire fino a 2 thread per ogni core fisico, ciò significa che ogni nodo può teoricamente gestire fino a 32 processi separati. Inoltre una differenza importante rispetto alle CPU più convenzionali, è la lunghezza dei registri di elaborazione delle unità SIMD, che in questo caso arriva fino a 256 bit (questa caratteristica è anche nota come Advanced Vector extensions, nei processori tradizionali invece la lunghezza dei registri SIMD è di 128 bit). Le due CPU Sandy Bridge sull host sono collegate da un bus QPI (Intel Quickpath Internconnect), un bus seriale introdotto da Intel nel 2008 in grado di raddoppiare la banda di comunicazione tra processore e chipset rispetto alla tecnologia precedente, il Quad Pumped. Figura 4: schema di connessione dei due processori Intel Xeon Sandy Bridge sullo stesso nodo. La velocità del bus QPI è fondamentale affinché le due CPU possano lavorare insieme senza perdita di prestazioni. La performance di picco di questo processore per i calcoli in doppia precisione è di 134,4 Gflop/s. 10

11 1.2 L acceleratore Intel Xeon PHI (MIC) L acceleratore Intel Xeon PHI MIC (Many Integrated Core)[3], nasce con l intento di creare un hardware di tipo manycore che potesse però essere programmabile in modo simile alle CPU convenzionali. Ciò è dovuto al fatto che fondamentalmente l architettura del device risulta molto simile a quella dell host. Alcune caratteristiche lo rendono particolarmente interessante per il calcolo: Ogni acceleratore MIC è equipaggiato con 60 core fisici con clock da 1Ghz. Ogni core sul MIC è in grado di gestire fino a 4 thread separati, la capacità teorica di parallelizzazione del device quindi arriva fino a 240 thread. Le unità SIMD (Single Instruction Multiple Data) di ogni core possono elaborare fino a 512 bit di dati con una singola istruzione (capacità doppia rispetto alle SIMD dei processori Sandy Bridge). Questa caratteristica rende i MIC particolarmente adatti per i calcoli che utilizzano la vettorizzazione. La memoria dedicata è di 8 Gbyte. Oltre alle caratteristiche più strettamente inerenti al calcolo, il MIC si rivela interessante anche per la sua notevole versatilità. A differenza degli acceleratori GPU, questo tipo di coprocessore è in grado di comportarsi quasi come se fosse un host tradizionale, questo grazie al fatto che al suo interno fa funzionare un micro-sistema operativo basato su linux che è in grado di comunicare con l esterno come se si trovasse su una rete locale (attraverso uno stack virtuale TCP/IP che comunica tramite il bus PCIe). Questa particolare caratteristica ci ha permesso di poter utilizzare il MIC nella cosiddetta modalità nativa 3, ciò significa che in questa modalità (diversamente da quello che accade con le GPU) sostanzialmente tutto il software viene gestito dal coprocessore, proprio come se fosse un host. Questo approccio in un certo senso semplifica molto il porting di un software su questa architettura (anche se come vedremo non ne elimina del tutto le problematiche), ma di fatto in questo modo l host viene ridotto a semplice tramite tra l acceleratore ed il resto della rete. La performance di picco in doppia precisione per questo device è di 1011 Gflop/s. 3 l acceleratore Intel MIC può essere utilizzato anche in modalità offload, ma questo approccio con il MIC si è dimostrato decisamente più complicato rispetto alla modalità nativa. Motivo per cui in questo lavoro di tesi ci siamo focalizzati principalmente su di essa. 11

12 Figura 5: schema di connessione dell acceleratore Intel Xeon PHI MIC. Lo stack virtuale TCP/IP consente un utilizzo molto trasparente del device, il quale in questa modalità, è raggiungibile tramite tradizionale connessione via ssh. 12

13 1.3 L acceleratore Nvidia Tesla Kepler 20 L acceleratore Nvidia Tesla Kepler 20 è un modello di GPGPU pensato appositamente per incrementare le performance di calcolo. A livello di architettura, essa conserva gran parte delle peculiarità che contraddistinguono le GPU (fatta eccezione per l uscita video, che nella serie Tesla è assente). Vi è una profonda diversità tra questo tipo di hardware e quello dell host o anche solo del MIC. Capirne le differenze è fondamentale per poter affrontare al meglio le problematiche che si incontrano lungo tutto il lavoro di porting. Mentre la CPU rappresenta un entità di calcolo autonoma, la quale, oltre ai core, monta anche un complesso sistema di unità di controllo interno che le consentono un organizzazione molto efficiente e versatile del lavoro computazionale, la GPU d altra parte non potrà mai essere svincolata da una CPU che le impartisca dei comandi. Per questo principale motivo la programmazione su GPGPU necessita di una particolare attenzione. Figura 6: una rappresentazione stilizzata delle differenze di architettura tra CPU e GPU. Nella GPGPU le unità di controllo occupano uno spazio molto ridotto rispetto alla CPU, poiché prevale la necessità di avere un elevatissimo numero di core di calcolo. Le GPU in generale, sono state fin dall inizio appositamente pensate con una grandissima attitudine al calcolo parallelo, ciò è dovuto al loro scopo originario, che è quello di eseguire un enorme mole di calcoli su oggetti grafici 3D in tempo reale. Tipicamente, una GPGPU attualmente in commercio contiene un numero totale di core di elaborazione che può essere dell ordine di 10³. Questi piccoli core (il cui clock è di solito relativamente basso, intorno ai 600 Mhz), sono raggruppati in macro-sistemi di elaborazione, detti Stream Multi Processor (o SMX), i quali contengono, oltre ai core, anche le altre componenti necessarie alla gestione dei dati, come il warp scheduler, il register file, e i diversi tipi di memoria alle quali possono accedere i thread dello stesso SMX. Nel nostro caso particolare, la K20 può distribuire il calcolo su 2496 core, divisi tra 15 SMX. Per i calcoli in doppia precisione, la performance di picco dell acceleratore Nvidia Tesla K20 è di 1170 Gflop/s. 13

14 Figura 7: uno schema dell acceleratore K20. Gli SMX della scheda sono stati pensati per poter lavorare separatamente rispetto agli altri. Figura 8: schema dettagliato di uno dei 15 SMX che compongono la K20. Nello stesso SMX, i core della GPGPU si trovano in una condizione di work sharing poiché condividono lo stesso blocco di memoria. 14

15 Mentre con l acceleratore Intel MIC potevamo scegliere tra due modalità di utilizzo, in questo caso la K20 è utilizzabile esclusivamente in modalità offload. La modalità offload, implica che solo una parte del software venga effettivamente trasferita ed eseguita dall acceleratore, in particolare tutte le funzioni eseguite in offload si chiamano generalmente kernels. I kernels possono essere sia di calcolo che di trasferimento dati, ma in generale sono comunque chiamati dall host ed eseguiti dal device. Figura 9: rappresentazione della modalità offload per le GPU. Il collo di bottiglia nella timeline di esecuzione è rappresentato dall accesso alla memoria principale del sistema, condizionato dalla velocità del bus PCIe. C è un evidente collo di bottiglia nell utilizzo di questo acceleratore, che è rappresentato dal bus PCIe attraverso il quale è collegato all host. Benchè il trasferimento dati tra device e host possa raggiungere gli 8 GB/s, l eccessivo numero di trasferimenti durante il calcolo può influire negativamente sulle prestazioni, questo problema si può in parte risolvere a seconda delle situazioni sfruttando la capacità del device di fare overlap tra i kernels. L overlap permette al device non solo di eseguire contemporaneamente il calcolo di due funzioni diverse, ma anche di calcolare e trasferire dati in modo asincrono, facendo risparmiare una notevole quantità di tempo di esecuzione. Anche in questo caso è necessario porre grande attenzione a come si imposta l asincronìa dei kernels, poiché questa potrebbe altrimenti produrre risultati numerici scorretti. 15

16 1.4 Il prototipo EURORA Per effettuare test su hardware così differente, è stato di particolare aiuto l utilizzo del prototipo HPC Eurora (EURopean many integrated core Architecture), messo a disposizione dal CINECA 4 di Bologna. Eurora nasce con l obiettivo di valutare le nuove architetture per i sistemi tier-0 5 di prossima generazione, tra cui gli acceleratori di calcolo. Eurora è un cluster composto da 65 nodi, di cui uno di login, ognuno dei 64 nodi di computazione è composto da un host (2 CPU Intel Xeon Sandy Bridge da 8 core) e da due acceleratori. 32 nodi utilizzano due acceleratori Intel Xeon PHI (MIC), mentre gli altri 32 sono accoppiati a due acceleratori Nvidia Tesla Kepler nodi utilizzano 2 CPU SandyBridge E con clock pari a 2 Ghz, mentre gli altri 32 utilizzano 2 CPU SandyBridge E5-2687W con clock pari a 3.10 GHz. La Ram a disposizione della maggior parte dei nodi (58) è di 16 Gb, nei nodi restanti (6) è possibile allocare fino a 32 Gb. Tutti i nodi sono interconnessi tra loro da una rete Qlogic Infiniband, in grado di garantire una connessione a banda elevata e bassa latenza. Lo storage dei dati viene effettuato tramite dischi SSD da 160 Gbyte (uno per nodo). Dal punto di vista del supporto software, sulla macchina è stato installato il sistema CentOS 6.4 con il kernel Linux ed il software PBSpro 12.2 per la gestione delle code di esecuzione sul cluster. I compilatori disponibili sul cluster Eurora sono tre: The Portland Group, Inc. C Compiler v con framework OpenMPI v Intel C Compiler v con frameowrk Intel MPI v GNU Compiler Collection v con framwork Open MPI v il CINECA è la maggiore istituzione di supercomputing in Italia, è gestita da un consorzio di diverse Università italiane (69) e istituti di ricerca. 5 tier-0 indica il livello più alto in una classificazione di HPC ad alte prestazioni di calcolo e alta capacità. 16

17

18 2 Le API utilizzate Parallelamente all evoluzione dell hardware, anche l approccio rispetto alla programmazione deve potersi evolvere per mantenere la tecnologia sfruttabile ad un buon livello di rendimento. Per fare il porting su un cluster come Eurora, è necessario integrare nello stesso codice due diversi modelli di calcolo 6 : un modello a memoria distribuita (o sistema distribuito) e un modello a memoria condivisa. Figura 10: rappresentazione di un sistema a memoria distribuita (a) e un sistema a memoria condivisa (b). Il modello a memoria distribuita presuppone un sistema in cui i nodi di calcolo sono collegati da una rete decentralizzata, nella quale lavorano autonomamente ad una porzione del problema da risolvere utilizzando i dati che sono stati trasferiti nella propria memoria locale. L esecuzione viene svolta da processi in grado di comunicare tra loro attraverso lo scambio di messaggi, anche e soprattutto tra nodi diversi nella stessa rete. Questa operazione viene effettuata grazie ad una libreria apposita in grado di gestire questo scambio di messaggi attraverso il protocollo MPI (Message Passing Interface), nel nostro caso in particolare è stata utilizzata la libreria OpenMPI. Il modello a memoria condivisa invece, affronta il problema in un sistema che vede una serie di processi che devono svolgere l elaborazione condividendo la stessa memoria fisica (tipicamente all interno di un singolo nodo di calcolo). Generalmente si ha a disposizione un architettura con più unità di elaborazione, l API di programmazione in questo caso si occupa della suddivisione del poblema in diversi thread di esecuzione sullo stesso nodo (o device), in modo da distribuire il carico di lavoro tra le unità di calcolo fisiche (core). I thread in questo caso possono accedere alla stessa porzione di memoria principale sul device. Nel nostro caso particolare, dovendo interagire con due tipi di architetture particolarmente differenti, è stato necessario integrare per questo scopo due API: OpenMP per il calcolo su acceleratore MIC (modalità nativa) e su host, e OpenACC per il calcolo su GPGPU. 6 il codice senza alcuna modifica è in grado di funzionare, ma utilizzando un solo core ed un solo nodo per l intera esecuzione del programma. Questa modalità, che è quella più tradizionale, viene anche detta modalità seriale e, come vedremo, risulta particolarmente lenta se paragonata alla versione parallela. 18

19 Per poter sfruttare appieno le potenzialità di un cluster come Eurora, è necessario far interagire i due modelli sulla stessa macchina, in modo che il calcolo venga svolto sfruttando il massimo delle risorse a disposizione. 19

20 2.1 OpenMPI OpenMPI rappresenta un implementazione libera del protocollo MPI, gli obiettivi dello standard sono quelli di ottenere un aumento delle performance di calcolo, una buona scalabilità e portabilità[4][5]. Figura 11: struttura base di un programma MPI. Anche nel modello MPI sono presenti un momento iniziale in cui vengono creati e suddivisi i processi di lavoro, ed un momento finale in cui questi si riuniscono nel processo principale. Nel protocollo MPI la comunicazione tra i processi avviene attraverso lo scambio di messaggi. Lo standard definisce come il dato deve essere rappresentato, come specificare il destinatario del messaggio e come implementare la comunicazione. I tipi di dato sono definiti dallo standard MPI, nel quale sono definiti i tipi corrispondenti per i dati più comuni (e.g., MPI_INT, MPI_DOUBLE_PRECISION, MPI_CHAR), mentre per costruire tipi di dato più complessi esistono primitive apposite. Il destinatario di un messaggio viene identificato specificando un comunicatore, il tag e il rank. Il comunicatore identifica un contesto di comunicazione al quale appartiene un gruppo di processi, il comunicatore di default è MPI_COMM_WORLD, che è quello che indica il contesto di comunicazione con tutti i processi. Il tag è un etichetta che permette di caratterizzare ulteriormente il messaggio all interno del comunicatore. Il rank invece è un numero intero che identifica in maniera univoca il processo destinatario. MPI può svolgere la comunicazione tra processi in diversi modi, di default viene utilizzata la modalità bloccante e asincrona. La modalità bloccante è quella in cui il processo attende il completamento della primitiva la quale, se è asincrona, non attende la risposta dal processo ricevente. Le funzioni di libreria più comuni per lo scambio di messaggi sono MPI_Recv(), MPI_Send() e MPI_Sendrecv(). Nel nostro caso specifico ci siamo appoggiati a quest ultima per lo scambio di messaggi tra i nodi di calcolo. La principale differenza rispetto alle altre due, è che la funzione MPI_Sendrecv() combina in una 20

21 Figura 12: rappresentazione grafica dei comunicatori MPI Figura 13: rappresentazione di una comunicazione MPI tra due processi attivi su nodi differenti. sola chiamata l invio di un messaggio ad un destinatario e la ricezione di un altro messaggio da un altro processo. I parametri richiesti dalla funzione sono gli stessi di MPI_Recv() e MPI_Send(), ma rispetto a queste ultime MPI_Sendrecv() offre il vantaggio di lasciare al sottosistema di comunicazione il compito di controllare le dipendenze tra invii e ricezioni evitando così il verificarsi di un possibile deadlock 7. Nella modalità utilizzata da noi per effettuare i test, viene creato un processo MPI per ogni nodo di calcolo e ogni processo comunica tramite la funzione MPI_Sendrecv(). 7 il deadlock è quella particolare condizione in cui due o più processi si bloccano a vicenda a causa del fatto che ognuno di essi aspetta che l altro abbia finito. 21

22 2.2 OpenMP OpenMP è un API[6] utile per agire sul cosiddetto strong scaling delle performance, ovvero la capacità di eseguire lo stesso problema in minor tempo. Tipicamente ci si trova di fronte ad un architettura multi- o many-core a memoria condivisa, con il problema quindi di poter sfruttare in modo semplice le risorse messe a disposizione dall hardware. L approccio seguito da OpenMP (e come vedremo anche da OpenACC) è quello delle pragma, sostanzialmente questo consiste nell inserire all interno del codice delle particolari direttive di preprocessore per fornire delle richieste al compilatore sul tipo di operazioni da svolgere in determinate parti del programma. Queste direttive operano quasi come se fossero dei suggerimenti, il compilatore le valuta e, se sono compatibili con lo standard utilizzato, ne verifica l attuabilità. Se la richiesta è fattibile, durante l operazione di linking il compilatore inserisce nel binario il codice corrispondente alla richiesta. Tipicamente l utilizzo di OpenMP all interno del programma è finalizzato alla suddivisione (fork) del carico di lavoro di una o più funzioni del programma in thread di esecuzione, da inviare alle diverse unità di calcolo del sistema utilizzato. Una volta che la funzione è stata calcolata, i thread vengono riuniti nel processo principale (join) ed il programma prosegue. Figura 14: una rappresentazione della suddivsione in thread OpenMP all interno di un programma. A seconda di come sono inserite le direttive, possono essere parallelizzati uno o tutti i task. Prendiamo come esempio il seguente semplice programma: #include <stdio.h> int main(void) { #pragma omp parallel printf("hello, world.\n"); return 0; } La direttiva #pragma omp parallel indica la richiesta al compilatore di suddividere se possibile in n-processi lo statement che segue (utilizzando le parentesi graffe può essere indicato anche un insieme di statement). Il numero di processi con cui viene suddiviso il task, viene letto dalla variabile d ambiente OMP_NUM_THREADS,ma può essere anche settato all interno del programma tramite la funzione di libreria omp_set_num_threads(n) 8. 8 per l utilizzo delle funzioni di libreria è necessario includere il file <omp.h> nell header del programma. 22

23 Il risultato è che viene inviata la stringa Hello, world. allo standard output un numero di volte pari ai processi con cui è stato eseguito il programma. Uno dei problemi su cui si deve porre attenzione nell applicare queste direttive è la race condition, ovvero quel fenomeno per cui ogni processo cerca di svolgere la funzione nel minor tempo possibile, inviando così in output il risultato senza attendere che l altro abbia terminato. Questo fenomeno di asincronìa tra processi che lavorano sullo stesso task fa parte di quell insieme di problematiche di cui tenere conto quando si fa il porting di un applicazione, altrimenti si corre il rischio di ottenere dei risultati non corretti. Uno degli strumenti che ci permettono di risolvere questo problema è la barrier, la quale può essere sia implicita che esplicita. La barrier è un punto del codice in cui il sistema attende che tutti i processi abbiano terminato le operazioni prima di procedere, in questo modo il programma prosegue solo se tutti i processi hanno completato il task assegnato, garantendo così un risultato coerente. Una barrier è implicita se ad esempio utilizziamo la direttiva #pragma omp parallel (come nell esempio precedente), con quest ultima il compilatore inserisce una barrier alla fine dell elenco di statement definito dalla pragma, in questo modo non si verificano race condition. In alternativa la barrier può essere esplicitata (ad esempio se dobbiamo risincronizzare i processi all interno della stessa parallel), utilizzando la direttiva #pragma omp barrier. Il numero di processi con cui suddividiamo i task deve necessariamente tenere conto dell architettura se non si vogliono degradare le prestazioni. In un sistema con 2 core ad esempio, la suddivisione in 2 processi può essere una scelta ottimale, d altraparte se aumentiamo di molto il numero di processi rispetto al numero dei core fisici, si rischia di degradare le prestazioni a causa dell overload di operazioni che si genera nella CPU durante l esecuzione. Fisicamente l hardware è capace di gestire un numero limitato di operazioni, se si richiede una suddivisione dei task eccessiva, una parte delle operazioni verrà svolta inevitabilmente in modo seriale, perdendosi così ogni vantaggio derivante dall approccio parallelo. Se la CPU in questione supporta l hyperthreading (ad esempio è capace di processare 2 thread per core), può essere conveniente in questo caso suddividere i task in 2 processi per core anziché 1 per poter aumentare le performance. Il potenziale di questa tecnologia non è sempre sfruttabile, ciò dipende molto dal tipo di calcolo che il processore deve svolgere e dal processore stesso. Nei nostri test ad esempio abbiamo potuto constatare che l acceleratore Intel MIC gestisce meglio l hyperthreading sul singolo core di quanto faccia la CPU Intel Sandy Bridge del nodo (host), motivo per cui per i test eseguiti sul nodo abbiamo deciso di non saturare completamente i thread del core, al contrario dei test effettuati su Intel MIC. 23

24 2.3 OpenACC Da quando è nata l idea di svolgere calcoli su sistemi GPGPU, si è contemporaneamente creata la necessità di creare un linguaggio che permettesse al programmatore di interfacciarsi con le risorse di questo tipo di hardware, molto diverso dai sistemi convenzionali. Per le GPGPU prodotte da Nvidia, venne creato nel 2006 un estensione ai linguaggi di programmazione più diffusi (come C, C++ o Fortran) chiamata CUDA (Compute Unified Device Architecture). 9 Per le GPGPU di altri produttori, è invece possibile utilizzare un linguaggio (dall approccio molto simile a CUDA) chiamato OpenCL. Sviluppato inizialmente da Apple, OpenCL divenne poi proprietà nel 2008 di un consorzio senza scopo di lucro, il Khronos Group. Contrariamente a CUDA, OpenCL può essere utilizzato su un più ampio spettro di architetture, dalle CPU convenzionali fino alle GPGPU. Sia CUDA che OpenCL, sono stati concepiti con l obiettivo di accelerare il calcolo, basandosi sul concetto di offload del kernel di esecuzione. Queste estensioni permettono di ottenere un notevole controllo delle risorse di calcolo, e quindi di raggiungere un buon livello di ottimizzazione, ma ci sono fondamentalmente due controindicazioni importanti al loro utilizzo: Il codice scritto con queste estensioni è utilizzabile solo con architetture compatibili, questo è particolarmente vero per CUDA, sfruttabile solo con le GPU Nvidia. Questo aspetto limita di molto la portabilità del codice. Essendo un linguaggio di livello intermedio, l ottimizzazione si paga con un elevata difficoltà di integrazione e manutenzione del codice. In sostanza il software diventa piuttosto complicato da sviluppare e da mantenere. Con l obiettivo di creare un interfaccia di programmazione che garantisse una migliore portabilità del codice mantenendo un livello di complessità più gestibile, nel 2012 venne creata una corporation no profit con il contributo di diverse compagnie. Questa interfaccia, chiamata OpenACC (Open Accelerator), ha mantenuto volutamente molti tratti simili ad OpenMP, questo anche per facilitare i programmatori che avessero già una buona esperienza con questo genere di linguaggio. Anche OpenACC infatti, si basa sull utilizzo delle direttive pragma, affiancate però in questo caso dalla parola chiave acc. La funzione svolta da OpenACC è assimilabile a quella di un traduttore di funzioni. Quando un codice scritto con OpenACC viene compilato, viene specificato al compilatore anche il tipo di architettura su cui deve essere avviato il programma in offload, in questo modo quando il compilatore rileva delle direttive OpenACC cerca di tradurre le porzioni di codice che vogliamo eseguire sull acceleratore nei kernel associati al linguaggio di più basso livello (come CUDA o OpenCL). Se ad esempio vogliamo compilare OpenACC per un architettura Nvidia, il compilatore cercherà automaticamente di tradurre ciò che noi abbiamo indicato come kernels OpenACC, in kernels CUDA. Dopo questa operazione il codice CUDA viene effettivamente compilato tramite il driver Nvidia in codice macchina compatibile con la GPU Nvidia. 9 con Cuda viene di solito indicata anche l architettura delle GPU Nvidia di nuova generazione, un numero di versione permette inoltre di associare l architettura al modello corrispondente (e.g. Kepler 20 supporta l architettura Cuda 3.5) 24

25 Il passaggio di traduzione tra OpenACC e CUDA/OpenCL viene svolto grazie ad un sistema di riconoscimento che è in grado di rilevare i loop adatti alla parallelizzazione e successivamente di trovare la configurazione ottimale dei parametri hardware per fare sì che l accelerazione avvenga in modo efficiente. Figura 15: diagramma del processo di compilazione di un codice scritto con OpenACC. Di fatto, OpenACC rappresenta un linguaggio di traduzione, che permette di generare in modo più semplice funzioni CUDA o OpenCL. Le estensioni CUDA e OpenCL utilizzano per loro conto una rappresentazione dei sottoprocessi abbastanza diversa dai processori convenzionali. Questa rappresentazione è stata pensata con l obiettivo di suddividere il problema di calcolo compatibilmente con l architettura del device. In OpenACC, le entità virtuali utilizzate per indicare i processi di calcolo sul device sono indicate come gang, workers e vector. Queste rappresentazioni hanno un loro corrispettivo nell estensione associata (che sia OpenCL o CU- DA), il programmatore quindi dovrà tenerne conto nel caso dovesse agire manualmente su questi parametri. Tipicamente le gang, corrispondono ai block del codice CUDA e ai work-group nel codice Open- CL, mentre i vector corrispondono ai thread nel codice CUDA e ai work-item nel codice OpenCL. I workers, vengono invece rappresentati come un insieme di thread su CUDA (anche chiamato warp) o come un insieme di work-item su OpenCL. 25

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

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

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

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

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

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

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

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

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

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

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

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

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

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

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

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

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

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput Valutazione delle Prestazioni Architetture dei Calcolatori (Lettere A-I) Valutazione delle Prestazioni Prof. Francesco Lo Presti Misura/valutazione di un insieme di parametri quantitativi per caratterizzare

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

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche Input/Output n Grande varietà di periferiche gestiscono quantità di dati differenti a velocità diverse in formati diversi n Tutti più lenti della CPU e della RAM n Necessità di avere moduli di I/O Moduli

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

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

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella. Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Prestazioni Si valutano in maniera diversa a seconda dell

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 La CPU e l esecuzione dei programmi 1 Nelle lezioni precedenti abbiamo detto che Un computer è costituito da 3 principali componenti:

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

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

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

INFORMATICA 1 L. Mezzalira

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

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

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer. I Sistemi Operativi Il Software di Base Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer. Il sistema operativo è il gestore di tutte le risorse

Dettagli

Linux lo installo a 32 o 64 bit? (teoria e pratica)

Linux lo installo a 32 o 64 bit? (teoria e pratica) Linux lo installo a 32 o 64 bit? (teoria e pratica) Roberto Metere 26 ottobre 2013 Accenni teorici E ad un certo punto... più bit Compatibilità e innovazione Sfida teorica Test pratici Sistema di riferimento

Dettagli

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia L informatica È la disciplina scientifica che studia INTRODUZIONE I calcolatori, nati in risposta all esigenza di eseguire meccanicamente operazioni ripetitive Gli algoritmi, nati in risposta all esigenza

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

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

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

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa Raccolta prove scritte Realizzare una classe thread Processo che deve effettuare un numero fissato di letture da una memoria

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

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

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

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

La memoria centrale (RAM)

La memoria centrale (RAM) La memoria centrale (RAM) Mantiene al proprio interno i dati e le istruzioni dei programmi in esecuzione Memoria ad accesso casuale Tecnologia elettronica: Veloce ma volatile e costosa Due eccezioni R.O.M.

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

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

CPU. Maurizio Palesi

CPU. Maurizio Palesi CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore

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

Linux nel calcolo distribuito

Linux nel calcolo distribuito openmosix Linux nel calcolo distribuito Dino Del Favero, Micky Del Favero dino@delfavero.it, micky@delfavero.it BLUG - Belluno Linux User Group Linux Day 2004 - Belluno 27 novembre openmosix p. 1 Cos è

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

Mac Application Manager 1.3 (SOLO PER TIGER)

Mac Application Manager 1.3 (SOLO PER TIGER) Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

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

Determinare la grandezza della sottorete

Determinare la grandezza della sottorete Determinare la grandezza della sottorete Ogni rete IP possiede due indirizzi non assegnabili direttamente agli host l indirizzo della rete a cui appartiene e l'indirizzo di broadcast. Quando si creano

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

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

Le fattispecie di riuso

Le fattispecie di riuso Le fattispecie di riuso Indice 1. PREMESSA...3 2. RIUSO IN CESSIONE SEMPLICE...4 3. RIUSO CON GESTIONE A CARICO DEL CEDENTE...5 4. RIUSO IN FACILITY MANAGEMENT...6 5. RIUSO IN ASP...7 1. Premessa Poiché

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

IL RISPARMIO ENERGETICO E GLI AZIONAMENTI A VELOCITA VARIABILE L utilizzo dell inverter negli impianti frigoriferi.

IL RISPARMIO ENERGETICO E GLI AZIONAMENTI A VELOCITA VARIABILE L utilizzo dell inverter negli impianti frigoriferi. IL RISPARMIO ENERGETICO E GLI AZIONAMENTI A VELOCITA VARIABILE L utilizzo dell inverter negli impianti frigoriferi. Negli ultimi anni, il concetto di risparmio energetico sta diventando di fondamentale

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

ARCHITETTURA DI RETE FOLEGNANI ANDREA

ARCHITETTURA DI RETE FOLEGNANI ANDREA ARCHITETTURA DI RETE FOLEGNANI ANDREA INTRODUZIONE È denominata Architettura di rete un insieme di livelli e protocolli. Le reti sono organizzate gerarchicamente in livelli, ciascuno dei quali interagisce

Dettagli

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento: martedì, 12.00-13.00. Dip. Di Matematica Modalità esame: scritto + tesina facoltativa 1

Dettagli

Altri metodi di indicizzazione

Altri metodi di indicizzazione Organizzazione a indici su più livelli Altri metodi di indicizzazione Al crescere della dimensione del file l organizzazione sequenziale a indice diventa inefficiente: in lettura a causa del crescere del

Dettagli

e-dva - eni-depth Velocity Analysis

e-dva - eni-depth Velocity Analysis Lo scopo dell Analisi di Velocità di Migrazione (MVA) è quello di ottenere un modello della velocità nel sottosuolo che abbia dei tempi di riflessione compatibili con quelli osservati nei dati. Ciò significa

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

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

La memoria - generalità

La memoria - generalità Calcolatori Elettronici La memoria gerarchica Introduzione La memoria - generalità n Funzioni: Supporto alla CPU: deve fornire dati ed istruzioni il più rapidamente possibile Archiviazione: deve consentire

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

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

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

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

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio

Dettagli

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione I semestre 04/05 Comunicazione tra Computer Protocolli Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1

Dettagli

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0 Prodotto Inaz Download Manager Release 1.3.0 Tipo release COMPLETA RIEPILOGO ARGOMENTI 1. Introduzione... 2 2. Architettura... 3 3. Configurazione... 4 3.1 Parametri di connessione a Internet... 4 3.2

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 - parte II La memoria 1 La memoriaparametri di caratterizzazione Un dato dispositivo di memoria è caratterizzato da : velocità di accesso,

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

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

Come masterizzare dischi con Nero 11

Come masterizzare dischi con Nero 11 Come masterizzare dischi con Nero 11 Non c è dubbio che Nero è diventato un sinonimo di masterizzatore di dischi, data la lunga esperienza sul mercato. Molte persone pensano in questo programma nel momento

Dettagli

Tirocinio per la Laurea Triennale

Tirocinio per la Laurea Triennale Tirocinio per la Laurea Triennale Studente: Filippo Dattola Studio di un prototipo di infrastruttura virtuale di analisi parallela interattiva L'obiettivo del tirocinio è stato quello di studiare un prototipo

Dettagli

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX Parte 2 Struttura interna del sistema LINUX 76 4. ASPETTI GENERALI DEL SISTEMA OPERATIVO LINUX La funzione generale svolta da un Sistema Operativo può essere definita come la gestione dell Hardware orientata

Dettagli

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione Il sistema di I/O Hardware di I/O Interfacce di I/O Software di I/O Introduzione 1 Sotto-sistema di I/O Insieme di metodi per controllare i dispositivi di I/O Obiettivo: Fornire ai processi utente un interfaccia

Dettagli

Gestione Risorse Umane Web

Gestione Risorse Umane Web La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...

Dettagli

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi Sistemi Operativi Lez. 13: primitive per la concorrenza monitor e messaggi Osservazioni I semafori sono strumenti particolarmente potenti poiché consentono di risolvere ogni problema di sincronizzazione

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo

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

Calcolo del Valore Attuale Netto (VAN)

Calcolo del Valore Attuale Netto (VAN) Calcolo del Valore Attuale Netto (VAN) Il calcolo del valore attuale netto (VAN) serve per determinare la redditività di un investimento. Si tratta di utilizzare un procedimento che può consentirci di

Dettagli

Reti sequenziali sincrone

Reti sequenziali sincrone Reti sequenziali sincrone Un approccio strutturato (7.1-7.3, 7.5-7.6) Modelli di reti sincrone Analisi di reti sincrone Descrizioni e sintesi di reti sequenziali sincrone Sintesi con flip-flop D, DE, T

Dettagli

Architettura del calcolatore

Architettura del calcolatore Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale

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

IL CICLO DI VITA DEL PROGETTO. Elementi essenziali di progetto. Fasi e tappe Gli Approcci

IL CICLO DI VITA DEL PROGETTO. Elementi essenziali di progetto. Fasi e tappe Gli Approcci UNIVERSITA MILANO BICOCCA Corso di laurea di primo livello in servizio sociale anno accademico 2009-2010 Progettare il sociale Prof. Dario A. Colombo IL CICLO DI VITA DEL PROGETTO Elementi essenziali di

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Il modello veneto di Bilancio Sociale Avis

Il modello veneto di Bilancio Sociale Avis Il modello veneto di Bilancio Sociale Avis Le organizzazioni di volontariato ritengono essenziale la legalità e la trasparenza in tutta la loro attività e particolarmente nella raccolta e nell uso corretto

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

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

INFORMATICA. Corso di Laurea in Scienze dell'educazione

INFORMATICA. Corso di Laurea in Scienze dell'educazione INFORMATICA Corso di Laurea in Scienze dell'educazione Introduzione all Informatica Docente: Mario Alviano Studio: Dipartimento di Matematica Cubo 30B 2 Piano Ricevimento: giovedì 18:30 19:30 (avvisare

Dettagli