Difference between revisions of "Computación de alto rendimiento y científica"

From Supercomputación y Cálculo Científico UIS
(11 intermediate revisions by the same user not shown)
Line 12: Line 12:
  
 
==== '''Presentación''' ====
 
==== '''Presentación''' ====
El cómputo de alto rendimiento más que una tendencia en el uso de tecnologia, es una realidad, que plantea diferentes retos para todos los dominios del conocimiento o de actividad profesional. Más allá de las competencias normales de un ingeniero o cientifico, es necesario entender la tecnología para aprovechar las oportunidades que nos ofrecen, adquirir un lenguaje común para interactuar con ingenieros de sistemas o computistas y proyectar una actividad multidisciplinaria, altamente eficiente.<p>El curso ofrece un acercamiento a conceptos básicos y estrategias de interacción con arquitecturas escalables, desde el computo cientifico para explotar posibilidades de concurrencia y paralelismo. El curso permitirá a los participantes, conocer modelos de programacion fundamentales para la creacion de sus propios codigos, así como una vision e interacción con plataformas de supercomputo especifica y algunas herramientas de interacción en redes de tecnología avanzada, permitiendo reconocer perspectivas y oportunidades de desarrollo.</p><p>Las sesiones se realizan en el CENTIC.</p>
+
El cómputo de alto rendimiento más que una tendencia en el uso de tecnología, es una realidad, que plantea diferentes retos para todos los dominios del conocimiento o de actividad profesional. Más allá de las competencias normales de un ingeniero o científico, es necesario entender la tecnología para aprovechar las oportunidades que nos ofrecen, adquirir un lenguaje común para interactuar con ingenieros de sistemas o computistas y proyectar una actividad multidisciplinaria, altamente eficiente.<p>El curso ofrece un acercamiento a conceptos básicos y estrategias de interacción con arquitecturas escalables, desde el computo cientifico para explotar posibilidades de concurrencia y paralelismo. El curso permitirá a los participantes, conocer modelos de programacion fundamentales para la creacion de sus propios codigos, así como una vision e interacción con plataformas de supercomputo especifica y algunas herramientas de interacción en redes de tecnología avanzada, permitiendo reconocer perspectivas y oportunidades de desarrollo.</p><p></p>
  
 
==== '''Contenido''' ====
 
==== '''Contenido''' ====
'''Unidad I: Introducción General'''
+
'''Unidad I: Introducción General'''  
* Computacíón de Alto Rendimiento y Científica
+
* Introducción a la Computación Científica  
* Arquitecturas Escalables y de Cómputo de Alto Rendimiento
+
* Introducción al Linux
* Linux y SLURM
+
* Linux y SLURM  
  
 
'''Unidad II: Programación Científica'''
 
'''Unidad II: Programación Científica'''
* Algoritmos
+
* Algoritmos  
 
* Introducción al C/C++
 
* Introducción al C/C++
 
* Introducción al Python
 
* Introducción al Python
 +
* Debugging y Profiling
  
 
'''Unidad III: Modelos de Programación Paralela'''
 
'''Unidad III: Modelos de Programación Paralela'''
* Memoría Compartida con OpenMP
+
* Arquitecturas de Computación de Alto Rendimiento
 +
* Memoria Compartida con OpenMP
 
* Memoria Distribuída con MPI
 
* Memoria Distribuída con MPI
* PyCUDA, OpenACC y CuBlas
+
* OpenACC y Otras Directivas de Aceleración
  
 
'''Unidad IV: Herramientas Interesantes para Cómputo Científico'''
 
'''Unidad IV: Herramientas Interesantes para Cómputo Científico'''
Line 41: Line 43:
 
* Otros
 
* Otros
  
==== '''Evaluaciones''' ====
+
==== '''Evaluaciones (1er Semestre de 2019)''' ====
* 30% Quices y Talleres de Clase
+
* '''Evaluación 1: 25% ( Martes 21 de Mayo de 2019 en Horas de Clase) :''' Unidad I (Taller de Evaluación Teórico-Práctico Individual)
* 70% Trabajo Final de Aplicación
+
* '''Evaluación 2: 25% (Martes 4 de Junio de 2019 en Horas de Clase)''':  Taller DLI de OpenACC/CUDA Individual. Deben enviar el certificado a los correos de los profesores a mas tardar el 6 de Julio de 2019. 
** 20% Informe escrito tipo artículo (''envío del Informe escrito Viernes 1 de Diciembre a los tres instructores via correo, como un archivo pdf. El formato del artículo es libre, pero no debe contener más de 10 páginas, en tamaño carta, incluyendo figuras y bibliografía en un tamaño de letra de 11p.)''
+
* '''Evaluación 3: 25% (Martes 15 de Julio de 2019, En Horas de Clase)''' Taller DLI II de Uso de Librerias para Calculo Cientifico. Deben enviar el certificado a los correos de los profesores a mas tardar el 6 de agosto de 2019 
** 30% Desarrollo del Proyecto
+
* '''Evaluación 4: 25% (Martes 13 de Agosto de 2019, En Horas de Clase)''' Presentación de Proyecto Final de clase : Por Grupos. Se asignarán posteriormente.
** 20% Presentación Oral en 10 Minutos ''(Defensa del Proyecto el lunes 4 de diciembre en la hora de clase)''
+
** Exposición de 5 Minutos con los resultados relevantes y funcionamiento del proyecto
 +
** Deben colocar el proyecto en un blog generado para los proyectos finales. Las condiciones se darán posteriormente.
 +
 
 +
==== '''Presentaciones del Curso''' ====
 +
# [[:File:IntroHPCSC.pdf|Introduction to High Performance Computing and Scientific Computing (tomado de SC-CAMP)]]
 +
 
 +
===='''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></div>
 +
==== '''Horas de Consulta''' ====
 +
Las horas de Consulta son los Martes de 13:30 a.m. a 16:00 del dia en LP 226 o en el cuarto piso del CENTIC, en la oficina de CTO de supercomputación, con alguno de los instructores pero se debe solicitar cita previa por email.

Revision as of 11:49, 7 May 2019

Volver a Cursos

Computación de Alto Rendimiento y Científica - Código 76734

PhD Debugging.gif

Instructores

Carlos Jaime Barrios Hernández, PhD. ( c b a r r i o s + * @ * + u i s . e d u . c o )

Gilberto Javier Diaz Toro, MsC. ( g i l b e r t o . d i a z + * @ * + u i s . e d u . c o )

Jorge Luis Chacón Velasco, PhD. (j c h a c on - * @ * - u i s . e d u . c o )

Presentación

El cómputo de alto rendimiento más que una tendencia en el uso de tecnología, es una realidad, que plantea diferentes retos para todos los dominios del conocimiento o de actividad profesional. Más allá de las competencias normales de un ingeniero o científico, es necesario entender la tecnología para aprovechar las oportunidades que nos ofrecen, adquirir un lenguaje común para interactuar con ingenieros de sistemas o computistas y proyectar una actividad multidisciplinaria, altamente eficiente.

El curso ofrece un acercamiento a conceptos básicos y estrategias de interacción con arquitecturas escalables, desde el computo cientifico para explotar posibilidades de concurrencia y paralelismo. El curso permitirá a los participantes, conocer modelos de programacion fundamentales para la creacion de sus propios codigos, así como una vision e interacción con plataformas de supercomputo especifica y algunas herramientas de interacción en redes de tecnología avanzada, permitiendo reconocer perspectivas y oportunidades de desarrollo.

Contenido

Unidad I: Introducción General

  • Introducción a la Computación Científica
  • Introducción al Linux
  • Linux y SLURM

Unidad II: Programación Científica

  • Algoritmos
  • Introducción al C/C++
  • Introducción al Python
  • Debugging y Profiling

Unidad III: Modelos de Programación Paralela

  • Arquitecturas de Computación de Alto Rendimiento
  • Memoria Compartida con OpenMP
  • Memoria Distribuída con MPI
  • OpenACC y Otras Directivas de Aceleración

Unidad IV: Herramientas Interesantes para Cómputo Científico

  • R
  • Hadoop
  • Otras

Unidad V: Visualización

  • gnuPlot
  • Paraview
  • Visit
  • Otros

Evaluaciones (1er Semestre de 2019)

  • Evaluación 1: 25% ( Martes 21 de Mayo de 2019 en Horas de Clase) : Unidad I (Taller de Evaluación Teórico-Práctico Individual)
  • Evaluación 2: 25% (Martes 4 de Junio de 2019 en Horas de Clase): Taller DLI de OpenACC/CUDA Individual. Deben enviar el certificado a los correos de los profesores a mas tardar el 6 de Julio de 2019.
  • Evaluación 3: 25% (Martes 15 de Julio de 2019, En Horas de Clase) Taller DLI II de Uso de Librerias para Calculo Cientifico. Deben enviar el certificado a los correos de los profesores a mas tardar el 6 de agosto de 2019
  • Evaluación 4: 25% (Martes 13 de Agosto de 2019, En Horas de Clase) Presentación de Proyecto Final de clase : Por Grupos. Se asignarán posteriormente.
    • Exposición de 5 Minutos con los resultados relevantes y funcionamiento del proyecto
    • Deben colocar el proyecto en un blog generado para los proyectos finales. Las condiciones se darán posteriormente.

Presentaciones del Curso

  1. Introduction to High Performance Computing and Scientific Computing (tomado de SC-CAMP)

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

Horas de Consulta

Las horas de Consulta son los Martes de 13:30 a.m. a 16:00 del dia en LP 226 o en el cuarto piso del CENTIC, en la oficina de CTO de supercomputación, con alguno de los instructores pero se debe solicitar cita previa por email.