Universitat Politècnica de Catalunya · BarcelonaTech

Programació Científica i Computació d'Alt Rendiment (250COD006) – Curs 2026/27 PDF

Temari

- Programació procedural vs orientada a objectes (OOP) - Conceptes de programació funcional - OOP en codis de computació a gran escala (encapsulació, abstracció) - Patrons funcionals en càlcul numèric (mapa, reducció, inmutabilitat) - Llenguatges compilats vs interpretats - Tipus estàtics vs dinàmics - Introducció a la sintaxi y entorns virtuals de Python

Dedicació

3h Grup gran + 4h 30m Aprenentatge autònom
Total: 7h 30m

- Complexitat algorítmica & estructures de dades - Disseny modular amb Python (funcions, classes, tipus) - Visualització amb Python (matplotlib i PyVista)

Dedicació

3h Grup gran + 4h 30m Aprenentatge autònom
Total: 7h 30m

- Control de versions - Desenvolupament professional: qualitat del codi i revisió del codi - Estratègies de test (integració contínua i desenvolupament basat en tests - Entorns de programació assistits per IA (IDEs)

Dedicació

3h Grup gran + 4h 30m Aprenentatge autònom
Total: 7h 30m

- Aritmètica en coma flotant - Condicionament dels problemes vs estabilitat algorítmica - Complexitat algorítmica en fluxos de treball de simulació - Jerarquia de memòria i comportament de la memòria cache - Model Roofline - Vectorització i disposició de les dades en memòria - Identificació de colls d'ampolla en bucles tipus elements finits

Dedicació

3h Grup gran + 4h 30m Aprenentatge autònom
Total: 7h 30m

- Conceptes de BLAS/LAPACK subjacents a NumPy - Operacions denses eficients i avaluació del rendiment (benchmarking) - Formats de matrius disperses (CSR, COO) - Assemblatge eficient de matrius disperses - Anàlisi de l'empremta de memòria - Breu introducció als mètodes de Krylov i a la seva implementació - Estratègies de precondicionament - Solucionadors iteratius: convergència versus escalabilitat - Solucionadors iteratius: robustesa numèrica

Dedicació

3h Grup gran + 4h 30m Aprenentatge autònom
Total: 7h 30m

- Llei d'Amdahl - Escalabilitat forta versus escalabilitat feble - Paral·lelisme en CPU i disposició de les dades en memòria: paral·lelisme en memòria compartida vs paral·lelisme en memòria distribuïda - Paral·lelisme en GPU

Dedicació

3h Grup gran + 4h 30m Aprenentatge autònom
Total: 7h 30m

- Paralelisme en memòria compartida en Python (GIL i multiprocessing, fonamentals de asyncio, task orchestration) - Treball de SMP

Dedicació

3h Grup gran + 4h 30m Aprenentatge autònom
Total: 7h 30m

- Estructures de dades distribuides - Patrons de comunicació - Producte matriu-vector distribuit

Dedicació

6h Grup gran + 9h Aprenentatge autònom
Total: 15h

- Introducció a l'acceleració en GPU amb PyTorch - Treball de GPU

Dedicació

3h Grup gran + 4h 30m Aprenentatge autònom
Total: 7h 30m

- Sessió pràctica per a treballar en els projectes de DMP, MPI i GPU.

Dedicació

3h Activitats dirigides + 4h 30m Aprenentatge autònom
Total: 7h 30m

- Experiència pràctica amb un cicle de vida de desenvolupament "corromput" - Eines de depuració (debugging) - Colls d'ampolla en operacions de reducció - Experiència pràctica amb eines de perfilatge (profiling)

Dedicació

3h Grup gran + 4h 30m Aprenentatge autònom
Total: 7h 30m

- Arranjaments fora de memòria (out-of-core arrays) - Estratègies de particionament en blocs (chunking) - Grafs de tasques i avaluació diferida (lazy evaluation) - Planificador distribuït de Dask - Paradigmes MPI vs Dask - Entrada/sortida científica eficient (HDF5)

Dedicació

3h Grup gran + 4h 30m Aprenentatge autònom
Total: 7h 30m