CONTENIDO
- Introducción.
- Aplicaciones demandantes de recursos.
2.1. Aplicaciones intensivas en cálculo.
2.2. Aplicaciones de almacenamiento masivo.
2.3. Aplicaciones exigentes comunicacionalmente.
2.4. Sistemas de sistemas.
- Organización de procesadores.
3.1. Bus y ethernet.
3.2. Mallas.
3.3. Mariposa (butterfly).
3.4. Árboles binarios.
3.5. Pirámides.
3.6. Hipercubo.
3.7. Omega.
3.8. Fibras de interconexión.
3.9. Resumen sobre la organización de procesadores.
- Modelos de computación paralela.
4.1. Arreglos de procesadores.
4.1.1. Procesador vectorial Pipelined.
4.1.2. Arreglos de procesadores.
4.2. Multiprocesadores.
4.2.1. Multiprocesadores de Acceso Uniforme a Memoria (UMA: Uniform Memory Access).
4.2.2. Multiprocesadores de Acceso No-Uniforme a Memoria (NUMA: Non-Uniform Memory Access).
4.3. Multicomputadores.
4.4. Máquinas de memoria compartida distribuida.
4.5. Multiprocesadores multi-hebrados.
4.6. Clusters de PC's.
4.6.1. Ventajas del uso de clusters de PC's para procesamiento paralelo.
4.6.2. Desventajas del uso de clusters de PC's para procesamiento paralelo.
4.7. Taxonomía de Flynn.
4.7.1. Single instruction stream, single data stream (SISD) SISD).
4.7.2. Single instruction stream, multiple data stream (SIMD) SIMD).
4.7.3. Multiple instruction stream, single data stream (MISD) MISD).
4.7.4. Multiple instruction stream, multiple data stream (MIMD).
4.7.4.1. Single program, multiple data (SPMD).
4.8. El IBM scalable power parallel system (SP2).
4.9. La SGI ORIGIN 2000.
- Diseño de algoritmos paralelos.
5.1. Partición.
5.2. Comunicación.
5.3. Agrupación.
5.4. Asignación.
- Aceleración y eficiencia.
6.1. Ley de Amdahl (limite a la aceleración obtenible).
6.2. Aceleración superlineal.
6.3. Eficiencia.
6.4. Costo de comunicación.
- Herramientas.
- Ejemplos de programas paralelos.
8.1. Buffer limitado (memoria compartida).
8.2. Multiplicación de matrices (memoria compartida).
8.3. Fork join (memoria distribuida).
- Bibliografía.
- Sitios de interés en internet.