Tags:
create new tag
view all tags
EscherMetamorphosisII1940.jpg

Programmazione di Sistemi Multicore

Corso di Laurea in Informatica, terzo anno

A.A. 2017-2018, primo semestre

Docente: Irene Finocchi

Ricevimento: mercoledì 9:00-11:00 durante il corso (da confermare via mail prima di venire), per appuntamento al termine del corso.
Ufficio: sede di Via Salaria, stanza 345/A. Tel: 06-49918426.
E-mail: finocchi AT di.uniroma1.it

Orario delle lezioni

Giorno Ore Aula
Lunedì 8:00-10:30 Aula 2 - Via del Castro Laurenziano 7A
Martedì 8:00-10:30 Aula 2 - Via del Castro Laurenziano 7A

Avvisi

  • Il corso avrà inizio lunedì 25 settembre alle ore 8:30.

  • Iscrivetevi al Google group per discussioni sugli argomenti del corso, avvisi e notizie last-minute.

Obiettivi e programma del corso

Il corso affronta problematiche e tecniche di programmazione delle moderne piattaforme di calcolo parallele e distribuite, dai sistemi multicore presenti sui più comuni laptop, desktop e dispositivi mobili, fino alle GPU e alle recenti infrastrutture cloud.

Il parallelismo offre enormi opportunità nello sviluppo di applicazioni con requisiti computazionali stringenti: basti pensare ai benefici in aree come computer graphics e big data computing. Ma un maggior parallelismo nell'hardware risulta inefficace se non è opportunamente sfruttato a livello software. Ciò impone cambiamenti fondamentali nello stile di programmazione e, ad un più alto livello di astrazione, nella progettazione degli algoritmi e delle strutture dati utilizzate. Ad oggi, la maggior parte degli algoritmi sono pensati secondo una visione sequenziale del modello di calcolo soggiacente e i linguaggi di programmazione offrono poche astrazioni per programmare sistemi multiprocessore.

Scopo del corso è di insegnare agli studenti a "pensare in parallelo", rivisitando sia il modo in cui i programmi sono espressi che alcune tecniche algoritmiche tradizionalmente pensate per modelli sequenziali. La prima parte del corso utilizza Java come linguaggio di programmazione e si focalizza su un modello a memoria condivisa con thread espliciti. Presenteremo successivamente tecniche di programmazione di GPU (OpenCL) e - tempo permettendo - di problem solving su cluster a larga scala (MapReduce).

Il corso ha una natura trasversale, coniugando aspetti di algoritmi, linguaggi di programmazione e sistemi. Gli homework svolti faranno acquisire allo studente un'esperienza diretta scrivendo programmi paralleli efficienti in alcuni dei modelli presentati a lezione.

Diario delle lezioni

Libro di testo e materiale didattico

Modalità e date d'esame

Per superare l'esame si devono svolgere due homework che saranno assegnati durante il corso e sostenere una prova scritta.

Gli homework sono esercizi implementativi (uno in Java, l'altro in OpenCL) e possono essere svolti in gruppi costituiti da al più 3 persone.

Nella prova scritta occorrerà dimostrare di aver studiato e compreso gli argomenti trattati nelle lezioni del corso:

  • rispondendo a tipiche domande da esame orale volte a verificare la comprensione della materia;
  • svolgendo semplici esercizi di ragionamento che prevedono l'applicazione dei concetti esposti a lezione.

Non è previsto un esame orale, salvo su esplicita richiesta del docente in caso di sospetta copiatura - parziale o totale - degli homework o della prova scritta.

Prove intermedie. Sono previste due prove intermedie: la prima nella settimana di interruzione della didattica (tipicamente inizio novembre), la seconda al termine del corso. La prima prova intermedia riguarderà tutti gli argomenti svolti fino alla data della prova stessa e sarà strutturata come la prova scritta, ovvero con domande aperte ed esercizi di ragionamento. La seconda prova intermedia coprirà gli argomenti svolti nella seconda parte del corso. La sufficienza ottenuta alle prove intermedie sarà valida fino all'ultimo appello dell'anno accademico di riferimento.

Voto. Sia gli homework che la prova scritta concorrono a determinare il voto finale. Quest'ultimo verrà inoltre incrementato di un punto per chi termina nella sessione invernale avendo superato la prova intermedia.

Prenotazioni. Per partecipare alle prove scritte (inclusa quella intermedia) è obbligatoria la prenotazione. Sarà possibile prenotarsi agli appelli d'esame tramite infostud, e alla prova intermedia tramite twiki.

Prove d'esame

Edit | Attach | Watch | Print version | History: r88 < r87 < r86 < r85 < r84 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r88 - 2017-09-24 - IreneFinocchi






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback