Difference between revisions of "Introducción a la programación paralela"

From Supercomputación y Cálculo Científico UIS
(Contenido)
(Evaluación)
 
(36 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
Volver a  [[Cursos]]
 
Volver a  [[Cursos]]
__NOTOC__<div class="column clearfix">
+
 
     <div class="col-md-14"><div class="panel-body">
+
__NOTOC__
            <p>'''Introducción a la Programación Paralela - Código 28661'''</p><p></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óric:. Equipo SC3UIS y CAGE</p>[[File:NoThanksButWereBusy.png|border|center|630x630px]]</div></div></div>
+
 
 +
=== '''Introducción a la Programación Paralela - Código 28661''' ===
 +
<div class="column clearfix">
 +
     <div class="col-md-14"><div class="panel-body"><p></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óric:. Equipo SC3UIS y CAGE</p>[[File:NoThanksButWereBusy.png|border|center|630x630px]]</div></div></div>
  
 
=== '''PRESENTACION DEL CURSO''' ===
 
=== '''PRESENTACION DEL CURSO''' ===
Line 18: Line 21:
 
#* Elementos de Paralelismo  
 
#* Elementos de Paralelismo  
 
#* Evolución de la Computación Paralela  
 
#* Evolución de la Computación Paralela  
 +
#* Computación de Alto Rendimiento (HPC)
 
# Arquitecturas Paralelas y Sistemas Escalables
 
# Arquitecturas Paralelas y Sistemas Escalables
 
#* Modelos de Máquinas Paralelas
 
#* Modelos de Máquinas Paralelas
Line 31: Line 35:
 
#* Unidades de Procesamiento Tensor  
 
#* Unidades de Procesamiento Tensor  
 
#* Unidades de Procesamiento Cuántico  
 
#* Unidades de Procesamiento Cuántico  
 +
#* Sistemas Operativos, Sistemas de Archivos, Calendarización y Monitoreo en Arquitecturas Paralelas
 +
#** Aspectos especiales de Linux y Slurm
 +
#* Top500 y Otros Rankings
 
# Algoritmos Concurrentes y Paralelos
 
# Algoritmos Concurrentes y Paralelos
 
#* Caracterización de Paralelismo
 
#* Caracterización de Paralelismo
Line 54: Line 61:
 
#*** Fundamentos de Programación de GPUs y Múltiples GPU con CUDA
 
#*** Fundamentos de Programación de GPUs y Múltiples GPU con CUDA
 
#* Uso de Directivas de Aceleración con OpenACC
 
#* Uso de Directivas de Aceleración con OpenACC
 +
#* Otros Mecanismos de Implementación y Aceleración de Aplicaciones
 
# Optimización
 
# Optimización
 
#* Optimización Local y Global Paralela
 
#* Optimización Local y Global Paralela
Line 76: Line 84:
 
#** Selección de Mecanismos de Implementación
 
#** Selección de Mecanismos de Implementación
 
# Direcciones y Tendencias en Programación Paralela
 
# Direcciones y Tendencias en Programación Paralela
#* Eficiencia Computacional Hoy (Consumo Energético/Procesamiento)
+
#* HPC@Green: Eficiencia Computacional Hoy (Consumo Energético/Procesamiento)
 
#* Explotación de Unidades Tensor y Aplicaciones Emergentes
 
#* Explotación de Unidades Tensor y Aplicaciones Emergentes
 
#* Extracción de Paralelismo en Códigos Secuenciales
 
#* Extracción de Paralelismo en Códigos Secuenciales
Line 85: Line 93:
 
=== '''Evaluación''' ===
 
=== '''Evaluación''' ===
  
===== '''Evaluaciones programadas para el 2do Semestre de 2018''' =====
+
===== '''Evaluaciones programadas para el 1er Semestre de 2019''' =====
* '''Evaluación Inicial:''' 20% Evaluación Escrita de Fundamentos (Individual), Unidades 1 a la 3. : Martes 4 de Diciembre de 2018 de 7:00 a 9:00   
+
 
* '''Evaluación Dos''': 30% Participación en el [http://www.ccarla.org #CARLA2018(Domingo 23 al Viernes 28 de Septiembre de 2018) de la siguiente manera:
+
* '''Evaluación Inicial:''' 25% Evaluación Escrita de Fundamentos (Individual), Unidades 1 a la 3. : Lunes 20 de Mayo de 2019 de 7:00 a 9:00   
** Participación en al menos un tutorial
+
Esta evaluación se ha repartido por parejas, con una asignación dada por el profesor en la cual se busca evaluar el grado de comprensión de las unidades uno a la tres, de acuerdo a lo visto en clase, principalmente aquello que tiene que ver con la comprensión de la terminología. Deberá enviarse la respuesta por correo electrónico hasta el dia martes 21 de mayo a las 10:59 (Diez y cincuenta y nueve de la mañana), con el asunto del correo EVALUACIÓN 1 - PROCESAMIENTO EN PARALELO, en un archivo .pdf con los apellidos de las parejas (por ejemplo, si las parejas están dadas por Beatriz Perez y Juan Diaz, el archivo deberá nombrarse como PerezDiaz.pdf ). En el texto del mensaje y en el archivo deben estar los nombres completos y sus códigos. RECUERDEN QUE PARA VER LOS ARTICULOS Y DESCARGARLOS DEBEN ESTAR EN LA UNIVERSIDAD Y USAR LOS DERECHOS DE CONSULTA DADOS POR LA BIBLIOTECA DE LA UNIVERSIDAD.
** Participación en al menos uno de los workshops
+
 
** Participación en el cuerpo central de la conferencia
+
'''Asignaciones:'''
DEBE PRESENTAR EL CERTIFICADO DE PARTICIPACIÓN DE CADA UNA DE LAS ACTIVIDADES el martes 2 de octubre. Los matriculados en el curso están exonerados del pago de registro e inscripción.
+
* '''Pareja 1 ( 2130069 - VASQUEZ ALCOCER BRANDOM y 2092028 - GUERRERO HERNANDEZ LENIN EDUARDO)''': [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7878935 The End of Moore’s Law: A New Beginning for Information TechnologyPregunta 5: Teniendo en cuenta lo expuesto por los autores, ¿ Que cree que vendrá después del fin de la Era Computacional de Moore? Justifique su respuesta.
* '''Evaluación Tres''': 20% Taller de Evaluación de Programación Paralela (Individual): Martes 23 de Octubre de 2018 de 7:00 a 9:00
+
 
* '''Evaluación Final:''' 30% Proyecto de Aplicación Final: Presentación: Martes 4 de Diciembre de 2018 de 7:00 a 9:00
+
* '''Pareja 2 (2142640 - SIERRA JEREZ FRANKLIN SAMUEL y 2142632 - GUTIERREZ GUATE YESID ALFONSO )''' [http://www.trp.org.in/wp-content/uploads/2015/10/AJCST-Vol.4.No_.1-Jan-June-2015-pp.8-13.pdf Review of the Parallel Computing  and Its Challenges on the Multicore Processors] Pregunta 5: Teniendo en cuenta el recorrido de sus estudios, ¿Cual es la principal debilidad que tiene para enfrentar los retos en computación paralela y como los solventaria? Justifique su respuesta.
 +
 
 +
* '''Pareja 3 (2101921 - LOZANO CARVAJAL CAMILO ANDRES y 2150422 - RANGEL PIESCHACON EDGAR YESID)''' : [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.278.6707&rep=rep1&type=pdf Heterogeneous Computing: Goals, Methods, and]  [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.278.6707&rep=rep1&type=pdf Open Problems] Pregunta 5: ¿Cual otro problema abierto cree que habría en este tipo de computación que no fue tratada por los autores? Justifique su respuesta.
 +
 
 +
* T'''río ( 2142657 - PARRA BASTOS LIZETH PAOLA, 2160075 - MOGOTOCORO FAJARDO JORGE ANDRES y 2141414 - MANRIQUE MUÑOZ YHOAN SEBASTIAN)'''  [https://www.researchgate.net/publication/281294525_Exascale_Machines_Require_New_Programming_Paradigms_and_Runtimes Exascale Machines Requires New Programming Paradigms and Runtimes] Pregunta 5: Teniendo en cuenta este tipo de máquinas exascale, ¿que ve que esta pasando hoy en día y desde el punto de vista de programación, como se ha tratado estos retos? Justifique su respuesta.
 +
 
 +
'''Preguntas:'''
 +
# Analicé el artículo asignado con su compañero y presente una síntesis del mismo en no  más de 15 líneas.
 +
# ¿Está de acuerdo con las conclusiones de los autores? Justifique su respuesta.
 +
# Teniendo en cuenta el año de publicación, ¿La contribución dada en el artículo es válida aún o no? Justifique su respuesta.
 +
# A partir de la contribución dada por cada uno de los artículos, ¿Que podrían aportar ustedes? Justifique su respuesta.  (Si su respuesta es negativa, igual deben justificarlo).
 +
* '''Evaluación Dos''': 25% Taller DLI de Programación I en OPENACC/CUDA. Fecha Propuesta: Lunes 8 de Julio de 2019 de 7:00 a 9:00 DEBE ENVIAR EL CERTIFICADO A MAS TARDAR EL  15 DE JULIO DE 2019 AL CORREO DEL PROFESOR
 +
 
 +
* '''Evaluación Tres''': 25% Taller de Programación II  DLI de GPUs Fecha propuesta: Lunes 22 de Julio de 2019 de 2019 de 7:00 a 11:00  
 +
* '''Evaluación Final:''' 25% Proyecto de Aplicación Final (Por Parejas Asignadas por el Profesor): Presentación: Lunes 14 de Agosto de 2019 DE 7:00 a 11:00
 +
** Se asignará un problema a desarrollar y tratar por parejas que deberá presentarse y se tendrán en cuenta los siguientes elementos:
 +
*** Análisis y Diseño del Algoritmo de Solución
 +
*** Calidad, Escalabilidad y Rendimiento de la Implementación (Selección de Paradigma de Programación)
 +
*** Análisis de Rendimiento y Optimización
 +
** Previa a la presentación de resultados deberá enviarse un reporte tipo articulo de no mayor de 8 páginas a doble columna y entregar los códigos fuente y las condiciones de ejecución de la aplicación, FECHA DE ENVIO: VIERNES 9 DE AGOSTO DE 2019 A LAS 13:59
 +
** La propuesta de solución debe ser claramente paralela y puede usar los recursos de Supercomputación y Cálculo Científico.
 +
** Nota importante: Si es basada en una solución paralela existente, esta debe ser citada y comprendida. Así mismo deberá presentarse una adecuación o una nueva versión propuesta donde se evidencie CLARAMENTE el aporte. En el caso de presentar soluciones en MPI, deberá usar claramente mínimo 4 nodos.
 +
 
 +
===== '''Grupos de Trabajo y Asignaciones 2-2018''' =====
 +
{| class="wikitable"
 +
!Grupo
 +
!Participantes
 +
!Descripción del Trabajo
 +
|-
 +
|1
 +
|'''2103657''' - ALVAREZ TEJADA GABRIEL DE JESUS
 +
 
 +
'''2122485''' - HERNANDEZ PABON JORGE ANDRES
 +
|'''Problema de N - Cuerpos (https://es.wikipedia.org/wiki/Problema_de_los_n_cuerpos<nowiki/>)'''
 +
 
 +
El problema de N-Cuerpos es bien conocido y básicamente lo que trata es determinar los movimientos individuales de un grupo de partículas materiales siguiendo física newtoniana. Diferentes propuestas para realizar la simulación de n-cuerpos se encuentran implementadas, por ejemplo la que se encuentra en: http://www.new-npac.org/projects/cdroms/cewes-1999-06-vol2/cps615course/examples96/nbody-stuff/nbody.c
 +
 
 +
La asignación de este problema es realizar un código paralelo que permita la interacción de mínimo 1000 (mil) partículas en tres dimensiones. No se recomienda el uso de interpretadores. Bonus en nota: Si presenta gráficamente la simulación de los cuerpos.
 +
|-
 +
|2
 +
|'''2140180''' - LEON PEREZ FABIAN ANDRES
 +
 
 +
'''2151196''' - LOPEZ DURAN JHON EDINSON
 +
|'''Ecuación de Calor (https://es.wikipedia.org/wiki/Ecuaci%C3%B3n_del_calor<nowiki/>)'''
 +
 
 +
La ecuación del calor es una importante ecuación diferencial en derivadas parciales del tipo parabólica que describe la distribución del calor (o variaciones de la temperatura) en una región a lo largo del transcurso del tiempo. Dependiendo de las dimensiones a trabajar (siendo la más conocida en 2D) existen diferentes implementaciones como la que se encuentra en: https://people.sc.fsu.edu/~jburkardt/c_src/heated_plate/heated_plate.c
 +
 
 +
El objetivo que se busca en esta asignación es realizar un código paralelo que permita el análisis de la ecuación de calor de manera tridimensional en un cubo. No se recomienda el uso de interpretadores. Bonus de nota: Si se presenta gráficamente la simulación correspondiente a la solución.
 +
 
 +
|-
 +
|3
 +
|'''2143696''' - MANTILLA LOPEZ JUAN DAVID
 +
 
 +
'''2141354''' - OÑATE LIZARAZO LEYSTON ALEXANDER
 +
|'''Ecuación de Onda (https://es.wikipedia.org/wiki/Ecuaci%C3%B3n_de_onda<nowiki/>)'''
 +
 
 +
La ecuación de onda es una importante ecuación diferencial en derivadas parciales lineal de segundo orden que describe la propagación de una variedad de ondas, como las ondas sonoras, las ondas de luz y las ondas en el agua. Computacionalmente se encuentran soluciones para tratar la sumación y propagación, siendo muy conocidas aquellas que han sido implementadas por supuesto en una o dos dimensiones ( http://www.labbookpages.co.uk/audio/beamforming/waveSum.html o https://computing.llnl.gov/tutorials/parallel_comp/#ExamplesWave)
 +
 
 +
La asignación a este trabajo es proponer una solución paralela para la ecuación de onda en 2D. No se recomienda el uso de interpretadores. Bonus de nota: Si se presenta gráficamente la simulación correspondiente a la solución dada. 
 +
|}
  
 
=== '''Bibliografía y Fuentes de Información''' ===
 
=== '''Bibliografía y Fuentes de Información''' ===
Line 99: Line 166:
 
     <div class="panel panel-darker-white-border"><ul>
 
     <div class="panel panel-darker-white-border"><ul>
 
                 <li>Elements of Parallel Computing, Eric Aubanel (Chapman & Hall/CRC)</li>
 
                 <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>[http://research.microsoft.com/en-us/collaboration/fourthparadigm/ The Fourth Paradigm: Data-Intensive Scientific Discovery]
 
</li>
 
</li>
 
                 <li>[http://www.mcs.anl.gov/~itf/dbpp/ Designing and Building Parallel Programs, by Ian Foster]</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>[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>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 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>Parallel And Distributed Computation Numerical Methods, D. P. Bertsekas and J. N. Tsitsiklis (Prentice Hall)  
Line 113: Line 188:
 
                 <li>Algorithms Sequential and Parallel « A Unified Approach » Miller and Boxer (Computing Engineering Series) </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>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>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>CUDA Application Design and Development, Rob Farber (Nvidia/Morgan Kaufmann)  
Line 118: Line 197:
 
                 <li>Introduction to High Performance Computing for Scientists and Engineers, Hager and Wellein (Chapman and Hall/CRC) </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>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 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://developer.nvidia.com/ NVIDIA]</li>
 
                 <li>[http://www.sc3.uis.edu.co/ SC3]</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>[https://computing.llnl.gov/tutorials/parallel_comp/ Computing.llnl.gov]</li>
 
                 <li>[http://www.sc-camp.org/ SC-Camp]</li>
 
                 <li>[http://www.sc-camp.org/ SC-Camp]</li>
 
             </ul></div>
 
             </ul></div>
 
</div>
 
</div>
 +
 +
=== '''PRESENTACIONES DEL CURSO''' ===
 +
* [[:File:ArchiParSca.pdf|Arquitecturas Escalables y Paralelas I]]
 +
* [[:File:ArchiParSca2.pdf|Arquitecturas Escalables y Paralelas II]]
 +
* [[:File:slurm.pdf|Simple Linux Utility for Resource Management]]
 +
* [[:File:PP-ConcIntro.pdf|Concurrency and Paralellism]]
 +
* [[:File:MemCompOpenMP2.pdf|Shared Memory Programming with OpenMP]] (In Spanish/En Español)
 +
* [[:File:SharedMPI14c.pdf|Distributed Memory Exploitation with MPI: An Introduction]]
 +
 +
=== '''CONSULTA A ESTUDIANTES''' ===
 +
Los martes puede realizarse consulta en LP226 los dias martes de 13:30 a 16:00, pero se recomienda enviar email previamente para solicitar cita (correo del profesor).

Latest revision as of 16:00, 30 May 2019

Volver a Cursos


Introducción a la Programación Paralela - Código 28661

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óric:. Equipo SC3UIS y CAGE

NoThanksButWereBusy.png

PRESENTACION DEL CURSO

La ruptura tecnológica hace que la computación sea quizás el área del conocimiento más dinámico que existe y que no solo promueve tendencias sino también cambios sociales, desde que la información y su tratamiento no solo es una necesidad sino una exigencia. La computación paralela, si bien no es nada nuevo, como parte de esa "exigencia" permite la explotación de sistemas que desde hace más de treinta años están disponibles, pero que en algunos medios se ve aún como algo exótico, ignorando que gracias a esas posibilidades, desde poder escuchar música, hablar y tomar fotos de manera simultánea en un dispositivo móvil, pasando por pronosticar el clima o mercados, almacenar datos en la nube hasta la realidad de implementar soluciones y algoritmos de inteligencia artificial hoy, existe porque hay múltiples unidades de procesamiento que pueden ser programadas de manera paralela y concurrente.

El curso, que es introductorio, esta dirigido a estudiantes de ingeniería de sistemas y ciencias de la computación, cuyo principal objetivo es ofrecer fundamentos para la explotación de la concurrencia, la explotación de paradigmas de programación dirigidos al paralelismo, sin ignorar algunos conceptos arquitecturales necesarios para entender que soporta ese procesamiento en paralelo. A partir de este curso, los participantes manejaran la terminología necesaria igualmente y tendrán la base para a partir de allí seguir cursos avanzados y seminarios especializados.

Contenido

  1. Introducción a la Computación Paralela
    • Pensamiento Paralelo y Pervasibidad
    • Elementos de Paralelismo
    • Evolución de la Computación Paralela
    • Computación de Alto Rendimiento (HPC)
  2. Arquitecturas Paralelas y Sistemas Escalables
    • Modelos de Máquinas Paralelas
    • Modelos de Ejecución Paralela
    • 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
    • Top500 y Otros Rankings
  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)
  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
  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
    • HPC@Green: Eficiencia Computacional Hoy (Consumo Energético/Procesamiento)
    • Explotación de Unidades Tensor y Aplicaciones Emergentes
    • Extracción de Paralelismo en Códigos Secuenciales
    • Explotación de Memoria
    • Paradigmas de Programación Emergentes

Evaluación

Evaluaciones programadas para el 1er Semestre de 2019
  • Evaluación Inicial: 25% Evaluación Escrita de Fundamentos (Individual), Unidades 1 a la 3. : Lunes 20 de Mayo de 2019 de 7:00 a 9:00

Esta evaluación se ha repartido por parejas, con una asignación dada por el profesor en la cual se busca evaluar el grado de comprensión de las unidades uno a la tres, de acuerdo a lo visto en clase, principalmente aquello que tiene que ver con la comprensión de la terminología. Deberá enviarse la respuesta por correo electrónico hasta el dia martes 21 de mayo a las 10:59 (Diez y cincuenta y nueve de la mañana), con el asunto del correo EVALUACIÓN 1 - PROCESAMIENTO EN PARALELO, en un archivo .pdf con los apellidos de las parejas (por ejemplo, si las parejas están dadas por Beatriz Perez y Juan Diaz, el archivo deberá nombrarse como PerezDiaz.pdf ). En el texto del mensaje y en el archivo deben estar los nombres completos y sus códigos. RECUERDEN QUE PARA VER LOS ARTICULOS Y DESCARGARLOS DEBEN ESTAR EN LA UNIVERSIDAD Y USAR LOS DERECHOS DE CONSULTA DADOS POR LA BIBLIOTECA DE LA UNIVERSIDAD.

Asignaciones:

  • Pareja 3 (2101921 - LOZANO CARVAJAL CAMILO ANDRES y 2150422 - RANGEL PIESCHACON EDGAR YESID) : Heterogeneous Computing: Goals, Methods, and Open Problems Pregunta 5: ¿Cual otro problema abierto cree que habría en este tipo de computación que no fue tratada por los autores? Justifique su respuesta.
  • Trío ( 2142657 - PARRA BASTOS LIZETH PAOLA, 2160075 - MOGOTOCORO FAJARDO JORGE ANDRES y 2141414 - MANRIQUE MUÑOZ YHOAN SEBASTIAN) Exascale Machines Requires New Programming Paradigms and Runtimes Pregunta 5: Teniendo en cuenta este tipo de máquinas exascale, ¿que ve que esta pasando hoy en día y desde el punto de vista de programación, como se ha tratado estos retos? Justifique su respuesta.

Preguntas:

  1. Analicé el artículo asignado con su compañero y presente una síntesis del mismo en no más de 15 líneas.
  2. ¿Está de acuerdo con las conclusiones de los autores? Justifique su respuesta.
  3. Teniendo en cuenta el año de publicación, ¿La contribución dada en el artículo es válida aún o no? Justifique su respuesta.
  4. A partir de la contribución dada por cada uno de los artículos, ¿Que podrían aportar ustedes? Justifique su respuesta. (Si su respuesta es negativa, igual deben justificarlo).
  • Evaluación Dos: 25% Taller DLI de Programación I en OPENACC/CUDA. Fecha Propuesta: Lunes 8 de Julio de 2019 de 7:00 a 9:00 DEBE ENVIAR EL CERTIFICADO A MAS TARDAR EL 15 DE JULIO DE 2019 AL CORREO DEL PROFESOR
  • Evaluación Tres: 25% Taller de Programación II DLI de GPUs Fecha propuesta: Lunes 22 de Julio de 2019 de 2019 de 7:00 a 11:00
  • Evaluación Final: 25% Proyecto de Aplicación Final (Por Parejas Asignadas por el Profesor): Presentación: Lunes 14 de Agosto de 2019 DE 7:00 a 11:00
    • Se asignará un problema a desarrollar y tratar por parejas que deberá presentarse y se tendrán en cuenta los siguientes elementos:
      • Análisis y Diseño del Algoritmo de Solución
      • Calidad, Escalabilidad y Rendimiento de la Implementación (Selección de Paradigma de Programación)
      • Análisis de Rendimiento y Optimización
    • Previa a la presentación de resultados deberá enviarse un reporte tipo articulo de no mayor de 8 páginas a doble columna y entregar los códigos fuente y las condiciones de ejecución de la aplicación, FECHA DE ENVIO: VIERNES 9 DE AGOSTO DE 2019 A LAS 13:59
    • La propuesta de solución debe ser claramente paralela y puede usar los recursos de Supercomputación y Cálculo Científico.
    • Nota importante: Si es basada en una solución paralela existente, esta debe ser citada y comprendida. Así mismo deberá presentarse una adecuación o una nueva versión propuesta donde se evidencie CLARAMENTE el aporte. En el caso de presentar soluciones en MPI, deberá usar claramente mínimo 4 nodos.
Grupos de Trabajo y Asignaciones 2-2018
Grupo Participantes Descripción del Trabajo
1 2103657 - ALVAREZ TEJADA GABRIEL DE JESUS

2122485 - HERNANDEZ PABON JORGE ANDRES

Problema de N - Cuerpos (https://es.wikipedia.org/wiki/Problema_de_los_n_cuerpos)

El problema de N-Cuerpos es bien conocido y básicamente lo que trata es determinar los movimientos individuales de un grupo de partículas materiales siguiendo física newtoniana. Diferentes propuestas para realizar la simulación de n-cuerpos se encuentran implementadas, por ejemplo la que se encuentra en: http://www.new-npac.org/projects/cdroms/cewes-1999-06-vol2/cps615course/examples96/nbody-stuff/nbody.c

La asignación de este problema es realizar un código paralelo que permita la interacción de mínimo 1000 (mil) partículas en tres dimensiones. No se recomienda el uso de interpretadores. Bonus en nota: Si presenta gráficamente la simulación de los cuerpos.

2 2140180 - LEON PEREZ FABIAN ANDRES

2151196 - LOPEZ DURAN JHON EDINSON

Ecuación de Calor (https://es.wikipedia.org/wiki/Ecuaci%C3%B3n_del_calor)

La ecuación del calor es una importante ecuación diferencial en derivadas parciales del tipo parabólica que describe la distribución del calor (o variaciones de la temperatura) en una región a lo largo del transcurso del tiempo. Dependiendo de las dimensiones a trabajar (siendo la más conocida en 2D) existen diferentes implementaciones como la que se encuentra en: https://people.sc.fsu.edu/~jburkardt/c_src/heated_plate/heated_plate.c

El objetivo que se busca en esta asignación es realizar un código paralelo que permita el análisis de la ecuación de calor de manera tridimensional en un cubo. No se recomienda el uso de interpretadores. Bonus de nota: Si se presenta gráficamente la simulación correspondiente a la solución.

3 2143696 - MANTILLA LOPEZ JUAN DAVID

2141354 - OÑATE LIZARAZO LEYSTON ALEXANDER

Ecuación de Onda (https://es.wikipedia.org/wiki/Ecuaci%C3%B3n_de_onda)

La ecuación de onda es una importante ecuación diferencial en derivadas parciales lineal de segundo orden que describe la propagación de una variedad de ondas, como las ondas sonoras, las ondas de luz y las ondas en el agua. Computacionalmente se encuentran soluciones para tratar la sumación y propagación, siendo muy conocidas aquellas que han sido implementadas por supuesto en una o dos dimensiones ( http://www.labbookpages.co.uk/audio/beamforming/waveSum.html o https://computing.llnl.gov/tutorials/parallel_comp/#ExamplesWave)

La asignación a este trabajo es proponer una solución paralela para la ecuación de onda en 2D. No se recomienda el uso de interpretadores. Bonus de nota: Si se presenta gráficamente la simulación correspondiente a la solución dada.

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

PRESENTACIONES DEL CURSO

CONSULTA A ESTUDIANTES

Los martes puede realizarse consulta en LP226 los dias martes de 13:30 a 16:00, pero se recomienda enviar email previamente para solicitar cita (correo del profesor).