Vai al contenuto principale
Oggetto:
Oggetto:

Sistemi di Calcolo Paralleli e Distribuiti

Oggetto:

Parallel and Distributed Computer Systems

Oggetto:

Anno accademico 2024/2025

Codice attività didattica
MFN0795
Docente
Marco Aldinucci (Titolare)
Corso di studio
[008515] Laurea magistrale in informatica
Anno
1° anno, 2° anno
Periodo
Secondo semestre
Tipologia
Caratterizzante
Crediti/Valenza
6 CFU (Ore aula: 48)
SSD attività didattica
INF/01 - informatica
Erogazione
Tradizionale
Lingua
Italiano
Frequenza
Facoltativa
Tipologia esame
Scritto più orale obbligatorio
Prerequisiti

Agli studenti sono richieste le seguenti conoscenze di base:
  • Architettura degli elaboratori, programmazione imperativa, conoscenza dei linguaggi C/C++ (anche elementare), algoritmi.
  • Uso dii sistemi UNIX mediante shell, editor, compilazione di programmi (C/C++, Java).
  • Conoscenza della lingua inglese (almeno sufficiente per capire testi e manuali in inglese).
    Insegnamenti propedeutici (forniscono le competenze attese in ingresso): Costituiscono prerequisiti i contenuti dei corsi di Algoritmi, Programmazione I e II, Architetture degli elaboratori I
Students must have a basic knowledge of:
  • Computer architecture, computer programming, programming languages (C/C++, Java), algorithms.
  • UNIX shell, C/C++ compiling tool-chain
  • English language (technical reading)
    Preparatory courses (providing the expected entry skills): Prerequisite courses are: Computer Programming I and II, Algorithms, Computer Architecture I.
  • .

    Oggetto:

    Sommario insegnamento

    Oggetto:

    Avvisi

    DSA o Disabilità: Sostegno e Accoglienza in UniTO e supporto in sede di Esame
    Oggetto:

    Obiettivi formativi

    Il corso introduce i principali modelli e strumenti per la programmazione parallela e distribuita, con maggiore enfasi sulla programmazione parallela. Obiettivo primario è fornire metodi e strumenti per dominare la complessità della progettazione di applicazioni parallele basate sui modelli di programmazione a memoria condivisa, a scambio di messaggi e SIMD. Metodologicamente, il corso prima introduce le architetture ed i concetti fondamentali per la programmazione parallela e distribuita (attività, sincronizzazione, comunicazione), che poi vengono applicati ed esemplificati su esempi di interesse per per i curriculum dello studente (es. calcolo scientifico). L'obiettivo di insegnare la programmazione parallela e distribuita fa parte degli Obiettivi formativi specifici del CdS in Informatica (LM18), in particolare concorre alla realizzazione degli obiettivi dell'indirizzo "Reti e sistemi informatici".

    The course introduces the basic programming models for parallel and distributed programming, specifically emphasising parallel programming. The main goal is to provide students with methods and tools to face the complexity of the design of parallel applications on top of basic programming models: shared-memory, message-passing, and SIMD. Methodologically, the course introduces the first parallel computer architectures and foundational aspects of parallel and distributed programming (parallel activities, synchronisation, communication). These concepts are then exemplified by examples of interest for the course of study of the students (e.g. scientific computing). The objective of teaching parallel and distributed programming is part of the "Obiettivi formativi specifici del CdS in Informatica (LM18)" in compliance with the objectives of the "Reti e sistemi" master degree.

     

    Oggetto:

    Risultati dell'apprendimento attesi

    CONOSCENZA E CAPACITÀ DI COMPRENSIONE. Conoscenza dei paradigmi di programmazione parallela. Conoscenza degli strumenti di studio delle prestazioni di programmi paralleli.

    CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE.  Competenze di programmazione parallela con i tradizionali modelli di programmazione a basso livello di astrazione: message passing e shared memory. Competenze di architetture dei sistemi paralleli multi-core e distribuiti (livello elementare). Competenze di programmazione GPGPU (livello elementare). Competenze di performance tuning (livello elementare).

    AUTONOMIA DI GIUDIZIO. Acquisizione dei criteri di base per impostare una progettazione coretta e una solida implementazione dei sistemi paralleli e per saperne valutare le prestazioni.

    ABILITÀ COMUNICATIVE. Acquisizione e sviluppo di elementi del lessico informatico finalizzati al lavoro di progettazione e implementazione dei sistemi paralleli.

    CAPACITÀ DI APPRENDIMENTO. Acquisizione di capacità autonome di apprendimento e di autovalutazione della propria preparazione, teorica e pratica.

    KNOWLEDGE AND UNDERSTANDING. Knowledge on the paradigms for parallel programming. Knowledge of the tools for the study of the performances of parallel programs.

    APPLYING KNOWLEDGE AND UNDERSTANDING. Competences on parallel programming with the traditional programming models at low-level abstraction: message passing and shared memory. Competence on multi-core and distributed parallel systems (basic level) architectures. Competence in GPGPU programming (basic level). Competences on performance tuning (basic level).

    MAKING JUDGMENTS. Acquisition of the basic criteria to set up a correct design and a solid implementation of parallel systems and for being able to evaluate their performances.

    COMMUNICATION SKILLS. Acquisition and development of a Computer Science vocabulary finalised to the design and implementation of parallel systems.

    LEARNING SKILLS. Acquisition of autonomous learning and auto-evaluation skills of their own competences, theoretical and practical.

     

    Oggetto:

    Programma

    1) Introduzione alle architetture parallele e distribuite (8 ore)

    • architeture a memoria condivisa: SMP, multi-core (4 ore)
    • distribuita: MPP, cluster, grid (4 ore)

    2) Paradigmi di programmazione (18 ore)

    • a basso livello di astrazione: scambio di messaggi, memoria condivisa (8 ore)
    • esempi di parallelizzazione di problemi classici (8 ore)
    • ad alto livello di astrazione (cenni): componenti, servizi, workflow, skeleton (2 ore)

    3) Esempi di uso ed esercitazioni (22 ore)

    • Programmazione con thread_POSIX e MPI, esercizi su casi di studio (12 ore)
    • Programmazione SIMT di GPGPU (10 ore)

    1) Introduction to the architecture of parallel and distributed computer systems (8 hours)

    • shared memory: SMP, multi-core (4 hours)
    • multicomputers: multiprocessor, cluster, grid (4 hours)

    2) Programming paradigms (18 hours)

    • low-level of abstraction: message passing, shared memory (8 hours)
    • case studies (8 hours)
    • high-level of abstraction: skeletons, services, components, workflows (2 hours)

    3) Examples and case studies (22 hours)

    • programming exercises with threads and MPI (12 hours)
    • programming GPGPU with SIMT model (10 hours) .
    Oggetto:

    Modalità di insegnamento

    Corso tradizionale con esercitazioni tenute dal docente con utilizzo alternato di lavagna tradizionale e proiezione di slide. Registro delle lezioni sul sito del corso (inclusivo del materiale didattico ed esercizi proposti). Insegnamento offerto anche agli studenti del CdS in Fisica. Le lezioni saranno in presenza e registrate per succesiva fruizione.

    Traditional course with exercises held by the teacher alternating traditional blackboard and slide projection. Lessons registered on the site of the course (including the teaching material and proposed exercises). Teaching is also offered to Physics CdS students. Lessons will be face-to-face and recorded for students who cannot attend some lessons.

    Oggetto:

    Modalità di verifica dell'apprendimento

    L'esame è costituito da un progetto e una prova orale, che verte su tutto il programma svolto. Il progetto consiste nella progettazione, l'implementazione e l'analisi di un software parallelo medianti gli stumenti presentanti nel corso. La scelta del software da realizzare è proposta dallo studente e concordata con il docente. Il progetto può essere realizzato in gruppo o individualmente e deve essere accompagnato da una relazione scritta. La relazione deve riportare le scelte progettuali, le sperimentazione e l'analisi dei risultati ottenuti. L'ammissione alla prova orale è condizionata al conseguimento di un punteggio di almeno 18/30. La prova orale - sempre induviduale - consiste in un colloquio sugli argomenti svolti durante il corso e prevede, in particolare: - l'eventuale discussione del progetto e della relazione - l'eventuale svolgimento di esercizi; - l'esposizione di argomenti e risultati trattati nel corso, incluse alcune dimostrazioni. Entrambe le prove devono essere superate nella stessa sessione d'esame.

    The exam consists of a project and an oral test focusing on the entire program developed. The project consists of the design, implementation and analysis of parallel software using the tools presented in the course. The student proposes the software to be developed and agrees with the teacher. The project can be carried out in groups or individually and must be accompanied by a written report. The report must report the design choices, the experiments and the analysis of the results obtained. Admission to the oral exam is conditional on achieving a score of at least 18/30. The oral exam - always individual - consists of an interview on the topics developed during the course and includes, in particular: - the possible discussion of the project and the report - the possible carrying out of exercises; - the presentation of topics and results covered in the course, including some demonstrations. Both tests must be passed in the same exam session.

    Testi consigliati e bibliografia



    Oggetto:
    Libro
    Titolo:  
    Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers
    Anno pubblicazione:  
    2011
    Editore:  
    Prentice Hall
    Autore:  
    Barry Wilkinson, Michael Allen
    ISBN  
    Obbligatorio:  
    Si


    Oggetto:

    Insegnamenti che mutuano questo insegnamento

    Oggetto:
    Ultimo aggiornamento: 11/09/2023 08:45
    Location: https://magistrale.informatica.unito.it/robots.html
    Non cliccare qui!