DEMAT

 

 DEMAT

Contenido sugerido

1. Optimización de código.
1.1. Arquitectura de procesadores modermos.
1.2. Programación eficiente aprovechando el cache.
1.3. Organización de la memoria en C/C++.
1.4. Directivas de compilación para optimización.
1.5. Branch prediction.


2. Matrices dispersas/ralas.
2.1. Tipos de matrices ralas.
2.2. Costos de almacenamiento y operación.
2.3. Sistemas de ecuaciones con matrices ralas.
2.4. Estructura de matrices ralas al modelar ecuaciones diferenciales parciales.
2.5. Compressed Row/Column Storage.
2.6. Almacenamiento de de matrices ralas en formato MatLab.
2.7. Multiplicación matriz-vector con matrices ralas.


3. Gradiente conjugado.
3.1. Algoritmo de gradiente conjugado.
3.2. Reordenamiento para optimizar gradiente conjugado.
3.3. Número de condición.
3.4. Precondicionamiento.
3.5. Precondicionador Jacobi.


4. Paralelización con OpenMP.
4.1. Operaciones matemáticas en paralelo.
4.2. Procesadores multi-core con memoria compartida.
4.3. Uso eficiente del cache.
4.4. Programación con threads.
4.5. El esquema OpenMP.
4.6. "Hola mundo" con OpenMP.
4.7. Reducciones.
4.8. Paralelización de secciones de código.
4.9. Variables private y shared.
4.10. Modificación del scheduling.
4.11. Paralelización de la multiplicación matriz-vector.
4.12. Gradiente conjugado con OpenMP.


5. Factorizaciones Cholesky y LU.
5.1. Factorización Cholesky simbólica.
5.2. Paralelización con OpenMP de las factorizaciones Cholesky y LU.
5.3. Paralelización de solver para matrices triangulares.
5.4. Reordenamiento de renglones y columnas.
5.5. Matrices de permutación.
5.6. Matrices ralas como grafos no dirigidos.
5.7. Algoritmo de grado mínimo.
5.8. Algoritmo de bisección anidada (librería METIS).


6. Gradiente biconjugado.
6.1. Algoritmo de gradiente biconjugado.
6.2. Paralelización con OpenMP.
6.3. Precondicionador Jacobi.


7. Precondicionadores con factorización incompleta.
7.1. Factorización Cholesky incompleta.
7.2. Gradiente conjugado con precondicionador Cholesky incompleto.
7.3. Factorización LU incompleta.
7.4. Gradiente biconjugado con precondicionador LU incompleto.


8. Precondicionadores con inversa aproximada.
8.1. Inversa aproximada rala.
8.2. Inversa aproximada rala factorizada.
8.3. Gradiente conjugado con precondicionador inversa aproximada.
8.4. Gradiente biconjugado con precondicionador inversa aproximada.


9. Paralelización con MPI (Message Passing Interface).
9.1. Clusters Beowulf.
9.2. Paralelización con memoria distribuida.
9.3. Descripción de la librería MPI.
9.4. "Hola mundo" con MPI.
9.5. Comunicación con bloqueo.
9.6. Comunicación sin bloqueo.
9.7. Como correr el programa en un cluster.
9.8. Depuración de programas con MPI.
9.9. Gradiente conjugado con MPI.


10. Descomposición de dominios.
10.1. Descomposición de dominios.
10.2. Particionamiento de grafos/mallas.
10.3. Librería METIS para particionar.
10.4. Implementación con MPI del método de Schur.
10.5. Solución de ecuaciones diferenciales con descomposición de dominios.
10.6. Método alternante de Schwarz.
10.7. Implementación con MPI del método alternante de Schwarz

 

 

Sugerencias de Bibliografia

 

1. Introducción a la Investigació́n de Operaciones. Novena Edició́n. Frederick S. Hillier y Gerald J. Lieberman. Mc Graw Hill, 2010.
2. Investigació́n de Operaciones: Aplicaciones y Algoritmos. Cuarta Edición. Wayne L Winston. CENGAGE Learning, 2005.
3. Numerical Optimization. Second Edition. Jorge Nocedal y Stephen J. Wright. Springer, 2006.