Modelli di programmazione parallela
|
|
|
- Donato Angelini
- 9 anni fa
- Просмотров:
Транскрипт
1 Modelli di programmazione parallela Oggi sono comunemente utilizzati diversi modelli di programmazione parallela: Shared Memory Multi Thread Message Passing Data Parallel Tali modelli non sono specifici per una particolare tipologia di macchina parallela o di architettura della memoria: almeno in teoria, tutti possono essere implementati su qualunque modello di computer parallelo (GlobalArray su cluster). In pratica architettura della macchina e linguaggi non devono essere considerati come due modelli indipendenti poiche' l'architettura parallela ha una forte influenza, in termini di efficienza, sui costrutti utilizzati per sfruttare il parallelismo.
2 Shared Memory Oltre alla propria memoria privata, i processi condividono uno spazio di memoria, da cui leggono e scrivono asincronamente Attraverso lock e semafori è possibile controllare l accesso alla memoria condivisa tra i processi Vantaggi: Non richiede la programmazione esplicita della comunicazione di dati tra processi Sovente lo sviluppo di programmi paralleli e' incrementale a partire dalla versione seriale del codice Svantaggi: Inadatto a problemi in cui i processi concorrenti siano particolarmente interconnessi E complesso gestire la località dei dati al processo, con conseguenti problemi di performance dell applicazione
3 Thread Un processo singolo puo' creare alcuni thread (unita' d esecuzione), che il sistema operativo schedula in concorrenza (magari su CPU diverse) Ogni thread condivide tutte le risorse associate al processo che lo ha generato (compreso il suo spazio di memoria) ha una sua area di memoria privata comunica con gli altri thread attraverso lo spazio di memoria globale Sono necessarie operazioni di sicronizzazione per evitare che, nello stesso istante, piu' di un thread cerchi di aggiornare una locazione di memoria globale Il modello multi threaded e' normalmente associato ad architetture shared memory Possibili implementazioni: Una libreria di primitive specifiche per la programmazione multi thread Un insieme di direttive di compilazione da inserire nel codice seriale
4 Posix thread e OpenMP Storicamente sono stati condotti 2 tentativi di standardizzazione della programmazione multi thread che hanno condotto a 2 differenti implementazioni: POSIX Threads e OpenMP POSIX Threads Specificato dallo standard IEEE POSIX c (1995) Comunemente indicato come Pthreads E una libreria utilizzabile in codici C Diversi vendor offrono una versione ottimizzata della libreria Pthreads La gestione del parallelismo e' completamente esplicita OpenMP Basato su direttive di compilazione Standard definito congiuntamente da un gruppo di hardware e software vendor L API OpenMP Fortran e' stata rilasciata alla fine del 97, mentre quella per il C/C++ alla fine del 98 Puo' essere molto semplice da usare, perche' consente effettuare una parallelizzazione incrementale a partire dal codice seriale
5 Posix thread Vediamo un paio di esempi con pthread ed openmp. Pthread: la pthread_create() crea i thread e restituisce un identificativo unico per ogni thread creato. Il chiamante provvede i vari thread di una funzione da eseguire. La join e' l'analogo del la wait nell'esempio del process forking. Il mutex (mutual exclusion) e' il meccanismo base necessario alla sincronizzazione tra i vari theads. (E' necessario sempre essere sicure della thread safety delle librerie che si usano)
6 OpenMP OpenMP: OpenMP (Open Multi Processing) e' una tecnica di parallelizzazione directive based. E' un tipo di parallelismo cosi' detto fork join, pensato essenzialmente per sistemi shared memory (ma vedi Cluster OpenMP). Supporta Fortran (77 and 90), C and C++. E' uno standard de facto. Attualmente molti compilatori commerciali suspportano l'openmp. Vediamo un esempio in Fortran (. /opt/intel/fort9/bin/ifortvars.sh ) In C/C++ in generale si usa la direttiva #PRAGMA (#pragma omp, in generale pragma e' la direttiva per passare opzioni al compilatore dal sorgente): #pragma omp parallel for
7 OpenMP Tutte le linee che iniziano con!$omp sono direttive OpenMP. directives to specify parallel computing. Esempio, ''!$OMP PARALLEL'' e ''!$OMP END PARALLEL'' rinchiudono una regione parallela, tutto il codice in quella regione e' eseguito da tutti i thread. Il numero di thread e' di solito specificato da una variabile di enviroment OMP_NUM_THREADS. In una regione parallela i dati possono essere sia privati che pubblici. Un compilatore OpenMP automaticamente traduce il programma facendo uso delle pthread, puo' cosi' essere eseguito in un sistema shared memory. (Cluster OpenMP fa eccezione).
8 Message Passing Un insieme di processi usa la propria memoria locale durante la computazione L insieme dei processi puo' risiedere sulla stessa macchina o su piu' macchine diverse interconnesse tramite un network di comunicazione La comunicazione inter processo avviene attraverso lo scambio esplicito di messaggi Lo scambio dati e' un operazione cooperativa tra processi; per esempio, ad un operazione di send da parte di un processo deve corrispondere un operazione di receive da parte di un altro processo L implementazione del modello di programmazione message passing generalmente richiede una libreria di funzioni da chiamare all interno del proprio codice
9 Data Parallel Un set di task lavora collettivamente sullo stesso set di dati Ogni task lavora su una porzione diversa dalla stessa struttura dati Tipicamente ogni task esegue la stessa operazione sulla propria partizione di dati; ad esempio aggiungi 4 ad ogni elemento dell array A Sulle architetture shared memory i task accedono alla struttura dati attraverso la memoria condivisa Sulle architetture distributed memory la struttura dati e' divisa in chunk e ciascuno di essi risiede nella memoria locale al task Linguaggi con costrutti data parallel: Fortran 95 e HPF (High Performance Fortran)
10 Ibridi Possono essere combinati insieme due o piu' modelli di programmazione parallela. Ad esempio la combinazione, su architetture ibride, di un modello Shared Memory (OpenMP) con un modello Message Passing (MPI): OpenMP all interno del nodo MPI all esterno del nodo
11 MPI Primo esempio di MPI (Esercizio: provate a parallelizzare, usando lo stesso schema dell'esempio la somma dei primi n numeri naturali)
ACSO Programmazione di Sistema e Concorrente
ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività
Introduzione al Multithreading
Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui
Sistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1
GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di
Corso di Laboratorio di Sistemi Operativi
Corso di Laboratorio di Sistemi Operativi Lezione 7 Alessandro Dal Palù email: [email protected] web: www.unipr.it/~dalpalu Threads Un thread è l unità di base per l utilizzo della CPU. Composto
Esercitazione [01] Processi e Thread
Esercitazione [01] Processi e Thread Leonardo Aniello Daniele Cono D Elia Giuseppe Laurenza Federico Lombardi
Sistemi di calcolo distribuiti e paralleli per l utilizzo di codici Monte Carlo
Sistemi di calcolo distribuiti e paralleli per l utilizzo di codici Monte Carlo Corso per l utilizzazione del codice Monte Carlo in campo Medico Giorgio Amati, [email protected] Collaborazione ISS-CASPUR
5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni:
1 Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: codice del programma in esecuzione un area di memoria contenente le strutture dati dichiarate
Corso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 20 Alberto Ceselli [email protected] Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 14 Maggio 2013 Programmazione concorrente:
Sistemi Operativi. Lezione 7-bis Esercizi
Sistemi Operativi Lezione 7-bis Esercizi Esercizio Problema dei lettori e scrittori Un insieme di processi condivide un file dal quale alcuni possono solo leggere i dati, altri solo scriverli Più lettori
Posix Threads: l evoluzione dei processi UNIX
Posix Threads: l evoluzione dei processi UNIX Raffaele Quitadamo, PhD in Computer Science Università di Modena e Reggio Emilia [email protected] Sommario Pthreads vs Unix processes L API per
Lab 1: Java Multithreading
Dept. of Computer Science Lab 1: Java Multithreading Matteo Camilli [email protected] Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Outline Programmazione multithreading
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
Modelli di interazione tra processi
Modelli di interazione tra processi Modelli di interazione Modello a memoria comune (ambiente globale) Modello a scambio di messaggi (ambiente locale, message passing) Modello a memoria comune Il sistema
Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2
Computazione multi-processo Avere più processi allo stesso momento implica/richiede Processi e Threads Pt. 2 Concorrenza ed efficienza Indipendenza e protezione dei dati ma deve prevedere/permettere anche:
I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.
I SISTEMI OPERATIVI Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore. Le funzioni di un S.O. non sono definibili in modo esaustivo e puntuale così come non
Introduzione alla Programmazione. Giselda De Vita
Introduzione alla Programmazione Giselda De Vita - 2015 1 Sulla base dell ambito in cui si colloca il problema da risolvere, è opportuno adottare un linguaggio piuttosto che un altro: ² Calcolo scientifico:
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
= PTHREAD_MUTEX_INITIALIZER
MUTEX Prof.ssa Sara Michelangeli Quando si programma in modalità concorrente bisogna gestire le problematiche di accesso alle eventuali sezioni critiche. Una sezione critica è una sequenza di istruzioni
Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti
GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di
Panoramica Introduttiva su Inter-Process Communication (IPC)
Panoramica Introduttiva su Inter-Process Communication (IPC) Inter-Process Communication: panoramica (1) Dei processi si dicono cooperanti se si influenzano l'un con l'altro. Per potersi influenzare dei
Che cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione
Che cos e l Informatica Scienza dell elaborazione dell informazione Informatica generale non si riduce all utilizzo di strumenti (e.g. linguaggi di programmazione e basi di dati); si occupa del trattamento
Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java
programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class
Programmazione multi threaded in Python. Linguaggi dinamici A.A. 2010/2011 1
Programmazione multi threaded in Python 1 Motivazione all'uso dei thread Pro Scrittura di applicazioni con molteplici eventi asincroni (GUI) Riduzione della latenza di servizio mediante l'uso di un pool
Principles of Concurrent Programming
Principles of Giuseppe Anastasi [email protected] Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi
Sistemi Operativi: Concetti Introduttivi
Sistemi Operativi: Concetti Introduttivi 1.1 Principali funzioni di un Sistema Operativo 1.2 Cenni Storici 1.3 Classificazione dei Sistemi Operativi 1.4 Struttura dei Sistemi Operativi 1.5 Processi e gestione
Pigreco in OpenMP. Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica. Elaborato di Calcolo Parallelo. Anno Accademico 2011/2012
Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Elaborato di Calcolo Parallelo Pigreco in OpenMP Anno Accademico 2011/2012 Professoressa Alessandra D Alessio Studenti Giuffrida Serena M63/000239
Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
Classificazione delle Architetture Parallele
Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Classificazione delle Architetture Parallele Corso di Sistemi Distribuiti Valeria Cardellini Anno accademico 2009/10 Architetture parallele
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 8 Martedì 8-11-2016 1 Algoritmi di scheduling basati sulle priorità Assegnano
