Avvisi

24 Marzo 2018 (* NEW *)

La lezione finale di giovedì 7 giugno si terrà in aluletta 4 (orario solito) e sarà un seminario sulla cosdifica video svolta in parte in CUDA, tenuto da Alessandro Petrini (dottorando)

21 Marzo 2018

Ricordo che le lezioni avranno inizio alle ore 14.00

15 Marzo 2018
Il server per le esercitazioni lagrange (cuda.lagrange.di.unimi.it) è dotato di schede Tesla M2090 e Tesla M2050.
Come richiedere un account per la durata del corso:
  • l'account è concesso *solo* a studenti seriamente intenzionati a seguire questo corso e deve provenire necessariamente dall'indirizzo email di ateneo: @studenti.unimi.it
  • per ottenere un account su lagrange è necessario iscriversi mediante la form (Google) Lagrange account
  • la macchina è raggiungibile da shell via connessione remota: ssh "email-studente"@cuda.lagrange.di.unimi.it
  • NB. gli account verranno disabilitati in automatico in data 15 agosto 2018 (riattivabili successivamente dalle postazioni chiosco solo in caso di esame ancora da sostenere!)
7 Marzo 2018

Per motivi di sciopero trasporti e il numero di richieste di rinvio pervenute, mi vedo costretto a sospendere la lezione prevista per domani giovedì 8 marzo

28 Febbraio 2018

La prima lezione del corso, prevista per domani giovedì 1 marzo, è SOSPESA.
Inizio lezioni previsto per giovedì 8 marzo, ore 13.30, aula sigma


Syllabus

Obiettivi del corso

Questo corso ha come obiettivo l'apprendimento delle principali tecniche di programmazione parallela per lo sviluppo di applicazioni su architetture multicore, come le GPU (Graphics Processing Units), progettate per il calcolo parallelo ad elevate prestazioni. A questo fine viene impiegata l'architettura hw/sw CUDA e il relativo linguaggio CUDA C per lo sviluppo su GPU NVIDIA. L'attività ha quindi un duplice scopo: da un lato un approccio metodologico alla programmazione parallela e al disegno di algoritmi secondo consolidati pattern di parallelismo, dall'altro la pratica di laboratorio per lo sviluppo di applicazioni parallele seguendo un processo di valutazione, parallelizzazione, ottimizzazione delle prestazione e deployment su sistemi ibridi CPU-GPU

Programma del corso

  • Introduzione ai sistemi di calcolo eterogenei basati su CPU e GPU
  • Il concetto di GPGPU (General Purpose GPU) programming
  • Architetture di calcolo parallelo
  • Il modello di programmazione CUDA
  • Il modello di esecuzione CUDA
  • Il modello di memoria CUDA
  • Stream, concorrenza e ottimizzazione delle prestazioni
  • Librerie di CUDA SDK accelerate da GPU
  • Programmazione e computazione multi-GPU
  • Pattern di parallelismo negli algoritmi
  • Sviluppo e implementazione di applicazioni su GPU NVIDIA

Prerequisiti

Sono requisiti essenziali le basi di teoria e pratica della programmazione e una buona conoscenza del linguaggio ANSI C standard

Esame

L'esame consiste di due parti:
  • Srcitto: domande scritte sugli argomenti trattati a lezione (24/30 punti)
  • Progetto: sviluppo di un progetto basato sul linguaggio CUDA C rivolto ad applicazioni in cui il calcolo parallelo ottiene uno speedup significativo (vedi pagina dei progetti d'esame)

Orario lezioni

Giovedì dalle 13.30 alle 17.30 (secondo semestre Marzo-Giugno), aula Sigma (silab)

Ricevimento

Il ricevimento studenti si tiene su appuntamento da concordare di volta in volta via e-mail (grossi@di.unimi.it). Il luogo è la stanza S205, secondo piano del Dipartimento di Informatica di via Comelico.