NOTA: .
Optativa,
Quinto Curso - Primer Cuatrimestre - 4.5 Créditos - Máximo 25
Alumnos.
Vicente
Martín.
Bloque
V. D-5207
La computación científica ha jugado tradicionalmente un papel muy importante en el avance de la informática. En los inicios de ésta era prácticamente la única fuerza impulsora, proporcionando los problemas que eran la motivación para el desarrollo tanto de software como de hardware. Recordemos que los problemas para los que se construyeron máquinas como el ENIAC procedían de las áreas técnicas y científicas. El primer compilador que se realizó (en 1957) fue el de Fortran I, acrónimo de FORmula TRANslator, destinado al mercado técnico. Posteriormente, los ordenadores se fueron aplicando también en otras areas. La computación científica acabó convirtiéndose en sinónimo de cálculo intensivo y de grandes máquinas -ordenadores vectoriales, paralelismo masivo, etc.- con un número muy limitado de usuarios que se ocupaban de problemas extremadamente técnicos y muy lejos de cualquier aplicación inmediata.
Si bien es cierto que es en las áreas donde las necesidades de velocidad y memoria son más acuciantes donde la Computación Científica ha mostrado más su importancia, no lo es el que sea un mercado pequeño o que sus únicas contribuciones pertenezcan a temas muy alejados de la práctica informática habitual. De hecho, el mercado técnico y científico es hoy más grande que nunca y, debido a la importancia del ordenador en el desarrollo, diseño y fabricación de nuevos productos, está creciendo muy rápidamente. La última contribución realmente llamativa es el mismo World Wide Web. Este se desarrolló en el CERN (Centre Européenne pour la Recherche Nucleairé) como respuesta a las necesidades de colaboración entre grupos internacionales de investigadores. El posterior desarrollo de un browser gráfico (Mosaic) en el NCSA (National Center for Supercomputing Applications), también dedicado a la computación científica, proporcionó el empuje inicial para el enorme crecimiento que ha experimentado la internet hasta convertirse en la base de lo que llaman la nueva economía.
Un
último desarrollo generado en este campo y con un previsible gran
impacto en el resto del mundo informático es el GRID.Este
nombre fue puesto por analogía con el nombre inglés para las redes
eléctricas. La idea básica es tratar el poder de cálculo o de
acceso a datos como si se tratase de un fluido. El objetivo final es
que desde cualquier punto de acceso a la red se puedan utilizar todos
sus recursos de una manera transparente, independientemente de que
aquellas máquinas que hacen los cálculos tengan distintas
arquitecturas o que estén geográficamente dispersas o que unas se
ocupen de servir o recoger los datos, otras de trabajar con ellos y
otras de presentar los resultados. La realización total de
este potencial depende de que seamos capaces de sincronizar muchos
recursos distintos y dispersos para lo que hay que tener en cuenta,
además del hardware, una serie de capas software que van desde
las herramientas de programación a los protocolos de comunicaciones
y seguridad que permiten el acceso a todos los recursos necesarios
requeridos por una aplicación. Realizando autentificaciones entre
distintas máquinas, garantizando accesos a ciertos recursos, etc. Y
esto realizado de manera transparente para el usuario final, de modo
que su utilización no sea más complicada que un recurso puramente
local. Hay varios proyectos en marcha y es una línea de
investigación preferente tanto de los programas de investigación
europeos como norteamericanos.
La
Computación Científica sigue siendo, pués, una fuerza
importante en el desarrollo de la informática. Uno de
los motivos para el auge que está teniendo esta rama es el
abaratamiento de los ordenadores de grandes prestaciones y
el aumento de potencia de los ordenadores tipo
workstation.
Además, la agrupación de estos en clusters y las tecnologías que
ya ha generado el GRID han aumentado el tamaño y complejidad de los
problemas tratables. Esto ha hecho que el número de usuarios
interesados en resolver problemas en ciencia e ingeniería utilizando
ordenadores se haya incrementado tan notablemente que en
algunos paises se están ofreciendo especializaciones en una nueva
rama, híbrida entre la informática y otra ciencia o ingeniería,
bajo el nombre de "Ciencia e Ingeniería Computacional"
(por distinguirla de Ciencias de la Computación. Ver 1
, 2 , 3
, 4). En esta nueva
titulación se ofrece formación en aquellas áreas, tanto de ciencia
como de ingeniería, en las que el peso de las técnicas
computacionales es tal que no se puede progresar sin la ayuda de la
informática. Es esta una titulación en expansión. Un listado de
algunas de las Universidades que la imparten se puede encontrar aqui.
No obstante, la gran mayoría de usuarios de la computación científica, o bien carecen de una formación específica en informática o bien consideran que personal formado como informático es el que debiera ocuparse de la parte computacional del problema. Este curso pretende mostrar al estudiante de informática las técnicas computacionales básicas con un mayor impacto en el área de la computación científica. El objetivo es que sea capaz bien de integrarse en un grupo de trabajo ocupado en resolver este tipo de problemas o bien de asesorar sobre el uso óptimo de la informática en este campo. El énfasis se pone en dos áreas, por un lado las técnicas que permiten extraer el máximo rendimiento de un ordenador dado, bien sea mediante la optimización secuencial o mediante el uso del paralelismo, y por otro, en la creación de aplicaciones para la presentación y exploración de las -típicamente enormes- cantidades de datos generadas por los programas de cálculo masivo usuales en este campo.
Puesto que la asignatura tiene un enfoque eminentemente práctico, aproximadamente la mitad de las clases serán en un aula normal y la otra mitad en una aula informática. La distribución, siempre que sea posible, será de una clase teórica en la que se explicarán las técnicas que se pondrán en práctica, típicamente durante la siguiente clase, en el aula informática.
Obteniendo
el máximo rendimiento de sistemas secuenciales.
Técnicas básicas de optimización. Profiling de un programa.
Mejorando el acceso a memoria: Uso eficiente de la jerarquia de memoria.
Librerías básicas optimizadas.
Benchmarking, nuevo HW para computación técnica y científica.
Prácticas de clase:
Optimizaciones generales y herramientas de profiling.
Optimización del acceso a memoria.
Librerías
BLAS, GotoBLAS, entorno FLAME
Sistemas
paralelos.
Introducción a las arquitecturas paralelas.
Rendimiento en sistemas paralelos.
Paradigmas básicos en programación paralela.
Programación con:
OpenMP
HPF
MPI
UPC
Profiling y visualización del comportamiento de programas paralelos. Herramientas de depuración paralela.
Clusters de ordenadores.
Introducción a la Computación en el GRID.
Librerías paralelas.
Prácticas de clase:
El entorno paralelo de la IBM SP2.
Programación con OpenMP, HPF y MPI.
Ejercicios de profiling. La herramienta vt: visualización de carga y comunicaciones en la SP2
Construcción de un cluster de ordenadores personales.
Uso
de un GRID.
Visualización
científica.
Introducción al problema.
Formatos estándar de ficheros de datos para visualización.
Técnicas básicas de representación de datos y visualización.
Programas de representación de datos y visualización. Esquemas data-flow de creación de aplicaciones específicas.
Prácticas de clase:
Librerías para los formatos de ficheros.
Creación de una herramienta específica de visualización para un conjunto grande de datos.
Al
finalizar cada uno de los tres temas los alumnos, en grupos de dos,
propondrá por escrito (máximo dos folios) una trabajo relacionado
con el tema. Esta propuesta será discutida con el profesor. Una vez
realizado el trabajo, idéntica calificación será asignada a los
dos miembros del grupo. La nota final será la media aritmética de
los tres trabajos. Un esquema básico de trabajo se da aquí.
Alternativamente a los trabajos, los alumnos podrán extender los
ejercicios realizados en las clases prácticas y entregar los
resultados como sustituto del trabajo del tema correspondiente.
Se
espera de los alumnos que asistan a la gran mayoría de las clases
prácticas. Aquellos que asistan a menos de un 60% de las
clases tendrán que pasar por un exámen de la asignatura. Dicho
exámen constará de dos partes de una duración aproximada de una
hora cada una. En la primera parte el alumno contesta por escrito a
una serie de preguntas. En la segunda, realizada en un aula
informática, deberá resolver (escribiendo algún programa
corto o modificando alguno ya hecho y demostrando sus resultados) una
serie de cuestiones prácticas. Evidentemente, ésta última parte se
realizará usando los mismos entornos utilizados durante la
asignatura. El exámen también lo podrán realizar aquellos alumnos
que deseen subir la nota. En este caso deberán comunicarlo con
antelación suficiente al profesor.
Los
programas a los que se hacen referencia en las siguientes
transparencias están disponibles en el repositorio de la asignatura.
La mayoría están escritos en Fortran 90, algunos están en C. Dada
la simplicidad de la sintaxis del lenguaje no se espera que el alumno
esté previamente familiarizado con Fortran en ninguna de sus
variantes. Las transparencias que estan a continuación son versiones
razonables, pero cada año hay modificaciones que no necesariamente
están en estas.
Optimización Secuencial. ( Transparencias nuevas -v0.3a en PDF- )
Introducción Máquinas de prácticas (PDF )
Prácticas de clase: Máquinas secuenciales. (PDF )
Introducción al Paralelismo.( Transparencias en PDF )
Introducción al Paralelismo: Herramientas (incluye HPF, MPI, OpenMP y Unified Parallel C. Transparencias en PDF)
Introducción a HPF. (Viejas transparencias en GZ PostScript)
Prácticas de clase: HPF. (GZ PostScript)
Introducción a OpenMP. (Viejas transparencias en GZ PostScript)
Prácticas de clase: Librerías Paralelas y OpenMP. (GZ PostScript)
Introducción a Message Passing Interface - MPI. (Viejas transparencias en GZ PostScript)
Prácticas de clase: MPI, depuración y visualización de comportamiento. (GZ PostScript)
Uso de Librerías Software de Alto Rendimiento en Aplicaciones en Ciencia e Ingeniería. Parte II: Librerías Paralelas. (Transparencias en PostScript)
Las
clases prácticas se realizarán usando los siguientes sistemas:
Arturo: Compaq Alphaserver. Sistema SMP con cuatro CPU Alpha de última generación y 4 GBytes de Memoria, su sistema operativo es Compaq Tru64 Unix. (Nota: esta máquina esta dando problemas)
Triqui: Cluster Linux de IBM. Cluster de ordenadores tipo PC de arquitectura Intel.
Elmer: Multiprocesador de IBM de última generación con CPUs Power5. Sistema operativo: AIX.
Magerit: Durante el curso tendremos acceso educativo a este sistema del Centro de Supercomputación y Visualización de Madrid (CeSViMa), que está instalado en la Facultad y es en la actualidad el segundo ordenador de investigación mayor del pais. Es un multicomputador con nodos biprocesadores basados en CPUs PPC970. Sistema operativo: Linux.
De los diversos paquetes de visualización científica existentes hemos elegido DataExplorer. El motivo principal, además de ser un sistema muy completo al nivel de los mejores en su campo, es que en la actualidad está bajo licencia OpenSource y por tanto se puede disponer de el en casi cualquier plataforma. Nosotros lo usaremos bien en la SP2 o bien bajo Linux, según las asignaciones de máquinas del Centro de Cálculo.
FLAME: Formal Linear Algebra Method Environment.
The Science of Programming Matrix Computations. Robert A. van de Geijn y Enrique S. Quintana-Orti.
SIAM Short Course: Performance Programming for Scientific Computing.
Software Optimization for High Performance Computing. K.R. Wadleigh, I.L. Crawford. Hewlett-Packard Professional Books, Prentice Hall PTR
Designing and Building Parallel Programs. Ian Foster. Addison-Wesley. Tambien en la web aquí.
Scientific Computing World, The global resource for scientists who rely on computing.
Cursos sobre computación de alto rendimiento en Cornell , en el Edimburgh Parallel Computing Centre y en la Universidad de Manchester.
Using MPI : Portable Parallel Programming With the Message-Passing Interface . W. Gropp et al. Scientific and Engineering Computation Series. The MIT Press.
How to Build a Beowulf: A Guide to the Implementation and Application of PC Clusters. T.L. Sterling et al. Scientific and Engineering Computation Series. The MIT Press.
Building Linux Clusters. D. Spector. O'Reilly.
High Performance Cluster Computing. Vols I y II. R. Buyya. Prentice Hall PTR.
IEEE CS Task Force on Cluster Computing (TFCC). White Paper on Cluster Computing.
The GRID: Blueprint for a New Computing Infrastructure. I. Foster, C. Kesselman (Eds.) Morgan Kaufmann Publishers. (El capítulo 2 está en la red aquí)
The Globus Project. Fundamental technologies for computational grids.
The Data Handbook. A Guide to Understanding the Organization and Visualization of Technical Data. Brand Fortner. Telos (Springer-Verlag)
Open DataExplorer y repositorio de programas DataExplorer en Cornell.
HyperVis - Teaching Scientific Visualization Using Hypermedia.
En
la medida de lo posible y con el objeto de familiarizar al alumno con
trabajo de investigación real relacionado con las técnicas
mostradas en la asignatura, cada año se intenta traer un
conferenciante externo que ofrece una clase magistral.
Aquí reseñamos algunas de las ofrecidas en años anteriores junto
con el material que nos haya sido cedido por el autor.
"Ordenadores y Cosmología". Prof. Gustavo Yepes. Universidad Autónoma de Madrid. Enero de 2001.
El anuncio de la conferencia en la Facultad (PostScript).
Una de las animaciones de visualización presentadas (8.161 KB).
"Una Visión Computacional del Microcosmos". Prof. Luis Robledo. Universidad Autónoma de Madrid. Enero de 2002
El anuncio de la conferencia en la Facultad (PostScript).
"Computación y Simulación en Ciencia de Materiales". Dr. José Ángel Martín. Científico titular, Instituto de Ciencia de Materiales de Madrid. Enero de 2003.
El anuncio de la conferencia en la Facultad (PostScript).
"Plegamiento de Proteínas: Una Perspectiva Bioinformática". Dr. Ugo Bastolla. Instituto de Astrobiología (CSIC-INTA). Enero de 2004.
El anuncio de la conferencia en la Facultad (PDF).
Las transparencias de la presentación (MS PowerPoint, 2.1 MB).
"Estado de la Tecnología Grid". Prof. Ignacio Martín. Universidad Complutense de Madrid / Instituto de Astrobiología (CSIC-INTA). Enero de 2005.
El anuncio de la conferencia en la Facultad (PDF).
Las transparencias de la presentación (PDF).
"Problemas Computacionales de Mecánica de Fluidos en Geometrías Complejas " . Prof. Eusebio Valero, Universidad Politécnica de Madrid / E.T.S.I Aeronauticos. Enero de 2006.
El anuncio de la conferencia en la Facultad (PDF).
Las transparencias de la presentación (PDF).
" Sistemas de Control en Grandes Detectores " . Fernando Lucas. Responsable de Sistemas de Control. Experimento TOTEM-LHC, CERN. Enero de 2008.
El anuncio de la conferencia en la Facultad (PDF).
Las transparencias de la presentación (PDF).