Docente
|
PANELLA MASSIMO
(programma)
Brevi richiami sull'elaborazione numerica dei segnali e dell’informazione. Sistemi e segnali tempo-discreti, conversione analogico/digitale (DAC, ADC), trasformata z. Strutture di elaborazione e filtraggio, architetture FIR, IIR e a traliccio, effetti di quantizzazione, processori per DSP.
Virtualizzazione delle risorse in ambienti di calcolo distribuiti, cloud computing.
Principi di programmazione concorrente, parallela e distribuita. Processi sequenziali e paralleli. Accesso a risorse condivise, primitive di comunicazione e sincronizzazione, inter-process communication, stallo. Tecnologie OpenCL, MPI. Cenni ai linguaggi di programmazione concorrente.
Metodi di progettazione di processori vettoriali. Dependence Graph (DG) e analisi delle dipendenze. Proiezione e scheduling, mapping canonico da DG a SFG, esempi. Array sistolici, fused multiply-add (FMA), pipelining, sistolizzazione.
Calcolo parallelo su architetture multi-core, FPGA, GPU, TPU.
Machine Learning e Intelligenza Computazionale: reti neurali, logica fuzzy e algoritmi evolutivi.
Implementazione parallela di algoritmi di clustering e classificazione: C-Means, k-NN.
Implementazione hardware di architetture neurali “shallow”. Modelli di riferimento: Multilayer Perceptron (MLP); Radial Basis Function (RBF); Fuzzy Inference System (FIS) e reti neurali ANFIS; Extreme Learning Machine (ELM) o Random Vector Functional-Link (RVFL); Echo State Network (ESN). Vincoli di precisione numerica finita. Vincoli architetturali. Tecniche di virtualizzazione e condivisione.
Apprendimento e inferenza di reti neurali “deep” su architetture parallele. Modelli di riferimento: Convolutional Neural Network (CNN); Long Short-Term Memory (LSTM); Gated Recurrent Unit (GRU); Autoencoder e Generative Adversarial Network (GAN); Attention Networks.
Tecniche di ottimizzazione e apprendimento distribuito. Topologia e reti di agenti (sensori e attuatori intelligenti). Distributed Average Consensus (DAC), ADMM, algoritmi euristici. Clustering distribuito e classificazione distribuita. Learning distribuito in reti ricorrenti e (stacked) deep.
Introduzione al calcolo quantistico. Porte e array quantistici. Algoritmi quantistici per l’ottimizzazione e il trattamento dell’informazione (QFFT, Grover, Schor). Quantum machine learning. Reti neurali quantistiche.
Studi di caso per applicazioni parallele e distribuite e introduzione ai progetti monotematici:
• quantizzazione, classificazione, predizione, approssimazione, interpolazione e filtraggio di dati meccatronici, biologici, energetici, economici, ambientali e aerospaziali;
• il caso particolare di Smart Grid, analisi comportamentale e biometria;
• algoritmi di machine learning in ambiente CUDA, OpenCL, OpenCV, Dlib;
• apprendimento parallelo in ambiente C, Matlab, Python (TensorFlow, Keras, XLA), Julia;
• programmazione su architetture multi-core Intel per il Deep Learning (MKL, TBB, MKL-DNN, OpenVINO, oneAPI);
• implementazione di reti neurali e neurofuzzy su microcontrollori, sistemi embedded e smart sensor;
• utilizzo di nodi di calcolo e reti di sensori distribuiti basati su tecnologia Raspberry Pi.
Appunti e dispense forniti dal docente.
P. Pacheco, An introduction to Parallel Programming, MK Publisher.
H.T. Kung, R. Sproull, G. Steele, VLSI Systems and Computations, Springer.
S.O. Haykin, Neural Networks and Learning Machines (3rd Ed.), Pearson.
I. Goodfellow, Y. Bengio, A. Courville, Deep Learning, MIT Press.
|