Difference between revisions of "Computación de alto rendimiento"

From Supercomputación y Cálculo Científico UIS
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
__NOTOC__
+
<div class="thumbnail img-thumbnail">http://wiki.sc3.uis.edu.co/images/a/a8/Logo_sc33.png</div>
 
+
<p>&nbsp;</p>Volver a  [[Cursos]]<div class="column clearfix"><div class="col-md-14"><div class="panel-body"><p>'''Computación de Alto Rendimiento - Código 24433'''</p><p><b>[https://sites.google.com/site/carlosjaimebh/ Carlos Jaime Barrios Hernandez, PhD.]</b> - (c b a r r i o s (@) u i s . e d u . c o )</p><p>Asistencia Técnica-Teórica:. Equipo SC3UIS </p>[[File:3-pi-cartoon.jpg|border|center]]</div></div></div>
<div class="thumbnail img-thumbnail">http://wiki.sc3.uis.edu.co/images/a/a8/Logo_sc33.png</div>  
+
==='''PRESENTACION DEL CURSO'''===
<p><div class="btn btn-primary"><i class="fa  fa-long-arrow-left"></i> [[Cursos]]</div></p>
 
 
<div class="column clearfix">
 
<div class="column clearfix">
    <div class="col-md-14">
+
La computación de alto rendimiento, como su nombre lo indica es aquella que esta destinada a tratar grandes volumenes de datos, grandes y complejos cálculos científicos, en tiempos aceptables, medibles, con una precisión adecuada al problema (muy grande), permitiendo ahorrar energía y compartir. Desde el punto de vista de las ciencias computacionales e ingeniería computacional (y afines),  implica muchas cosas relacionadas que van más allá de las aplicaciones y la cantidad de datos: como la tecnología, aspectos relacionados con el medio ambiente y los costos, paradigmas de programación y de diseño/organización de arquitecturas computacionales (hardware/software) y por supuesto matemática.
        <div class="well well-midnight">
 
                <h5>Computación de alto rendimiento - Código 24433</h5>
 
        </div>
 
    </div>
 
</div>
 
  
<div class="col-md-14">
+
Este es un curso dirigido a estudiantes de postgrado, que si bien puede compararse en contenido con el curso [http://wiki.sc3.uis.edu.co/index.php/Introducci%C3%B3n_a_la_programaci%C3%B3n_paralela Introducción a la programación paralela] el enfoque es hacia estudiantes de master y doctorado en ciencias computacionales y afines, haciendo énfasis en la obtención de altas prestaciones, y en el soporte hacia la solución de problemas científicos multidisciplinarios, desde un enfoque computacional.
    <div class="panel panel-darker-white-border">
 
        <div class="panel-heading">
 
            <h3 class="panel-title">Profesor</h3>
 
        </div>
 
        <div class="panel-body">
 
            <p><b>[https://sites.google.com/site/carlosjaimebh/ Carlos Jaime Barrios Hernandez, PhD.]</b> - (cbarrios@uis.edu.co)</p>           
 
        </div>
 
    </div>
 
 
</div>
 
</div>
 
+
==='''Contenido'''===
 
<div class="col-md-14">
 
<div class="col-md-14">
    <div class="panel panel-darker-white-border">
+
#Introducción a la Computación de Alto Rendimiento y Cálculo Científico
        <div class="panel-heading">
+
#*Altas Prestaciones y Alta Demanda Computacional
            <h3 class="panel-title">PRESENTACION</h3>
+
#*Computación Científica y de Alto Rendimiento
        </div>
+
#*Evolución de la Computación de Alto Rendimiento
        <div class="panel-body">
+
#*El Top500 y otros rankings
            <p>El término Computación de Alto Rendimiento o Computación de Alto Desempeño esta relacionado con el cómputo para el tratamiento de problemas de gran reto, que a su vez, son aquellos problemas que requieren arquitecturas escalables de cómputo para su tratamiento. La computación de alto rendimiento es igualmente entendida como supercomputación o computación avanzada, debido a sus caracteristicas propias que la hacen ubicar "mas allá" del contexto normal y temporal de la computación.</p>
+
#Arquitecturas Paralelas y Sistemas Escalables
            <p>Este curso para maestria en informática, ofrece un "estado del arte" de la computación de alto rendimiento y direcciones futuras desde dos puntos de vista especificos, pero muy relacionados entre si: arquitectural y aplicativo. Este último muy ligado con el cálculo científico. </p>
+
#*Modelos de Máquinas  y Ejecución Paralelas
        </div>
+
#*Paralelismo y Comunicación
    </div>
+
#*Caracterización de Flynn
 +
#*Multinucleos y Multiprocesamiento
 +
#*Procesamiento Vectorial
 +
#*Arquitecturas para el Procesamiento Masivamente Paralelo (Manycores)
 +
#*Modelos de Memoria
 +
#**Jerarquia de Memoria
 +
#*Sistemas Distribuidos de Gran Escala
 +
#*Unidades de Procesamiento Tensor
 +
#*Unidades de Procesamiento Cuántico
 +
#*Sistemas Operativos, Sistemas de Archivos, Calendarización y Monitoreo en Arquitecturas Paralelas
 +
#**Aspectos especiales de Linux y Slurm
 +
#*Algunos aspectos relacionados con CAPEX y Ambientes de Implementación de Plataformas
 +
#**Energia y Temperatura
 +
#**Seguridad y Comodidad
 +
#Algoritmos Concurrentes y Paralelos
 +
#*Caracterización de Paralelismo
 +
#*Granularidad
 +
#*Multihilos y Multiprocesos
 +
#*Modelos de Computación (RAM, PRAM, Sorting Networks, BSP, LogP y otros)
 +
#*Modelos de Algoritmos Concurrentes
 +
#**Descomposición de Tareas
 +
#**Descomposición de Datos
 +
#**Dividir y Conquistar
 +
#**Tuberias (Pipeline)
 +
#**Recursividad y Otros (Embarrassingly Parallelism y Otros)
 +
#*Algoritmos No Paralelos
 +
#*Balanceo de Carga y Calendarización (Scheduling)
 +
#*Algunos Aspectos Importantes de Comunicación
 +
#Paradigmas y Modelos de Programación Paralela
 +
#*Ambientes de Programación Paralela
 +
#*Modelo de Programación de Memoria Compartida
 +
#**OpenMP
 +
#*Modelo de Programación de Memoria Distribuída
 +
#**Paso de Mensajes con MPI
 +
#*Modelo Programación de Memoria Híbrida/Heterogénea
 +
#**Programación de Sistemas CPU-GPU (Sistemas GPGPU)
 +
#***Fundamentos de Programación de GPUs y Múltiples GPU con CUDA
 +
#*Uso de Directivas de Aceleración con OpenACC
 +
#*Otros Mecanismos de Implementación y Aceleración de Aplicaciones
 +
#*Aspectos Importantes de Comunicación, Balanceo de Carga y Tolerancia a Fallos desde la Implementación
 +
#*Implementaciones hibridas
 +
#**OpenMP + MPI
 +
#**CUDA + MPI
 +
#Optimización
 +
#*Optimización Local y Global Paralela
 +
#Evaluación de Desempeño
 +
#*Latencia y Throughput
 +
#*Speedup (Aceleración), Eficiencia y Escalabilidad
 +
#*Ley de Amhdal
 +
#*Ley de Gustaffon-Barsis
 +
#*Complejidad Asimptótica (Aceleración y Eficiencia)
 +
#*Modelo de Little
 +
#*Análisis de Rendimiento y Tunning (Ajuste)
 +
#Debugging and Profiling
 +
#*Consideraciones de Debugging y Monitoreo de Rendimiento y Comportamiento
 +
#*Herramientas para el Debugging y el Profling
 +
#Lineamientos para el Desarrollo de Aplicaciones Paralelas
 +
#*Patrones para el Flujo de Control y de Ejecución
 +
#*Patrones para la Administración de Datos
 +
#*Espacios de Diseño y Desarrollo de Programas Paralelos
 +
#**Búsqueda de Explotación de Concurrencia
 +
#**Diseño de Estructura de Algoritmo
 +
#**Selección de Estructuras de Soporte de Algoritmos Paralelos
 +
#**Selección de Mecanismos de Implementación
 +
#Direcciones y Tendencias en Programación Paralela
 +
#*Exascale
 +
#*Explotación de Unidades Tensor y Aplicaciones Emergentes
 +
#*Visualizacióm
 +
#*Explotación de Memoria
 +
#*Paradigmas de Programación Emergentes
 +
#*Computación Cuántica
 +
#*Tecnologías de ruptura computacional
 
</div>
 
</div>
 +
==='''Evaluación'''===
 +
====='''Evaluaciones programadas para el 1er Semestre de 2021'''=====
 +
El objetivo este semestre, es que el desarrollo del curso contribuya a tratar alguno de los aspectos de su proyecto de investigación de postgrado, o algún proyecto relacionado. La evaluación se dará en tres fases:
  
<div class="col-md-14">
+
# '''FASE 1:''' Presentación de la propuesta a realizar.
    <div class="panel panel-darker-white-border">
+
# '''FASE 2: Desarrollo de la propuesta.'''
        <div class="panel-heading">
+
# '''FASE 3: Presentación de la propuesta como un poster digital'''
            <h3 class="panel-title">Contenido</h3>
 
        </div>
 
        <div class="panel-body">
 
<ol>
 
<li>Introducción al Cómputo de Alto Rendimiento y Cálculo Científico</li>
 
<ul>
 
<li>Cómputo de Alto Rendimiento y e-Ciencia: El paradigma del Tratamiento Intensivo de Datos
 
<li>e-Interacción y Arquitecturas Escalables (Y de Gran Escala)
 
<li>Cómputo de Alto Rendimiento (HPC), Computo de Alta Demanda (HTC), Computación Voluntaria y otras tendencias.
 
</ul>
 
  
<li>Arquitecturas Escalables: Paralelismo y Distribución</li>
+
Por adicional, se tiene en cuenta la participación en todas las sesiones.
 +
<br />
 +
==='''Bibliografía y Fuentes de Información'''===
 +
<div class="col-md-14"><div class="panel panel-darker-white-border"><ul><li>Elements of Parallel Computing, Eric Aubanel (Chapman & Hall/CRC)</li><li>Essentials of Computer Architecture, D. Comer (CRC Press)</li><li>High Performance Embedded Computing: Applications in Cyber-Physical systems and Mobile Computing, M. Wolf (Morgan Kaufmann)</li><li>[http://research.microsoft.com/en-us/collaboration/fourthparadigm/ The Fourth Paradigm: Data-Intensive Scientific Discovery]</li><li>[http://www.mcs.anl.gov/~itf/dbpp/ Designing and Building Parallel Programs, by Ian Foster]</li><li>[http://www.cise.ufl.edu/research/ParallelPatterns/ Patterns for Parallel Programming, by Timothy G. Mattson, Beverly A. Sanders and Berna L. Massingill. Software Patterns Series, Addison Wesley Ed., USA. 2009]</li><li>Patterns for Parallel Software Design, Jorge Luis Ortega-Arjona (Wiley)</li><li>Structured Parallel Programming: Patterns for Efficient Computation, M. McCool, A. D. Robison and J. Reinders (Morgan Kaufmann)</li><li>The Art of Concurrency “A thread Monkey’s Guide to Writing Parallel Applications”, by Clay Breshears (Ed. O Reilly, 2009)</li><li>Parallel Scientific Computing in C++ and MPI « A Seamless Approach to Parallel Algorithms and Their Implementation », Karniadakis and Kirby II (Cambridge Press)</li><li>Parallel And Distributed Computation Numerical Methods, D. P. Bertsekas and J. N. Tsitsiklis (Prentice Hall)</li><li>An Introduction to High Performance Scientific Computing, Scientific and Engineering Computation Series, Ll. D. Fosdick, E. R. Jessup, C. J. C. Schauble and G. Dmik (MIT Press)</li><li>The Algorithms Design Manual, S. S. Skiena ( Springer)</li><li>Algorithms Sequential and Parallel « A Unified Approach » Miller and Boxer (Computing Engineering Series)</li><li>Parallel Algorithms, Cassanova, Legrand and Robert (Chapman and Hall/CRC)</li><li>Fundamentals of Multicore Software Development, Ed. Victor Pankratius, Ali-Reza Adl-Tabatabai and Walter Tichy (CRC Press)</li><li>Introduction to HPC with MPI for Data Science, Frank Nielsen (Springer)</li><li>Programming Massively Parallel Processors « A Hands-on Approach » , Kirk and Hwu (Nvidia/Morgan Kaufmann)</li><li>CUDA Application Design and Development, Rob Farber (Nvidia/Morgan Kaufmann)</li><li>Introduction to High Performance Computing for Scientists and Engineers, Hager and Wellein (Chapman and Hall/CRC)</li><li>Sourcebook of Parallel Computing , Dongarra, Foster, Fox, Groop, Kennedy, Torczon and White (Morgan Kaufmann)</li><li>CUDA Programming: A Developer's Guide to Parallel Computing with GPUs, S. Cook (Morgan Kaufmann)</li><li>The CUDA Handbook: A Comprehensive Guide to GPU Programming, N. Wilt (Addison-Wesley)</li><li>CUDA by Example « An Introduction to General-Purpose GPU Programming » Sanders and Kandrot (Nvidia/Addison Wesley)</li><li>CUDA Fortran for Scientists and Engineers: Best Practices for Efficient CUDA Fortran Programming, G. Ruetsch and M. Fatica (Morgan Kaufmann/PGI/Nvidia)</li><li>HPC@Green IT: Green High Performance Computing Methods, R. Gruber and V. Keller (Springer)</li><li>OpenACC for Programmers: Concepts and Strategies, S. Chandraserkaran and G. Juckeland (Addison-Wesley)</li><li>OpenACC: Parallel Programming with OpenACC, Edited by Rob Farber (Morgan Kaufmann)</li><li>High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches, J. Reinders and J. Jeffers (Morgan Kaufmann)</li><li>[https://www.openmp.org/ OpenMP]</li><li>[https://www.openacc.org/ OpenACC]</li><li>[http://developer.nvidia.com/ NVIDIA]</li><li>[http://www.sc3.uis.edu.co/ SC3]</li><li>[http://www.red-ricap.org/ RICAP]</li><li>[https://computing.llnl.gov/tutorials/parallel_comp/ Computing.llnl.gov]</li><li>[http://www.sc-camp.org/ SC-Camp]</li></ul></div>
  
<ul>
+
==='''MATERIAL DEL CURSO Y PRESENTACIONES DE LAS SESIONES'''===
<li>Arquitectura General de Sistemas</li>
 
<li>Taxonomía de Flynn</li>
 
<li>Algunos Aspectos de Medidas de Rendimiento: Ley de Amhdal y otros</li>
 
<li>Procesadores Multicore</li>
 
<li>Maquinas Paralelas</li>
 
<ul>
 
<li>Máquinas de Memoria Compartida</li>
 
<li>Máquinas de Memoria Distribuida</li>
 
<li>Máquinas Híbridas (Sistemas Híbridos)</li>
 
</ul>
 
<li>Sistemas Distribuídos de Gran Escala</li>
 
<ul>
 
<li>Grid Computing</li>
 
<li>Cloud Computing</li>
 
</ul>
 
<li>Un Caso Especial: Computadores Cuánticos</li>
 
<li>Redes de Alta Velocidad o de Alto Rendimiento</li>
 
<ul>
 
<li>Caracteristicas Especiales de Rendimiento</li>
 
<li>Topologías y Estrategias (Buses, Swiches, fan-tree networks, Mesh, Híbridas)</li>
 
<li>Algunos Casos Concretos (Infiniband, Gigabit Ethernet, Myrinet)</li>
 
</ul>
 
</ul>
 
<li>Diseño y Desarrollo de Aplicaciones</li>
 
<ul>
 
<li>Introducción a las Técnicas de Optimización de Códigos Seriales</li>
 
<li>Concurrencia y Paralelismo</li>
 
<li>Modelo General de Diseño de Algoritmos Paralelos</li>
 
<li>LIneamientos para el Diseño y Desarrollo de Aplicaciones Paralelas y Concurrentes</li>
 
<li>Modelos de Programación Paralela</li>
 
<ul>
 
<li>Programación de Memoria Compartida</li>
 
<li>Programación de Memoria Distribuida - Paso de Mensajes</li>
 
<li>Paralelizacion Hibrida</li>
 
<ul>
 
<li>Máquinas Masivamente Paralelas y Aceleradores</li>
 
<li>Multicores + Nodos usando OpenMP y MPI</li>
 
</ul>
 
</ul>
 
</ul>
 
<li>e-Interacción de Alto Rendimiento</li>
 
<ul>
 
<li>Introducción a la e-Interaccion</li>
 
<li>Introducción a la Informatica Ambiente</li>
 
</ul>
 
<li>Tendencias, Direcciones, Problemas Abiertos desde la Supercomputación hasta la Computación Extrema (Retos Técnicos, Científicos, Económicos, Ambientales y Sociales)</li>
 
</ol>
 
  
 +
#Introducción a las Arquitecturas Escalables
 +
##[[:File:ArchiParSca.pdf|Parte 1]]
 +
##[[:File:ArchiParSca2.pdf|Parte 2]]
  
         
+
*[[:File:Tutorial Linux.pdf|Introducción Linux]]
        </div>
+
*[[:File:slurm.pdf|Simple Linux Utility for Resource Management]]
    </div>
+
*[[:File:MemCompOpenMP2.pdf|Shared Memory Programming with OpenMP]] (In Spanish/En Español)
</div>
+
*[[:File:SharedMPI14c.pdf|Distributed Memory Exploitation with MPI: An Introduction]]
 +
*Hybrid/Heterogeneous Computing
 +
**[[:File:IntroGPUs.pdf|Introduction to GPU Computing]]
 +
**[[:File:IntroCUDA.pdf|Introduction to CUDA]]
 +
**[[:File:IntroOpenACC.pdf|Introduction to OpenACC]]
  
<div class="col-md-14">
 
    <div class="panel panel-darker-white-border">
 
        <div class="panel-heading">
 
            <h3 class="panel-title">MATERIAL DEL CURSO</h3>
 
        </div>
 
        <div class="panel-body">
 
            <ul>
 
                <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/KeZaxEiiqARINLl Sesión 1]</li>
 
                <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/hLho6HAyY5d5qpG Sesión 2]</li>
 
                <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/UxIdm098TpiuBIb Sesion 3]</li>
 
            </ul>                 
 
        </div>
 
    </div>
 
 
</div>
 
</div>
  
<div class="col-md-14">
+
==='''CONSULTA A ESTUDIANTES'''===
    <div class="panel panel-darker-white-border">
+
Los martes puede realizarse consulta en LP226 o en Supercomputación UIS 4to piso del CENTIC pero se recomienda solicitar cita por email previamente.
        <div class="panel-heading">
 
            <h3 class="panel-title">BIBLIOGRAFÍA Y FUENTES DE INFORMACION</h3>
 
        </div>
 
        <div class="panel-body">
 
            <ul>
 
                <li>[http://research.microsoft.com/en-us/collaboration/fourthparadigm/ The Fourth Paradigm: Data-Intensive Scientific Discovery]</li>
 
                <li>[http://www.mcs.anl.gov/~itf/dbpp/ Designing and Building Parallel Programs, by Ian Foster]</li>
 
                <li>[http://www.cise.ufl.edu/research/ParallelPatterns/ Patterns for Parallel Programming, by Timothy G. Mattson, Beverly A. Sanders and Berna L. Massingill. Software Patterns Series, Addison Wesley Ed., USA. 2009. ]</li>
 
                <li>The Art of Concurrency “A thread Monkey’s Guide to Writing Parallel Applications”, by Clay Breshears (Ed. O Reilly, 2009)]</li>
 
                <li>Parallel Scientific Computing in C++ and MPI « A Seamless Approach to Parallel Algorithms and Their Implementation », Karniadakis and Kirby II (Cambridge Press)]</li>
 
                <li>Algorithms Sequential and Parallel « A Unified Approach » Miller and Boxer (Computing Engineering Series)]</li>
 
                <li>Parallel Algorithms, Cassanova, Legrand and Robert (Chapman and Hall/CRC)]</li>
 
                <li>Programming Massively Parallel Processors « A Hands-on Approach » , Kirk and Hwu (Nvidia/Morgan Kaufmann)]</li>
 
                <li>Introduction to High Performance Computing for Scientists and Engineers, Hager and Wellein (Chapman and Hall/CRC)]</li>
 
                <li>Sourcebook of Parallel Computing , Dongarra, Foster, Fox, Groop, Kennedy, Torczon and White (Morgan Kaufmann)]</li>
 
                <li>CUDA by Example « An Introduction to General-Purpose GPU Programming » Sanders and Kandrot (Nvidia/Addison Wesley)]</li>
 
                <li>[http://developer.nvidia.com/ NVIDIA]</li>
 
                <li>[http://www.sc3.uis.edu.co SC3]</li>
 
                <li>[https://computing.llnl.gov/tutorials/parallel_comp/ Computing.llnl.gov]</li>
 
                <li>[http://www.sc-camp.org SC-Camp]</li>
 
            </ul>       
 
        </div>
 
    </div>
 
</div>
 

Latest revision as of 02:03, 19 March 2021

Logo_sc33.png

 

Volver a Cursos

Computación de Alto Rendimiento - Código 24433

Carlos Jaime Barrios Hernandez, PhD. - (c b a r r i o s (@) u i s . e d u . c o )

Asistencia Técnica-Teórica:. Equipo SC3UIS

3-pi-cartoon.jpg

PRESENTACION DEL CURSO

La computación de alto rendimiento, como su nombre lo indica es aquella que esta destinada a tratar grandes volumenes de datos, grandes y complejos cálculos científicos, en tiempos aceptables, medibles, con una precisión adecuada al problema (muy grande), permitiendo ahorrar energía y compartir. Desde el punto de vista de las ciencias computacionales e ingeniería computacional (y afines), implica muchas cosas relacionadas que van más allá de las aplicaciones y la cantidad de datos: como la tecnología, aspectos relacionados con el medio ambiente y los costos, paradigmas de programación y de diseño/organización de arquitecturas computacionales (hardware/software) y por supuesto matemática.

Este es un curso dirigido a estudiantes de postgrado, que si bien puede compararse en contenido con el curso Introducción a la programación paralela el enfoque es hacia estudiantes de master y doctorado en ciencias computacionales y afines, haciendo énfasis en la obtención de altas prestaciones, y en el soporte hacia la solución de problemas científicos multidisciplinarios, desde un enfoque computacional.

Contenido

  1. Introducción a la Computación de Alto Rendimiento y Cálculo Científico
    • Altas Prestaciones y Alta Demanda Computacional
    • Computación Científica y de Alto Rendimiento
    • Evolución de la Computación de Alto Rendimiento
    • El Top500 y otros rankings
  2. Arquitecturas Paralelas y Sistemas Escalables
    • Modelos de Máquinas y Ejecución Paralelas
    • Paralelismo y Comunicación
    • Caracterización de Flynn
    • Multinucleos y Multiprocesamiento
    • Procesamiento Vectorial
    • Arquitecturas para el Procesamiento Masivamente Paralelo (Manycores)
    • Modelos de Memoria
      • Jerarquia de Memoria
    • Sistemas Distribuidos de Gran Escala
    • Unidades de Procesamiento Tensor
    • Unidades de Procesamiento Cuántico
    • Sistemas Operativos, Sistemas de Archivos, Calendarización y Monitoreo en Arquitecturas Paralelas
      • Aspectos especiales de Linux y Slurm
    • Algunos aspectos relacionados con CAPEX y Ambientes de Implementación de Plataformas
      • Energia y Temperatura
      • Seguridad y Comodidad
  3. Algoritmos Concurrentes y Paralelos
    • Caracterización de Paralelismo
    • Granularidad
    • Multihilos y Multiprocesos
    • Modelos de Computación (RAM, PRAM, Sorting Networks, BSP, LogP y otros)
    • Modelos de Algoritmos Concurrentes
      • Descomposición de Tareas
      • Descomposición de Datos
      • Dividir y Conquistar
      • Tuberias (Pipeline)
      • Recursividad y Otros (Embarrassingly Parallelism y Otros)
    • Algoritmos No Paralelos
    • Balanceo de Carga y Calendarización (Scheduling)
    • Algunos Aspectos Importantes de Comunicación
  4. Paradigmas y Modelos de Programación Paralela
    • Ambientes de Programación Paralela
    • Modelo de Programación de Memoria Compartida
      • OpenMP
    • Modelo de Programación de Memoria Distribuída
      • Paso de Mensajes con MPI
    • Modelo Programación de Memoria Híbrida/Heterogénea
      • Programación de Sistemas CPU-GPU (Sistemas GPGPU)
        • Fundamentos de Programación de GPUs y Múltiples GPU con CUDA
    • Uso de Directivas de Aceleración con OpenACC
    • Otros Mecanismos de Implementación y Aceleración de Aplicaciones
    • Aspectos Importantes de Comunicación, Balanceo de Carga y Tolerancia a Fallos desde la Implementación
    • Implementaciones hibridas
      • OpenMP + MPI
      • CUDA + MPI
  5. Optimización
    • Optimización Local y Global Paralela
  6. Evaluación de Desempeño
    • Latencia y Throughput
    • Speedup (Aceleración), Eficiencia y Escalabilidad
    • Ley de Amhdal
    • Ley de Gustaffon-Barsis
    • Complejidad Asimptótica (Aceleración y Eficiencia)
    • Modelo de Little
    • Análisis de Rendimiento y Tunning (Ajuste)
  7. Debugging and Profiling
    • Consideraciones de Debugging y Monitoreo de Rendimiento y Comportamiento
    • Herramientas para el Debugging y el Profling
  8. Lineamientos para el Desarrollo de Aplicaciones Paralelas
    • Patrones para el Flujo de Control y de Ejecución
    • Patrones para la Administración de Datos
    • Espacios de Diseño y Desarrollo de Programas Paralelos
      • Búsqueda de Explotación de Concurrencia
      • Diseño de Estructura de Algoritmo
      • Selección de Estructuras de Soporte de Algoritmos Paralelos
      • Selección de Mecanismos de Implementación
  9. Direcciones y Tendencias en Programación Paralela
    • Exascale
    • Explotación de Unidades Tensor y Aplicaciones Emergentes
    • Visualizacióm
    • Explotación de Memoria
    • Paradigmas de Programación Emergentes
    • Computación Cuántica
    • Tecnologías de ruptura computacional

Evaluación

Evaluaciones programadas para el 1er Semestre de 2021

El objetivo este semestre, es que el desarrollo del curso contribuya a tratar alguno de los aspectos de su proyecto de investigación de postgrado, o algún proyecto relacionado. La evaluación se dará en tres fases:

  1. FASE 1: Presentación de la propuesta a realizar.
  2. FASE 2: Desarrollo de la propuesta.
  3. FASE 3: Presentación de la propuesta como un poster digital

Por adicional, se tiene en cuenta la participación en todas las sesiones.

Bibliografía y Fuentes de Información

  • Elements of Parallel Computing, Eric Aubanel (Chapman & Hall/CRC)
  • Essentials of Computer Architecture, D. Comer (CRC Press)
  • High Performance Embedded Computing: Applications in Cyber-Physical systems and Mobile Computing, M. Wolf (Morgan Kaufmann)
  • The Fourth Paradigm: Data-Intensive Scientific Discovery
  • Designing and Building Parallel Programs, by Ian Foster
  • Patterns for Parallel Programming, by Timothy G. Mattson, Beverly A. Sanders and Berna L. Massingill. Software Patterns Series, Addison Wesley Ed., USA. 2009
  • Patterns for Parallel Software Design, Jorge Luis Ortega-Arjona (Wiley)
  • Structured Parallel Programming: Patterns for Efficient Computation, M. McCool, A. D. Robison and J. Reinders (Morgan Kaufmann)
  • The Art of Concurrency “A thread Monkey’s Guide to Writing Parallel Applications”, by Clay Breshears (Ed. O Reilly, 2009)
  • Parallel Scientific Computing in C++ and MPI « A Seamless Approach to Parallel Algorithms and Their Implementation », Karniadakis and Kirby II (Cambridge Press)
  • Parallel And Distributed Computation Numerical Methods, D. P. Bertsekas and J. N. Tsitsiklis (Prentice Hall)
  • An Introduction to High Performance Scientific Computing, Scientific and Engineering Computation Series, Ll. D. Fosdick, E. R. Jessup, C. J. C. Schauble and G. Dmik (MIT Press)
  • The Algorithms Design Manual, S. S. Skiena ( Springer)
  • Algorithms Sequential and Parallel « A Unified Approach » Miller and Boxer (Computing Engineering Series)
  • Parallel Algorithms, Cassanova, Legrand and Robert (Chapman and Hall/CRC)
  • Fundamentals of Multicore Software Development, Ed. Victor Pankratius, Ali-Reza Adl-Tabatabai and Walter Tichy (CRC Press)
  • Introduction to HPC with MPI for Data Science, Frank Nielsen (Springer)
  • Programming Massively Parallel Processors « A Hands-on Approach » , Kirk and Hwu (Nvidia/Morgan Kaufmann)
  • CUDA Application Design and Development, Rob Farber (Nvidia/Morgan Kaufmann)
  • Introduction to High Performance Computing for Scientists and Engineers, Hager and Wellein (Chapman and Hall/CRC)
  • Sourcebook of Parallel Computing , Dongarra, Foster, Fox, Groop, Kennedy, Torczon and White (Morgan Kaufmann)
  • CUDA Programming: A Developer's Guide to Parallel Computing with GPUs, S. Cook (Morgan Kaufmann)
  • The CUDA Handbook: A Comprehensive Guide to GPU Programming, N. Wilt (Addison-Wesley)
  • CUDA by Example « An Introduction to General-Purpose GPU Programming » Sanders and Kandrot (Nvidia/Addison Wesley)
  • CUDA Fortran for Scientists and Engineers: Best Practices for Efficient CUDA Fortran Programming, G. Ruetsch and M. Fatica (Morgan Kaufmann/PGI/Nvidia)
  • HPC@Green IT: Green High Performance Computing Methods, R. Gruber and V. Keller (Springer)
  • OpenACC for Programmers: Concepts and Strategies, S. Chandraserkaran and G. Juckeland (Addison-Wesley)
  • OpenACC: Parallel Programming with OpenACC, Edited by Rob Farber (Morgan Kaufmann)
  • High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches, J. Reinders and J. Jeffers (Morgan Kaufmann)
  • OpenMP
  • OpenACC
  • NVIDIA
  • SC3
  • RICAP
  • Computing.llnl.gov
  • SC-Camp

MATERIAL DEL CURSO Y PRESENTACIONES DE LAS SESIONES

  1. Introducción a las Arquitecturas Escalables
    1. Parte 1
    2. Parte 2

CONSULTA A ESTUDIANTES

Los martes puede realizarse consulta en LP226 o en Supercomputación UIS 4to piso del CENTIC pero se recomienda solicitar cita por email previamente.