User Tools

Site Tools


home

GPU Computing

Corso di Laurea Magistrale in Informatica, A.A. 2015/16
Dipartimento: Scienze dell'Informazione - Università degli Studi di Milano
Docente: Giuliano Grossi (grossi@di.unimi.it)

Previsto nei percorsi di magistrale:

  1. Algoritmi e fondamenti
  2. Informatica musicale
  3. Metodi e modelli per la progettazione e sviluppo del software
  4. Perceptual computing
  5. Video game

Avvisi

  • 27 Febbraio 2017 - NEW:La prima lezione per l'anno accademico 2016/17 è prevista per venerdì 10 marzo alle ore 13.30 in aula delta
  • 5 giugno 2016: la lezione di venerdì 10 giugno (dalle ore 14.00 alle 16.00, aula Delta) sarà un seminario dal titolo: “parallelizzazione mediante CUDA della stima del moto nella codifica video VP8 (di Google)”, tenuto da Alessandro Petrini, collaboratore del progetto europeo T-NOVA
  • 15 aprile 2016: la lezione di oggi venerdì 15 aprile è sospesa
  • 4 aprile 2016: pubblicata la lezione di venerdì 1 e il challenge connesso sulla mima del mooltiplicazione di matrici a blocchi
  • 1 aprile 2016: la macchina lagrange è raggiungibile via ssh: ssh <studente>@cuda.lagrange.di.unimi.it
  • 16 marzo 2016: la lezione di venerdì 18 marzo è sospesa
  • 4 marzo 2016: il server Lagrange (cuda.lagrange.di.unimi.it) è dotato di schede Tesla M2090 e Tesla M2050
  • 1 marzo 2016: inizio lezioni venerdì 5 marzo alle ore 13.30 in aula delta

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 CPU/GPU.

Programma del corso

  • Introduzione ai sistemi di calcolo eterogenei basati su CPU e GPU
  • Il concetto di GPGPU (General Purpose GPU) programming
  • Il modello di programmazione CUDA
  • Il modello di esecuzione CUDA
  • Il modello di memoria di CUDA
  • Stream, concorrenza e ottimizzazione delle prestazioni
  • Librerie di CUDA SDK accelerate da GPU
  • Programmazione e computazione multi-GPU
  • Pattern di parallelismo negli algoritmi
  • Introduzione alla programmazione con OpenCL
  • 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:

  1. progetto: sviluppo di un progetto basato sul linguaggio CUDA C rivolto ad applicazioni in cui il calcolo parallelo ottiene uno speedup significativo
  2. orale: colloquio tradizionale sugli argomenti trattati a lezione

Orario lezioni

Venerdì dalle 13.30 alle 17.30, aula Delta (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.

home.txt · Last modified: 2017/02/27 12:52 by grossi