Difference between revisions of "Algoritmos y Computación de Alto Rendimiento"
(22 intermediate revisions by the same user not shown) | |||
Line 39: | Line 39: | ||
La evaluación planteada, busca promover el trabajo colaborativo, por equipos que se conforman de acuerdo a la afinidad e interés en una temática específica de la física. Y en ese trabajo se tendrán en cuenta los siguientes aspectos | La evaluación planteada, busca promover el trabajo colaborativo, por equipos que se conforman de acuerdo a la afinidad e interés en una temática específica de la física. Y en ese trabajo se tendrán en cuenta los siguientes aspectos | ||
− | #'''20%''' Diseño y Análisis de Algoritmo a Realizar '''(Diciembre 7 2021)''' | + | #'''20%''' Diseño y Análisis de Algoritmo a Realizar '''<s>(Diciembre 7 2021)</s> Viernes 21 de enero de 2022.*''' |
#'''20%:''' Implementación y Solución | #'''20%:''' Implementación y Solución | ||
#'''20%:''' Análisis y Evaluación de Rendimiento | #'''20%:''' Análisis y Evaluación de Rendimiento | ||
− | #'''20%:''' Presentación de la propuesta como un póster digital '''(Marzo 8 2022)*''' | + | #<u>'''20%:''' Presentación de la propuesta como un póster digital '''(Marzo 8 2022)**'''</u> |
#'''20%:''' Trabajos Prácticos en Clase | #'''20%:''' Trabajos Prácticos en Clase | ||
− | ''Bonus: Participación en seminarios y eventos libres propuestos por el profesor en el transcurso del curso'' | + | ''Bonus: Participación en seminarios y eventos libres propuestos por el profesor en el transcurso del curso.'' |
− | |||
− | + | ''* La entrega (1) la realizaran en un documento que enviarán al correo del profesor, en *.pdf de máximo 8 (ocho) páginas (que incluye todo, incluyendo figuras, resumen, bibliografía, tablas y gráficas), el tamaño de la letra en 10 puntos cualquier tipo de fuente, en español a manera de borrador de artículo científico en español que contendrá, la estructura común de un articulo científico:'' | |
+ | |||
+ | *TITULO (Un título dado por cada grupo, que genere interés en la lectura del mismo) | ||
+ | *Nombres de los integrantes (incluir el ORCID y correo electrónico) | ||
+ | *Resumen en español de máximo diez lineas | ||
+ | *Contenido del mismo explicando lo solicitado para la entrega (en el contenido deben estar las tablas, figuras y gráficas) | ||
+ | *Conclusión (acerca por ejemplo, de la complejidad del algoritmo propuesto, o del problema, una conclusión dada por ustedes) | ||
+ | *Bibliografía y fuentes de información. | ||
+ | |||
+ | ''** Para la entrega del poster digital, se recomienda enviarlo previamente (lunes 7 de marzo, 8:00pm, en tipo de archivo .pdf a la dirección de correo del profesor, colocando como asunto: Poster Digital {Nombre del Grupo} como archivo adjunto, agregando los nombres de los integrantes en el cuerpo del correo electrónico.). NO HAY ARTICULO ANEXO. Tenga en cuenta que los puntos 2 y 3 deben estar contenidos en la presentación del poster digital y en un repositorio github/gitlab (código de la solución y visualizaciones posibles) o los adjuntan en un .zip al mismo correo. Ejemplos de poster digitales pueden observarse en:'' https://www.nvidia.com/gtc/poster-gallery/ | ||
+ | |||
==='''Bibliografía y Fuentes de Información'''=== | ==='''Bibliografía y Fuentes de Información'''=== | ||
+ | <div class="col-md-14"> | ||
+ | Todas las fuentes y material son de libre acceso. Algunas, tienen el enlace en este sitio directamente tras cumplir autorización por parte de sus autores o de los editores.<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>[[:File:BookASPUA2Ed.pdf|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> | ||
+ | |||
+ | ==='''Material del Curso (Presentaciones, Códigos y más)'''=== | ||
+ | |||
+ | *[[:File:IntroAlgHPC.pdf|Introducción al Curso]] | ||
+ | *[[:File:QuickAlgo.pdf|Fundamentos de Algoritmos]] | ||
+ | *[[:File:AnalAlgo.pdf|Principios de Análisis de Algoritmos: Notación y Términos de Base]] | ||
+ | *[[:File:ArchiCompIntro.pdf|Arquitectura de Computadores y Sistemas: Una Introducción]] | ||
+ | *[[:File:IntroProgCCPP.pdf|Primeros Pasos en Programación]] | ||
+ | *[[:File:IntroProgCCPP2.pdf|Primeros Pasos en Programación - Parte 2]] | ||
+ | *[[:File:IntroPPHPC.pdf|Introducción a la Computación Paralela]] | ||
+ | *[[:File:MemCompOpenMP3.pdf|Programación de Memoria Compartida con OpenMP]] | ||
+ | *[[:File:DistributedMPI14.pdf|Programación de Memoria Distribuída con MPI]] | ||
+ | *Introducción a la Computación Hibrida / Acelerada con GPUs | ||
+ | **[[:File:IntroGPUComp.pdf|Introducción a GPGPU]] | ||
+ | **[[:File:IntroCUDAComp.pdf|Introducción al CUDA]] | ||
+ | **[[:File:IntroOpenACCComp.pdf|Introducción al OpenACC]] | ||
+ | *[[:File:OpenMP-MPI-Intro.pdf|Introducción a la Computación Hibrida: OpenMP + MPI]] | ||
+ | *Primeros pasos en Linux (Extra) | ||
+ | **[[:File:Linux.pdf|Introducción al Linux (Extra)]] | ||
+ | **[[:File:Tutorial Linux.pdf|Tutorial de Linux (Extra)]] | ||
+ | |||
+ | ====Posters Digitales==== | ||
+ | |||
+ | *[[:File:Grupo Faraday.pdf|Ecuación de Faraday]] | ||
+ | *[[:File:Grupo NBodies.pdf|Problema de N-Cuerpos]] | ||
+ | *[[:File:Grupo Random.pdf|Números Randómicos]] | ||
+ | *[[:File:Grupo1-HE.pdf|Ecuación de Calor]] | ||
+ | *[[:File:Grupo2 PB.pdf|Solución Simple y Unidimensional de Poisson-Boltzmann]] | ||
+ | *[[:File:Grupo3 NS.pdf|Ecuaciones de Navier Stokers para Flujos Planos]] | ||
+ | |||
+ | * |
Latest revision as of 02:44, 8 March 2022
Volver a Cursos
Algoritmos y Computación de Alto Rendimiento - Código 29451
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
Contents
PRESENTACION DEL CURSO
El desarrollo de algoritmos computacionales para soportar tanto análisis de datos como simulaciones de fenómenos físicos (diseñados, reproducidos en laboratorio, observados o propuestos) es importante para garantizar precisamente la calidad, realismo, confianza y reproductibilidad del conocimiento generado. Dichos algoritmos, que surgen de modelos previamente concebidos se convertirán en códigos que componen programas de computación que serán ejecutados en máquinas computacionales. El rendimiento obtenido y las capacidades, dependen igualmente del algoritmo pero no hay que olvidar que de las características arquitecturales de la máquina computacional utilizada.
Precisamente, este curso (teórico-práctico) busca fundamentar el desarrollo de algortimos y su implementación en lenguajes de programación que permitan el desarrollo de códigos para atacar un problema físico, ejecutar ese código y obtener el máximo desempeño y confianza. Teniendo en cuenta la diversidad de arquitecturas computacionales que permiten seleccionar que tipo de plataforma se necesita para atacar un problema, igualmente es necesario conocer diferentes aspectos arquitecturales tecnológicos y espacios de desarrollo que permiten la colaboración y la reproductibilidad.
Contenido ( No en un orden estricto, Después de Encuesta con los Estudiantes)
- Introducción a la Computación Científica
- Fundamentos para el Análisis y Diseño de Algoritmos
- Principios Básicos de Representación
- Análisis de Complejidad
- Programación de Algoritmos Científicos cn C/C++ : Una Introducción
- Principios Básicos
- Buenas Prácticas de Desarrollo
- Compilación Ejecución Eficiente y Optimización
- Debugging, Profiling and Tracing.
- Sistemas, Plataformas y Ambientes de Desarrollo y Ejecución
- Aquitecturas computacionales para investigación (y desarrollo científico)
- Infrastructuras
- Repositorios (GitHub/GitLab) y Ambientes Colaborativos
- Sistemas Operativos (Linux)
- Interacción y Plataformas de Gran Escala
- Aquitecturas computacionales para investigación (y desarrollo científico)
- Cómputo Científico Paralelo
- Concurrencia y Paralelismo
- Paradigmas de Programación Paralela
- Memoria Compartida con OpenMP
- Memoria Distribuida con MPI
- Memoria Hibrida con OpenACC (Y un poco de CUDA)
- Otras Posibilidades
- Paralelismo Cuántico : Una introducción
- Librerias, Solucionadores y Más
Evaluación
Evaluaciones programadas para el 2do Semestre de 2021
La evaluación planteada, busca promover el trabajo colaborativo, por equipos que se conforman de acuerdo a la afinidad e interés en una temática específica de la física. Y en ese trabajo se tendrán en cuenta los siguientes aspectos
- 20% Diseño y Análisis de Algoritmo a Realizar
(Diciembre 7 2021)Viernes 21 de enero de 2022.* - 20%: Implementación y Solución
- 20%: Análisis y Evaluación de Rendimiento
- 20%: Presentación de la propuesta como un póster digital (Marzo 8 2022)**
- 20%: Trabajos Prácticos en Clase
Bonus: Participación en seminarios y eventos libres propuestos por el profesor en el transcurso del curso.
* La entrega (1) la realizaran en un documento que enviarán al correo del profesor, en *.pdf de máximo 8 (ocho) páginas (que incluye todo, incluyendo figuras, resumen, bibliografía, tablas y gráficas), el tamaño de la letra en 10 puntos cualquier tipo de fuente, en español a manera de borrador de artículo científico en español que contendrá, la estructura común de un articulo científico:
- TITULO (Un título dado por cada grupo, que genere interés en la lectura del mismo)
- Nombres de los integrantes (incluir el ORCID y correo electrónico)
- Resumen en español de máximo diez lineas
- Contenido del mismo explicando lo solicitado para la entrega (en el contenido deben estar las tablas, figuras y gráficas)
- Conclusión (acerca por ejemplo, de la complejidad del algoritmo propuesto, o del problema, una conclusión dada por ustedes)
- Bibliografía y fuentes de información.
** Para la entrega del poster digital, se recomienda enviarlo previamente (lunes 7 de marzo, 8:00pm, en tipo de archivo .pdf a la dirección de correo del profesor, colocando como asunto: Poster Digital {Nombre del Grupo} como archivo adjunto, agregando los nombres de los integrantes en el cuerpo del correo electrónico.). NO HAY ARTICULO ANEXO. Tenga en cuenta que los puntos 2 y 3 deben estar contenidos en la presentación del poster digital y en un repositorio github/gitlab (código de la solución y visualizaciones posibles) o los adjuntan en un .zip al mismo correo. Ejemplos de poster digitales pueden observarse en: https://www.nvidia.com/gtc/poster-gallery/
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 (Presentaciones, Códigos y más)
- Introducción al Curso
- Fundamentos de Algoritmos
- Principios de Análisis de Algoritmos: Notación y Términos de Base
- Arquitectura de Computadores y Sistemas: Una Introducción
- Primeros Pasos en Programación
- Primeros Pasos en Programación - Parte 2
- Introducción a la Computación Paralela
- Programación de Memoria Compartida con OpenMP
- Programación de Memoria Distribuída con MPI
- Introducción a la Computación Hibrida / Acelerada con GPUs
- Introducción a la Computación Hibrida: OpenMP + MPI
- Primeros pasos en Linux (Extra)
Posters Digitales
- Ecuación de Faraday
- Problema de N-Cuerpos
- Números Randómicos
- Ecuación de Calor
- Solución Simple y Unidimensional de Poisson-Boltzmann
- Ecuaciones de Navier Stokers para Flujos Planos