Actividades formativas de Doctorado de la Universidad de Cádiz
 
8214P01_004

Computación de Alto Rendimiento para Matemáticos y Científicos

Organiza: Comisión Académica del Programa de Doctorado de Matemáticas

Inscripción en: https://posgrado.uca.es/doctor
(en este momento no hay plazo abierto para inscripción en este curso)

Coordinación:
Dr. D. JOSE RAFAEL RODRIGUEZ GALVAN
Plazas ofertadas por grupo: 10
Duración: 40 horas (16 h. presenciales)
Modalidad: Mixta (Presencial + virtual)    Idioma: Español/Inglés

Lugar de impartición: Facultad de Ciencias
Campus de Cádiz
Precio de matrícula en este curso: 26.56 euros
Coste de la plaza en este curso: 66.40 euros.
Financiado en un 60% por la Escuela Doctoral.



Destinatarios
Doctorandos del Programa de Doctorado en Matemáticas


Descripción general

Facilitar el conocimiento de técnicas y herramientas informáticas adecuadas para la eficiente implementación en el ordenador de algoritmos numéricos relacionados con cualquier área de las Matemáticas y con su aplicación a las Ciencias o la Ingeniería. Aplicar lo anterior a la computación de altas prestaciones para el modelado y simulación de casos prácticos concretos, relacionados con modelos matemáticos y numéricos, tanto en ordenadores personales como en superordenadores.



Contenidos

-   Introducción a la shell en entornos Unix (en particular,  terminales en GNU/Linux o Mac OSX).

-   Sistemas de control de versiones: Git. Repositorios remotos:  Github y Bitbucket.

-  Creación de programas científicos eficientes. El coste del acceso a datos en memoria. Representación de números en los ordenadores. Aritmética en coma flotante: ¿cómo puede afectar a los resultados de un programa?

-   Programación en lenguaje Python orientada a las Matemáticas, las Ciencias y la Ingeniería. Programación interactiva con IPython e Ipython Notebook. Programas interpretados (scripts). Gráficas y visualización de resultados.  Testeo de errores. Verificación y validación del código.

-   Primera práctica completa en computación científica: resolución mediante diferencias finitas de la ecuación de Poisson.

-   Lenguajes compilados más usados en computación científica: introducción a C++ y Fortran 90. Manipulación de arrays. Proyectos Make y ficheros Makefile. Cómo utilizar desde Python nuestros programas C++ o Fortran.

-   Segunda práctica: el problema de Poisson en C++ y/o en Fortran 90.

-   Introducción a OpenMP: programación paralela en ordenadores con memoria compartida (por ejemplo, ordenadores usuales con varios núcleos)

-   Tercera práctica: resolución paralela con OpenMP del problema de Poisson (*).

-   Cuarta práctica: resolución paralela con OpenMP de sistemas de ecuaciones dferenciales (*).

-   Introducción a MPI en ordenadores con memora distribuida (por ejemplo, supercomputadores formados por clusters de ordenadores).

-   Quinta práctica: resolución paralela con MPI del problema de Poisson (*).

-   Sexta práctica: resolución paralela con MPI de sistemas de ecuaciones diferenciales (*).

 

(*) Estas prácticas se realizarán en C++ o bien en Fortran 90/95/2003/2008, según las preferencias de cada estudiante.



Competencias básicas y capacidades

Los estudiantes que finalicen con éxito el curso deberán:

- Poseer conocimientos que les permitan distinguir y elegir herramientas adecuadas para la eficiente implementación en ordenadores de problemas relacionados con las Matemáticas, las  Ciencias y la Ingeniería.

- Utilizar estas herramientas para el desarrollo de software de altas prestaciones, dentro de los casos prácticos que son objeto de este curso.

- Poseer habilidades de aprendizaje que les permitan ampliar los conocimientos adquiridos de una forma autónoma o autodirigida.

- Planificar el desarrollo y/o la aplicación de software adecuado en contextos relacionados con la investigación en Matemáticas y Ciencias experimentles, dentro el área de estudio específico de cada estudiante.

- Ser capaces de comunicar a públicos especializados, de forma precisa y sin ambigüedades, razonamientos y conclusiones relacionadas con los contenidos del curso.

 


Metodología

- Clases magistrales presenciales.

- Sesiones teóricas no presenciales, apoyadas por material docente específico, y tutorizadas en internet.

- Sesiones prácticas presenciales.

- Sesiones prácticas no presenciales, tutorizadas en internet.

- Aprendizaje orientado a la realización de proyectos.



Selección de estudiantes

Se presuponen unos conocimientos básicos, por parte del alumno, en matemáticas y en métodos numéricos, así como una experiencia mínima en los lenguajes de programación C o Fotran.



Sistema de evaluación

Realización de trabajos, informes o actividades relacionadas con los contenidos del curso.



Bibliografía

- A. Quarteroni, F. Salieri: "Cálculo Científico con Matlab y Octave". Springer, 2006.

- G. Varoquaux, E. Gouillart, O. Vahtras et al: "Scipy Lecture Notes". <http://www.scipy-lectures.org>.

- M. Gorelick, I. Ozsvald "High Performance Python". O'Reilly, 2014.

- H. Schildt: "C. Guía de autoenseñanza". Osborne/McGraw-Hill, 2002.

- H. Schildt: "C++. Guía de autoenseñanza". Osborne/McGraw-Hill, 2001.

- B. Stroustrup: The C++ programming language. Addison-Wesley, 2013.

- G. M. Karniadakis, R. M. Kirby. Parallel scientific computing in C++ and MPI. Cambridge University Press, 2003.

- I. Chivers, J. Sleightholme: "Introduction to Programming with Fortran". Springer, 2012.

- Varios autores (desarrollado de forma colaborativa en Github): "Software carpentry". <http://software-carpentry.org/lessons>.



Programación (31-01-2017 a 24-02-2017)
31-01-2017 09:00-11:00 + 2h. no presenciales Facultad de Ciencias

J. Rafael Rodríguez Galván

Introducción a la "shell" en entornos Unix. Sistemas de control de versiones.

03-02-2017 09:00 a 11:00h + 3h. no presenciales Facultad de Ciencias

J. Rafael Rodríguez Galván

- Creación de programas científicos eficientes. El coste del acceso a datos en memoria. Representación de números en los ordenadores. Programación interactiva en lenguaje Python para las Matemáticas, las Ciencias y la Ingeniería

07-02-2017 09:00 a 11:00h + 3h. no presenciales Facultad de Ciencias

J. Rafael Rodríguez Galván

 Programas interpretados ("scripts") en Python. Gráficas y visualización de resultados. Testeo de errores y verificación del código.  Práctica 1.

10-02-2017 09:00 a 11:00h + 3h. no presenciales Facultad de Ciencias

J. Rafael Rodríguez Galván

Introducción a C++. Proyectos Make. Bibliotecas de álgebra lineal: Eigen.

14-02-2017 09:00 a 11:00h + 3h. no presenciales Facultad de Ciencias

J. Rafael Rodríguez Galván

Acceso desde Python a bibliotecas C++. Práctica 2.

17-02-2017 09:00 a 11:00h + 3h. no presenciales Facultad de Ciencias

J. Rafael Rodríguez Galván

Introducción a Fortran 90. Enlace con Python. Práctica 2.

21-02-2017 09:00 a 11:00h + 3.5h. no presenciales Facultad de Ciencias

J. Rafael Rodríguez Galván

Introducción a OpenMP. Prácticas 3 y 4.

24-02-2017 09:00 a 11:00h + 3.5h. no presenciales Facultad de Ciencias

J. Rafael Rodríguez Galván

Introducción a MPI. Prácticas 5 y 6.