mail unicampaniaunicampania webcerca

    Beniamino DI MARTINO

    Insegnamento di HIGH PERFORMANCE AND CLOUD COMPUTING

    Corso di laurea magistrale in INGEGNERIA INFORMATICA

    SSD: ING-INF/05

    CFU: 6,00

    ORE PER UNITÀ DIDATTICA: 48,00

    Periodo di Erogazione: Secondo Semestre

    Italiano

    Lingua di insegnamento

    ITALIANO

    Contenuti

    Architetture HPC
    Design HPC
    Linguaggio CUDA
    Performance
    Compilatori Parallelizzanti
    Reti HPC
    Cloud
    Cloud-Edge

    Testi di riferimento

    Grama, Gupta, Karipis, Kumar - Introduction to Parallel Computing - Addison Wesley;
    Raykumar Buyya - Mastering Cloud Computing - Morgan Kaufman;
    Dispense disponibili sulla piattaforma elearning Moodle.

    Obiettivi formativi

    Acquisire solide conoscenze e competenze sulle tecnologie, le metodologie ed i Sistemi di High Performance Computing e Cloud Computing.

    Prerequisiti

    Operating Systems, Distributed Computing, Advanced Software Engineering, Computer Architectures.
    MPI and OpenMP Programming languages.

    Metodologie didattiche

    Lezioni, esercitazioni pratiche in classe, seminari.

    Metodi di valutazione

    Prova Scritta ed esame orale

    Altre informazioni

    No

    Programma del corso

    Introduzione al Corso. Il programma Accelerated SuperComputing Initiative del Dipartimento della difesa degli Stati Uniti. Principali domini applicativi di interesse per l’ High Performance Computing.
    Lista dei Top 500 Supercomputers del mondo. Architettura, componenti HW e principali parametri prestazionali dei più rilevanti Supercalcolatori nella lista dei top 500. Modelli di Architetture parallele. Tassonomia di Flynn. Architetture Shared Memory. Accesso alla memoria: UMA, NUMA, CC-NUMA, COMA. Architetture Message Passing. Architetture Data Parallel. Distributed-Shared Memory. Convergenza dei modelli.
    Introduzione alle GPU, GPGPU, Modello SIMT (Single Instruction Multiple Threads), Latency Processor e Throughput Processor, Architettura di una GPU, Gerarchie di Memorie di una GPU Cuda-based, Streams and Concurrency in CUDA.
    Introduzione a CUDA, Compilatore NVCC, Modello di programmazione CUDA, Hello World con CUDA, Esempio Somma di Interi, Ambiente di Sviluppo Google Colab con GPU CUDA.
    Thread, Blocchi e Griglie, Indicizzazione di Blocchi e Thread. Esempio Somma di Vettori con N Blocchi con 1 Thread, 1 Blocco con N Thread, ed M Blocchi di N Thread, Misure di Performance in CUDA, Utilizzo della Shared Memory, Esempio Stencil Computation 1-d, Sincronizzazione di Thread.
    Parallel Reduction in CUDA, CUDA Device Management, Data Parallelism in CUDA con calcoli matriciali: prodotto Vettore - Matrice.
    Data Parallelism in CUDA con calcoli matriciali: prodotto Matrice - Matrice, Accesso Coalescente alla Global Memory (CUDA Memory Access Pattern).
    Costo delle Comunicazioni: Modelli di Costo e meccanismi di Routing, Stima dei Costi di Comunicazione in un sistema multi-computer, strategie di switching: Store and Forward e Cut-Through Routing. Accenni di Mapping tra topologie. Implementazione ed ottimizzazione di primitive di comunicazione collettive (broadcast, reduction, broadcast all to all, scatter, gather, allgather, all to all) su topologie di rete ad anello, mesh, tree ed hypercubes con relativi calcoli dei costi di comunicazione.
    Modelli di Interazione delle Piattaforme Parallele, Architettura Fisica delle Piattaforme Parallele. Topologie di reti. Buses, CrossBars, MultiStage Networks, Arrays / Rings, Meshes, kD Meshes, HyperCubes, Tree-based Networks: Fat Trees, Banes Trees, Butterflies. Parametri di caratterizzazione delle Reti: Diametro, Bandwith (Aggregate, Bisection), Connectivity,
    Principi di Design di Applicazioni Parallele. Tecniche di Decomposizione di Algoritmi in Tasks, Assegnazione a Processi, Orchestrazione di Tasks, Mapping di Tasks su Processi.
    Design di Applicazioni Parallele. Task Dependency e Interactions Graphs. Critical Path Length. Recursive, Data Input, Output, Intermediate partition), Exploratory, Speculative Decomposition techniques. Owner Computes Rule. Tecniche Ibride. Tasks generation, Task Size (workload), dimensione dei dati associati al task workload. Interazioni tra Tasks, Tecniche di Mapping Tasks-Processi: ottimizzazione di communication overhead ed idle time, Mapping Statico e Dinamico, mapping basato su Data o Interaction Task Graphs partitioning, Hierarchical Mapping. Mapping Dinamico: centralizzato e distribuito. Tecniche per la minimizzazione dell' Interaction overhead.
    Modelli Algoritmici Paralleli: Data Parallel, Task Parallel. Parallel Patterns; esempi: Master-Slave, Processor Farm, Bag Of Tasks, Producer(s)-Consumers, Pipeline, Map-Reduce. Modelli Ibridi.
    Modellazione analitica e Performances dei Sistemi Paralleli. Sorgenti di Overhead; Metriche di Performance: Serial RunTime, Parallel RunTime, Overhead, SpeedUp (superlinear e sublinear), Efficiency, Costo (EfficiencyTime product), Cost Optimality. Effetti della Granularità sulle performances. Scalabilità dei Sistemi paralleli. Legge di Amdahl. Total Overhead function. Funzione di Isoefficienza (cenni). Analisi asintotica di Programmi Paralleli (cenni), Scaled Speedup (cenni), Serial fraction (cenni). Esempio: iterative solver. Scalabilità dei Sistemi paralleli. Legge di Amdahl. Total Overhead function. Funzione di Isoefficienza (cenni). Analisi asintotica di Programmi Paralleli (cenni), Scaled Speedup (cenni), Serial fraction (cenni). Esempio: iterative solver.
    Compilatori Parallelizzanti. Analisi delle Dipendenze per gli elementi di Array; Spazio delle dipendenze; vettori delle dipendenze; dipendenze di array. Trasformazioni automatiche di Codice per l’ ottimizzazione su architetture HPC; cenni su ottimizzazioni di istruzioni (reductions, induction variable substitution); trasformazioni di loops: skewing, interchange, strip mining, tiling, trasformazioni unimodulari. Esempio per un codice di Successive Over Relaxation. Architettura e fasi di trasformazione di codice per la parallelizzazione automatica.
    Principi di funzionamento di un compilatore parallelizzante. Tecniche di parallelizzazione automatica per Shared Memory Architectures, per Distributed Memory Architectures, e per architetture ibride / acceleratori (cenni). limiti dei Compilatori attuali. Tecniche Avanzate: Iterative Compilation, Machine Learning, Tecniche Speculative, Adattamento, Compilazione ed ottimizzazione a run-time. Compilatore per piattaforme BigData e Cloud del progetto Toreador: illustrazione e demo.
    Introduzione al Cloud Computing. evoluzione del concetto: Utility Computing, Grid Computing. Cloud Marketplaces. Caratteristiche: Pay-per-use, dynamic provisioning, scalability, multi-tenancy. Modelli di costo (CapEx, OpEx). Modelli di Deployment (Public, Private, Hybrid, Federated). Layered Reference Model (IaaS, PaaS, SaaS). Cloud Computing Reference Model and Architecture. IaaS reference model. Infrastructure Management Components. PaaS reference model. PaaS core middleware. SaaS reference model.
    Cloud Portability and Interoperability. Definizioni: Data, Application, System Portability. Service, Application, Platform Interoperability. Cloud Reference Architectures: NIST ed IBM. Ruoli: Cloud Consumer, Provider, Auditor, Broker, Carrier. Service Orchestration.
    Reference Architectures e Frameworks Architetturali.
    Cloud Patterns.
    Infrastructure as Code.
    Tosca: Modello e strumenti.
    Containers. introduzione ai container, Docker: docker engine, istruzioni docker engine, images, Docker Swarm.
    Orchestratori: Kubernetes.
    Ansible e Juju.
    Cloud-Edge Continuum: Introduzione, Reference architecture e Patterns.

    English

    Teaching language

    Italian

    Contents

    HPC Architectures and Design;
    CUDA Programming Language;
    Performance of HPC systems
    Parallelizing Compilers
    HPC Networks
    Cloud and Cloud-Edge Computing

    Textbook and course materials

    Grama, Gupta, Karipis, Kumar - Introduction to Parallel Computing - Addison Wesley;
    Raykumar Buyya - Mastering Cloud Computing - Morgan Kaufman;
    Notes available on the elearning Moodle Platform.

    Course objectives

    Gain knowledge and competence on methodologies, technologies and systems of High Performance Computing and Cloud Computing

    Prerequisites

    Operating Systems, Distributed Computing, Advanced Software Engineering, Computer Architectures.
    MPI and OpenMP Programming languages.

    Teaching methods

    Lections, Classroom exercitations, Seminars.

    Evaluation methods

    Written and oral exam.

    Other information

    No

    Course Syllabus

    The Program Accelerated SuperComputing Initiative. Main Application domains for High Performance Computing.
    List of Top 500 Supercomputers. Parallel Architectural Models. Shared Memory. UMA, NUMA, CC-NUMA, COMA. Message Passing Architectures. Data Parallel. Distributed-Shared Memory. Convergence.
    Introduction to GPU, GPGPU, Model SIMT (Single Instruction Multiple Threads), Latency Processor e Throughput Processor, Architecture of a GPU, Memory Hierarchy of a GPU Cuda-based, Streams and Concurrency in CUDA.
    Compiler NVCC, CUDA Programming model. Dev environment Google Colab with GPU CUDA.
    Thread, Blocks and grids, Indexing of Blocks and Thread. Performance measurements in CUDA, Exemple: Stencil Computation 1-d, Sinchronization di Thread.
    Parallel Reduction in CUDA, CUDA Device Management, Data Parallelism in CUDA.
    CUDA Memory Access Pattern).
    Communication Cost. Modelli di Costo e meccanismi di Routing, Stima dei Costi di Comunicazione in un sistema multi-computer, strategie di switching: Store and Forward e Cut-Through Routing. Accenni di Mapping tra topologie. Implementazione ed ottimizzazione di primitive di comunicazione collettive (broadcast, reduction, broadcast all to all, scatter, gather, allgather, all to all) su topologie di rete ad anello, mesh, tree ed hypercubes con relativi calcoli dei costi di comunicazione.
    Modelli di Interazione delle Piattaforme Parallele, Architettura Fisica delle Piattaforme Parallele. Topologie di reti. Buses, CrossBars, MultiStage Networks, Arrays / Rings, Meshes, kD Meshes, HyperCubes, Tree-based Networks: Fat Trees, Banes Trees, Butterflies. Parametri di caratterizzazione delle Reti: Diametro, Bandwith (Aggregate, Bisection), Connectivity,
    Principi di Design di Applicazioni Parallele. Tecniche di Decomposizione di Algoritmi in Tasks, Assegnazione a Processi, Orchestrazione di Tasks, Mapping di Tasks su Processi.
    Design di Applicazioni Parallele. Task Dependency e Interactions Graphs. Critical Path Length. Recursive, Data Input, Output, Intermediate partition), Exploratory, Speculative Decomposition techniques. Owner Computes Rule. Tecniche Ibride. Tasks generation, Task Size (workload), dimensione dei dati associati al task workload. Interazioni tra Tasks, Tecniche di Mapping Tasks-Processi: ottimizzazione di communication overhead ed idle time, Mapping Statico e Dinamico, mapping basato su Data o Interaction Task Graphs partitioning, Hierarchical Mapping. Mapping Dinamico: centralizzato e distribuito. Tecniche per la minimizzazione dell' Interaction overhead.
    Modelli Algoritmici Paralleli: Data Parallel, Task Parallel. Parallel Patterns; esempi: Master-Slave, Processor Farm, Bag Of Tasks, Producer(s)-Consumers, Pipeline, Map-Reduce. Modelli Ibridi.
    Modellazione analitica e Performances dei Sistemi Paralleli. Sorgenti di Overhead; Metriche di Performance: Serial RunTime, Parallel RunTime, Overhead, SpeedUp (superlinear e sublinear), Efficiency, Costo (EfficiencyTime product), Cost Optimality. Effetti della Granularità sulle performances. Scalabilità dei Sistemi paralleli. Legge di Amdahl. Total Overhead function. Funzione di Isoefficienza (cenni). Analisi asintotica di Programmi Paralleli (cenni), Scaled Speedup (cenni), Serial fraction (cenni). Esempio: iterative solver. Scalabilità dei Sistemi paralleli. Legge di Amdahl. Total Overhead function. Funzione di Isoefficienza (cenni). Analisi asintotica di Programmi Paralleli (cenni), Scaled Speedup (cenni), Serial fraction (cenni). Esempio: iterative solver.
    Compilatori Parallelizzanti. Analisi delle Dipendenze per gli elementi di Array; Spazio delle dipendenze; vettori delle dipendenze; dipendenze di array. Trasformazioni automatiche di Codice per l’ ottimizzazione su architetture HPC; cenni su ottimizzazioni di istruzioni (reductions, induction variable substitution); trasformazioni di loops: skewing, interchange, strip mining, tiling, trasformazioni unimodulari. Esempio per un codice di Successive Over Relaxation. Architettura e fasi di trasformazione di codice per la parallelizzazione automatica.
    Principi di funzionamento di un compilatore parallelizzante. Tecniche di parallelizzazione automatica per Shared Memory Architectures, per Distributed Memory Architectures, e per architetture ibride / acceleratori (cenni). limiti dei Compilatori attuali. Tecniche Avanzate: Iterative Compilation, Machine Learning, Tecniche Speculative, Adattamento, Compilazione ed ottimizzazione a run-time. Compilatore per piattaforme BigData e Cloud del progetto Toreador: illustrazione e demo.
    Introduzione al Cloud Computing. evoluzione del concetto: Utility Computing, Grid Computing. Cloud Marketplaces. Caratteristiche: Pay-per-use, dynamic provisioning, scalability, multi-tenancy. Modelli di costo (CapEx, OpEx). Modelli di Deployment (Public, Private, Hybrid, Federated). Layered Reference Model (IaaS, PaaS, SaaS). Cloud Computing Reference Model and Architecture. IaaS reference model. Infrastructure Management Components. PaaS reference model. PaaS core middleware. SaaS reference model.
    Cloud Portability and Interoperability. Definizioni: Data, Application, System Portability. Service, Application, Platform Interoperability. Cloud Reference Architectures: NIST ed IBM. Ruoli: Cloud Consumer, Provider, Auditor, Broker, Carrier. Service Orchestration.
    Reference Architectures e Frameworks Architetturali.
    Cloud Patterns.
    Infrastructure as Code.
    Tosca: Modello e strumenti.
    Containers. introduzione ai container, Docker: docker engine, istruzioni docker engine, images, Docker Swarm.
    Orchestratori: Kubernetes.
    Ansible e Juju.
    Cloud-Edge Continuum: Introduzione, Reference architecture e Patterns.

    facebook logoinstagram buttonyoutube logotypelinkedin logotype