Computació d'Alt Rendiment

Esteu aquí

Crèdits
6
Tipus
Obligatòria
Requisits
Aquesta assignatura no té requisits, però té capacitats prèvies
Departament
DAC;UAB
HPC és una assignatura obligatòria del pla d'estudis del grau de Bioinformàtica que cobreix els principis bàsics de la computació d'alt rendiment i la programació paral·lela. El curs explora principalment sistemes paral·lels basats en arquitectures de microprocessadors basats en memòria cau d'ús general, així com acceleradors moderns com les GPU. El curs inclou conceptes bàsics sobre la mesura del rendiment, paradigmes i eines de programació, i alguns algoritmes paral·lels comuns.
Entre altres objectius, aquesta assignatura pretén:
1. Introduir l'estudiant al món dels sistemes de computació d'alt rendiment, per tal d'entendre l'evolució de les arquitectures informàtiques modernes i el seu ús per resoldre problemes exigents.
2. Ajudar els estudiants a analitzar un problema donat per tal de determinar les possibilitats d'optimitzar el rendiment del codi mitjançant l'ús eficient de paradigmes de programació paral·lela adequats.
3. Ensenyar a l'estudiant a seleccionar algoritmes i maquinari per a la solució de projectes d'alt rendiment, i les habilitats necessàries per escriure, executar i avaluar el rendiment de programes paral·lels en diferents arquitectures de maquinari i entorns de programari.

Professorat

Responsable

  • Josep Ramon Herrero Zaragoza ( )

Altres

  • Christian Guzman Ruiz ( )
  • Miquel Angel Senar Rosell ( )

Hores setmanals

Teoria
2
Problemes
2
Laboratori
0
Aprenentatge dirigit
0
Aprenentatge autònom
6

Resultats d'aprenentatge

Resultats d'aprenentatge

Coneixements

  • K3 - Identificar els fonaments matemàtics, les teories informàtiques, els esquemes algorísmics i els principis d'organització de la informació aplicables al modelat de sistemes biològics i a la resolució eficient de problemes bioinformàtics mitjançant el disseny d'eines computacionals.
  • K4 - Integrar els conceptes oferts pels llenguatges de programació de major ús en l'àmbit de les Ciències de la Vida per a modelar i optimitzar estructures de dades i construir algorismes eficients, relacionant-los entre sí i amb els seus casos d'aplicació.

Habilitats

  • S7 - Implementar mètodes de programació i anàlisi de dades a partir de l'elaboració d'hipòtesis de treball, dins de l'àrea d'estudi.
  • S8 - Enfrontar-se a la presa de decisions, i defensar-les amb arguments, en la resolució de problemes de les àrees de biologia, així com, dins dels àmbits adequats, les ciències de la salut, les ciències de la computació i les ciències experimentals.

Competències

  • C6 - Detectar deficiències en el propi coneixement i superar-les mitjançant la reflexió crítica i l'elecció de la millor actuació per a ampliar aquest coneixement.

Objectius

  1. Capacitat per formular models simples de rendiment atesa una estratègia de paral·lelització d'una aplicació, que permeti estimar la influència d'aspectes arquitectònics principals: el nombre d'elements de processament, el cost d'accés a dades i el cost d'interacció entre elements de processament, entre d'altres.
    Competències relacionades: K3, S8,
  2. Capacitat per identificar els diferents tipus de paral·lelisme que es poden explotar en una arquitectura de computadors (ILP, TLP i DLP dins un processador, multiprocessador i multicomputador) i descriure'n els principis de funcionament.
    Competències relacionades: K4,
  3. Capacitat per compilar i executar un programa paral·lel, utilitzant les eines essencials de línia d'ordres per mesurar el temps d'execució.
    Competències relacionades: K4,
  4. Capacitat per triar l'estratègia de descomposició més adequada per expressar paral·lelisme en una aplicació (tasques, dades).
    Competències relacionades: K4, S7, S8,
  5. Capacitat per aplicar les tècniques bàsiques per sincronitzar l'execució paral·lela, evitant condicions de carrera i bloquejos i possibilitant el solapament entre computació i interacció, entre d'altres.
    Competències relacionades: K4, C6,
  6. Capacitat de programar amb MPI la versió paral·lela d'una aplicació seqüencial.
    Competències relacionades: K4, S7,
  7. Capacitat de programar amb OpenMP la versió paral·lela d'una aplicació seqüencial.
    Competències relacionades: K4, S7,
  8. Capacitat de programar amb OpenACC la versió paral·lela d'una aplicació seqüencial.
    Competències relacionades: K4, S7,
  9. Capacitat per mesurar, mitjançant eines d'instrumentació, visualització i anàlisi, el rendiment aconseguit amb la implementació d'una aplicació paral·lela i detectar factors que limiten aquest rendiment: granularitat de tasques, càrrega equitativa i interacció entre tasques, entre d'altres.
    Competències relacionades: K4, S7, S8, C6,

Continguts

  1. Introducció a la computació d'alt rendiment i la computació paral·lela
    Introducció a la computació d'alt rendiment, les arquitectures i la computació paral·lela
  2. Entenent el paral·lelisme
    Conceptes teòrics. Mètriques de rendiment.
  3. Programació de memòria distribuïda amb MPI
    Arquitectures de memòria distribuïda: programació amb Message Passing Interface (MPI)
  4. Modelat de rendiment
    Capacitat per formular models simples de rendiment atesa una estratègia de paral·lelització d'una aplicació, que permeti estimar la influència d'aspectes arquitectònics principals: el nombre d'elements de processament, el cost d'accés a dades i el cost d'interacció entre elements de processament, entre d'altres.
  5. Programació de memòria compartida amb OpenMP
    Arquitectures de memòria compartida: programació amb OpenMP
  6. Computació a un clúster i sistemes de cues per lots: SLURM
    Computació a un clúster i sistemes de cues per lots
  7. Python per a computació d'alt rendiment
    Python per a computació d'alt rendiment
  8. Computació amb targetes gràfiques (GPU) mitjançant OpenACC
    Computació amb targetes gràfiques (GPU) mitjançant OpenACC

Activitats

Activitat Acte avaluatiu


Teoria

Assumir la responsabilitat del procés d'aprenentatge. Això implica assistir puntualment a classes, laboratoris i tutories, i participar activament a les discussions. Els estudiants són responsables d'administrar el temps eficaçment per completar totes les tasques, lectures i projectes requerits dins dels terminis establerts. També s'han d'adherir a les polítiques d'honestedat acadèmica de la universitat, sol·licitar aclariments quan el material no els quedi clar i respectar l'ambient d'aprenentatge interactuant amb els companys i el professor de manera professional.
  • Teoria: Classes de teoria i ressolució de problemes
  • Aprenentatge autònom: Treball personal sobre la teoria i resolució de problemes
Objectius: 1 4 5 2 6 7 8
Continguts:
Teoria
27h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
45h

Sessions pràctiques

Tasques pràctiques de laboratori utilitzant un cluster paral·lel. L'estudiant ha de desenvolupar tasques pràctiques fent servir un clúster paral·lel. En aquest entorn, les seves responsabilitats inclouen l'execució activa, la resolució de problemes i la gestió de recursos. Ha de: - Preparar-se amb antelació revisant els conceptes teòrics i les lectures prèvies al laboratori o les instruccions de configuració inicial abans de la sessió de laboratori. - Executar les tasques de forma independent, documentant acuradament els procediments, les entrades i les sortides, incloent-hi qualsevol error trobat i la seva resolució. - Desenvolupar habilitats pràctiques de depuració i utilitzar els recursos tècnics disponibles (documentació, eines de programari específiques) per resoldre els desafiaments tècnics abans de cercar lajuda de lnstructor. - Presentar codi/informes funcionals i ben documentats que compleixin el format, el control de versions i les convencions de nomenclatura especificats.
  • Problemes: Sessions pràctiques
  • Aprenentatge autònom: Completar les tasques de les pràctiques de laboratori i preparar-ne els lliurables.
Objectius: 3 4 5 6 7 8 9
Continguts:
Teoria
0h
Problemes
28h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
45h

Examen 1a part

Examen 1a part
Objectius: 1 4 5 2 6 9
Setmana: 8 (Fora d'horari lectiu)
Teoria
1.5h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Examen Laboratori 1a part (LE1)

Examen Laboratori 1a part (LE1)
Objectius: 3 4 5 6 9
Setmana: 8 (Fora d'horari lectiu)
Teoria
0h
Problemes
1h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Examen 2a part

Examen 2a part
Objectius: 4 5 2 7 8
Setmana: 16 (Fora d'horari lectiu)
Teoria
1.5h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Examem Laboratori 2a part (LE2)

Examem Laboratori 2a part (LE2)
Objectius: 3 4 7 8 9
Setmana: 16 (Fora d'horari lectiu)
Teoria
0h
Problemes
1h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Metodologia docent

Cada setmana l'estudiant tindrà dues hores de sessió teòrica i dues de sessió pràctica. Les classes teòriques introdueixen tots els coneixements, tècniques, conceptes necessaris per resoldre problemes i treballs de laboratori. Alguns problemes poden resoldre's durant les sessions teòriques. S'espera de l'estudiant la realització de treball personal addicional resolent la resta de problemes de la col·lecció de problemes. Addicionalment, dues hores de sessions laboratori són també realitzades setmanalment; es valorarà la participació activa i rendiment durant les sessions de laboratori (treballar durant la sessió, avançant el treball per assolir els objectius de la sessió).
Els estudiants han de treballar autonòmament abans de les sessions per preparar-se per a les classes i treure'n partit. Després, han de treballar autònomament per practicar i consolidar els conceptes i habilitats desenvolupades al llarg del curs.
Per a les pràctiques i problemes d'aquest curs s'emprarà majoritàriament el llenguatge de programació C i els models de programació paral·lela MPI, OpenMP i OpenACC. Les sessions pràctiques de laboratori es realitzen en una màquina paral·lela de tipus clúster amb el sistema operatiu Linux. L'accés al clúster s'haurà de fer utilitzant l'ordinador portàtil de l'estudiant. Per tant, els estudiants han de garantir que poden connectar-se al clúster de Linux des del seu ordinador portàtil.

Mètode d'avaluació

La nota del curs es calcularà com la mitjana ponderada de 6 notes (3 notes per a cadascuna de les parts del curs):

N = 0.05 * SL1 + 0.15 * EL1 + 0.3 * ET1 + 0.05 * SL2 + 0.15 * EL2 + 0.3 * ET2

On:
- SL_i està relacionat amb lliuraments de pràctiques de la part i-èssima
- EL_i examen de laboratori de la part i-èssima
- ET_i examen de teoria de la part i-èssima


IMPORTANT: La realització i presentació de tots els informes de seguiment del laboratori (SL_i ) és condició necessària per superar l'assignatura. Només es considera informe elaborat i presentat aquell informe amb un mínim de contingut. Informes buits o amb només les preguntes, per exemple, no es consideren realitzats ni presentats.

Els estudiants aprovaran el curs si han completat tots els exàmens i han obtingut una nota del curs (N) igual o superior a 5 sobre 10.

Els estudiants que suspenguin el curs amb una nota mitjana final superior a 3 sobre 10, podran fer un examen de recuperació de la part teòrica. L'examen de recuperació constarà de dues parts: hi haurà un examen de recuperació per a cadascuna de les 2 parts (ER1 i/o ER2) per als estudiants que hagin suspès aquesta part específica. A l'examen de reavaluació només es podrà recuperar la part teòrica del curs. La nota ER_i substituirà la nota obtinguda en el curs regular per a l'examen de teoria corresponent, ET_i.

Bibliografia

Bàsica:

Complementaria:

Web links

Capacitats prèvies

Per completar aquest curs satisfactòriament, els participants han de tenir una sòlida base en programació imperativa seqüencial i estructures de dades fonamentals. És imprescindible conèixer el llenguatge de programació C, amb un èmfasi especial en punters i gestió dinàmica de memòria. Es requereix familiaritat amb la línia de comandes de Linux/Unix i les eines bàsiques de compilació per desenvolupar-se eficaçment a l'entorn de laboratori. A més, els estudiants han de saber realitzar la manipulació d'expressions matemàtiques, ja que aquesta habilitat és necessària per comprendre els conceptes teòrics i els models de rendiment presentats a les sessions. No es requereixen coneixements previs de programació paral·lela (MPI, OpenMP o OpenACC).