Oggetto:
Oggetto:

Sistemi di Calcolo Paralleli e Distribuiti

Oggetto:

Parallel and Distributed Computer Systems

Oggetto:

Anno accademico 2025/2026

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
Tipologia unità didattica
corso
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

    Regole di comportamento durante gli esami Informazioni per studenti con DSA o Disabilità: servizi di Ateneo e supporto per sostenere gli esami
    Oggetto:

    Obiettivi formativi

    Il corso introduce i modelli di programmazione di base per la programmazione parallela, con particolare attenzione alla programmazione ad alte prestazioni. L'obiettivo principale è fornire agli studenti metodi e strumenti per affrontare la complessità della progettazione di applicazioni parallele, basandosi sui modelli di programmazione fondamentali (memoria condivisa, passaggio di messaggi e SIMD) e sui paradigmi di programmazione di alto livello che consentono di ridurre la complessità di progettazione e di ottimizzazione delle prestazioni del codice esplicitamente parallelo.
    Sebbene il fuoco principale sia la programmazione, il corso introduce tutti gli apsetti archietturali e microarchitetturali delle macchine parallele più comuni necessari per comprendere come ottimizzare le prestazioni. Questi concetti vengono poi esemplificati con esempi di interesse per il percorso di studi degli studenti (ad esempio, intelligenza artificiale e 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 basic programming models for parallel programming, with a focus on high-performance programming. The main goal is to provide students with methods and tools to address the complexity of designing parallel applications, building on fundamental programming models (shared memory, message passing, and SIMD) and high-level programming paradigms that reduce the complexity of designing and optimizing the performance of explicitly parallel code.
    Although the main focus is programming, the course introduces all the architectural and microarchitectural aspects of the most common parallel machines needed to understand how to optimize performance. These concepts are then exemplified with examples of interest to the student's studies (e.g., artificial intelligence and scientific computing).
    The objective of teaching parallel and distributed programming is part of the specific educational objectives of the Degree Course in Computer Science (LM18), in particular, it contributes to the achievement of the objectives of the "Computer Networks and Systems" major.




     

    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 al calcolo parallelo e distribuito (16 ore)
      • Motivazioni, programmazione orientata alle prestazioni
      • Metriche di prestazione
      • Modelli di calcolo
    1. Introduzione alle architetture parallele (8 ore)
      • Memoria condivisa: multi-core, cache, modelli di consistenza della memoria, programmazione lock-free
      • Multicalcolatori: multiprocessori, cluster, reti di interconnessione
      • Acceleratori: SIMD, GPU
      • HPC e cloud: architetture e gestori di carico di lavoro
    1. Paradigmi di programmazione (16 ore)
      • Modelli di programmazione parallela: message passing, memoria condivisa, vector & intrinsics
      • Paradigmi di programmazione parallela: parallelismo sui dati, sul controllo e stream parallel
      • Programmazione orientata a prestazioni e portabilità: grana computazionale
    1. Esempi e casi di studio (8 ore)
      • Esercizi di programmazione con thread e MPI
      • Programmazione GPGPU con modello SIMT

     

     

    1. Introduction to parallel and distributed computing (16 hours)
      • Motivation, programming for performance
      • Performance Metrics
      • Models of computations
    1. Introduction to the parallel architectures (8 hours)
      • Shared memory: multi-core, caches, memory consistency models, lock-free programming 
      • Multicomputer: multiprocessor, cluster, interconnection networks
      • Accelerators: SIMD, GPUs
      • HPC & cloud: architectures and workload managers
    1. Programming paradigms (16 hours)
      • Parallel programming models: message passing, shared memory, 
      • Parallel programming paradigms: data, control and stream parallel 
      • Programming for performance and portability: computational grain
    1. Examples and case studies (8 hours)
      • Programming exercises with threads and MPI 
      • Programming GPGPU with SIMT model
    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. 

    Traditional course with exercises held by the teacher alternating traditional blackboard and slide projection. Lessons are registered on the course site (including the teaching material and proposed exercises). Teaching is also offered to Physics CdS students. 

    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 per il progetto. La prova orale - sempre individuale - 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. Il voto finale sarà la media dei voti ottenuti nei due test. 

    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 for the project. 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. The final grade is the average of the grades achieved in the two tests.

    Testi consigliati e bibliografia



    Oggetto:
    Libro
    Titolo:  
    Parallel Programming Concepts and Practice
    Anno pubblicazione:  
    2017
    Editore:  
    Morgan Kauffman
    Autore:  
    Bertil Schmidt, Jorge González-Domínguez, Christian Hundt, Moritz Schlarb
    ISBN  
    Obbligatorio:  
    Si


    Oggetto:

    Note

    La partecipazione alle lezioni in presenza è fortemente consigliata.

    Attendance at in-person classes is strongly recommended.

    Oggetto:

    Insegnamenti che mutuano questo insegnamento

    Oggetto:
    Ultimo aggiornamento: 01/06/2025 18:18
    Location: https://magistrale.informatica.unito.it/robots.html
    Non cliccare qui!