Você está na página 1de 3

Técnicas de Computación

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.

Plan de Clase:

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.

Temario:

 Obteniendo el máximo rendimiento de sistemas secuenciales.

o 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.

o Introducción a las arquitecturas paralelas.


 Rendimiento en sistemas paralelos.
 Paradigmas básicos en programación paralela.
 Programación con:
 OpenMP
 HPF
 MPI
 UPC
o 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.

o 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.

Calificación:

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.

Você também pode gostar