Logo UAB
2023/2024

Computació Avançada d’Altes Prestacions

Codi: 44730 Crèdits: 6
Titulació Tipus Curs Semestre
4318303 Recerca i Innovació en Ciència i Enginyeria Basades en Computadors OT 0 1

Professor/a de contacte

Nom:
Juan Carlos Moure Lopez
Correu electrònic:
juancarlos.moure@uab.cat

Idiomes dels grups

Podeu accedir-hi des d'aquest enllaç. Per consultar l'idioma us caldrà introduir el CODI de l'assignatura. Tingueu en compte que la informació és provisional fins a 30 de novembre de 2023.

Equip docent

Sandra Adriana Mendez

Prerequisits

Coneixements de programació (preferiblement en llenguatge C)


Objectius

L'objectiu fonamental de l'assignatura és que l'estudiantat adquireixi les capacitats d'anàlisi, ús i avaluació dels ordinadors, per al desenvolupament d'aplicacions avançades.

Els conceptes bàsics que es descriuran a les sessions teòriques són: processament paral·lel en ordinadors, memòries jeràrquiques, avaluació del rendiment, i els llenguatges i models de programació paral·lels d'aquests sistemes. Els objectius més específics són els següents:

1.    Entendre les claus per obtenir bon rendiment de computadors multi-nucli i multi-processador, i d'acceleradors de còmput (GPUs)

2.    Identificar les oportunitats de paral·lelització a un algorisme o aplicació, a diferents nivells (instruccions, iteracions d'un bucle, crides a funcions...), i expressar-ho formalment

3.    Dissenyar les estructures de dades d'una aplicació i els algorismes que hi accedeixen per tal d'afavorir el bon rendiment de la jerarquia de memòria

4.    Analitzar, dissenyar i implantar algorismes paral·lels amb patrons de còmput abstractes (reducció, transformació...) sota paradigmes de programació basats en variables compartides i sincronització, i amb llenguatges paral·lels actuals.

5.    Verificar la funcionalitat i avaluar el rendiment d'aplicacions paral·leles, identificant els colls d'ampolla respecte al rendiment

6.    A partir de l'anàlisi de rendiment, seleccionar el computador adequat a una aplicació i/o realitzar optimitzacions del codi que millorin encara més el seu rendiment


Resultats d'aprenentatge

  • CA04 (Competència) Capacitat per a aplicar tècniques de computació d'altes prestacions a problemes complexos d'àmbits diversos de la ciència o l'enginyeria.
  • CA05 (Competència) Capacitat per a generar preguntes i hipòtesis davant de nous reptes de recerca i demostrar originalitat en la manera d'abordar i resoldre els problemes plantejats mitjançant tècniques de computació d'altes prestacions.
  • KA06 (Coneixement) Descriure els patrons algorísmics més adequats per a diferents entorns de computació d'altes prestacions.
  • KA07 (Coneixement) Descriure els problemes de rendiment més comuns que poden exhibir les aplicacions informàtiques en funció de l'arquitectura del sistema en què s'executin.
  • KA08 (Coneixement) Identificar a partir de criteris de cost-prestacions les piles tecnològiques més adequades per a desenvolupar aplicacions d'altes prestacions que tractin problemes en àmbits de ciència i enginyeria.
  • SA08 (Habilitat) Ser capaç d'identificar els problemes de rendiment d'aplicacions complexes seleccionant i aplicant les tècniques d'elaboració de perfils i les eines adequades.
  • SA09 (Habilitat) Ser capaç d'optimitzar aplicacions adaptades a diferents arquitectures: sistemes multinucli, sistemes distribuïts, acceleradores gràfiques (GPU ) i sistemes híbrids.
  • SA10 (Habilitat) Ser capaç de dissenyar aplicacions innovadores en els àmbits de la ciència i l'enginyeria aplicant models teòrics i usant tècniques i eines pròpies de la computació d'altes prestacions.

Continguts

1. Paral·lelisme d'Instruccions: Dependències de dades entre instruccions en un bucle i reordenació dinàmica de l'execució

2. Paral·lelisme de Dades: Anàlisi del paral·lelisme de dades d'un algorisme i execució SIMD (vectorització)

3. Paral.lelisme de tasques: Execució multi-fil i multi-nucli; Jerarquia de memòria compartida i coherència de dades; Sincronització entre threads

4. Algorismes Paral·lels: Model de paral·lelisme amb variables compartides i sincronització. Patrons de còmput paral·lel: reducció, transformació, master/worker, divide & conquer pipeline

5. Avaluació del Rendiment d'Aplicacions: Anàlisi de complexitat, paral·lelisme i localitat; Mètriques de rendiment (elapsed time, IPC, ample de banda, intensitat aritmètica); Treball total i camí crític de l'execució paral·lela


Metodologia

Classes de Teoria: s'exposaran els coneixements propis de l'assignatura. Es descriuran els conceptes bàsics i s'il·lustraran amb exemples pràctics. Es ressaltaran els problemes d'aprenentatge més importants i es mostrarà com completar i aprofundir en els continguts. Es discutiran i resoldran problemes pràctics i el professor detectarà els problemes de comprensió i raonament més comuns i els resoldrà per a tots els estudiants. Es promou la capacitat d'anàlisi i síntesi, el raonament crític i la capacitat de resolució de problemes. 

Cas pràctic d'estudi autònom: durant el curs, l'alumnat haurà de dissenyar, planificar, realitzar, presentar i defensar de forma oral un treball pràctic, indicant els objectius, el desenvolupament, els resultats obtinguts amb esquemes, figures i gràfiques entenedores, les incidències més notables i, finalment, les conclusions més rellevants. S'espera una actitud proactiva i dinàmica, la cerca autònoma dels coneixements que siguin necessaris, i ambició amb els objectius del treball.

Nota: es reservaran 15 minuts d'una classe, dins del calendari establert pel centre/titulació, per a la complementació per part de l'alumnat de les enquestes d'avaluació de l'actuació del professorat i d'avaluació de l'assignatura/mòdul.


Activitats formatives

Títol Hores ECTS Resultats d'aprenentatge
Tipus: Dirigides      
Assistència a classe de teoria i exercicis teòrics 20 0,8 CA05, KA06, KA07, KA08, SA10
Debat oral sobre el treball autònom 20 0,8 CA04, CA05, KA08
Pràctiques de programació amb Ordinador 20 0,8 CA04, KA07, SA08, SA09, SA10
Tipus: Autònomes      
Estudi autònom, redacció d'informe i desenvolupament de presentació 38 1,52 CA04, CA05
Estudi i Resolució de Problemes 50 2 CA04, CA05, KA06, KA07, KA08

Avaluació

Les dates d'avaluació continuada i lliurament de treballs es publicaran a la plataforma Moodle de la UAB (Campus Virtual) i poden estar subjectes a canvis de programació per motius d'adaptació a possibles incidències. Sempre s'informarà a la plataforma Moodle sobre aquests canvis, ja que s'entén que és la plataforma habitual d'intercanvi d'informació entre professor i estudiants.

Activitats d'avaluació
Activitat A: resolució de problemes pràctics i defensa oral; realització en grup de dos estudiants; 30% de la nota final
Activitat B: informe escrit i defensa oral d'un treball autónom; 40% de la nota final
Activitat C: examen escrit de teoria i problemes; realització individual; 30% de la nota final

Irregularitats per part dels estudiants, còpia i plagi
Sense perjudici d'altres mesures disciplinàries que s'estimin oportunes, esqualificaran amb un zero les irregularitats comeses per un estudiant que puguin conduir a una variació de la qualificació d'un acte d'avaluació. Per tant, la còpia, el plagi, l'engany, deixar copiar, l’ús no autoritzat de la IA (p. ex, Copilot, ChatGPT o equivalents), etc. en qualsevol de les activitats d'avaluació implicarà suspendre-la amb un zero. Les activitats d'avaluació qualificades d'aquesta forma i per aquest procediment no seran recuperables. Si és necessari superar qualsevol d'aquestes activitats d'avaluació per aprovar l'assignatura, aquesta assignatura quedarà suspesa directament, sense oportunitat de recuperar-la en el mateix curs. En cas de no superar l'assignatura degut aquel'estudiant ha comès irregularitats en un acte d'avaluació, la nota numèrica de l'expedient serà el valor menor entre 3.0 i la mitjana ponderada de les notes (i per tant no serà possible l'aprovat per compensació).


Activitats d'avaluació continuada

Títol Pes Hores ECTS Resultats d'aprenentatge
Examen Individual 30 2 0,08 CA04, KA06, KA07
Exercicis de Programació i Rendiment 30 0 0 KA08, SA08, SA09, SA10
Informe escrit i defensa oral del treball autònom 40 0 0 CA04, CA05

Bibliografia

Parallel Programming: Techniques and Applications using Networked Workstations and Parallel Computers. Barry Wilkinson. Prentice Hall, 1999.
Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering. Ian Foster. Addison Wesley, 1995.
Introduction to Parallel Computing. A. Grama et alter. Addison Wesley, Second Edition, 2003.
Computer Architecture: A Quantitative Approach. 6th Edition (https://cataleg.uab.cat/iii/encore/record/C__Rb2034006) John Hennessy, David Patterson, Morgan Kaufmann (Elsevier) 2018 (Cap. 4 i 5)
Structured Parallel Programming: Patterns for efficient computation M. McCool, J. Reinders, A. Robison, Elsevier, 2012
Parallel Programming for Multicore and Cluster Systems T. Rauber, G. Rünger, Springer (Elsevier), 2010
Programming Massively Parallel Processors: A Hands-on Approach D. Kirk, & W.M. Hwu, Morgan Kaufmann (Elsevier), 2010


Programari

C language. OpenMP and OpenACC extensions.