Líneas de

investigación

                 La restauración de imágenes elimina o minimiza algunas degradaciones en una imagen, tales como las originadas por imperfecciones en los sensores o en la transmisión. Se supone que se conoce un modelo matemático del proceso de degradación, o que éste se puede inducir a partir de un análisis previo de otras imágenes.

 

 

 

                 En muchas aplicaciones científicas y técnicas, la formulación del problema mediante un modelo matemático y su tratamiento numérico, nos lleva a la resolución de un sistema de ecuaciones, normalmente de gran tamaño. Atendiendo al carácter del problema, dicho sistema será lineal o no.

                 En un gran número de aplicaciones de alto rendimiento, tanto científicas como de ingeniería, se hace necesario el uso de determinadas librerías de software paralelo. Los investigadores relacionados con estas aplicaciones encuentran grandes dificultades a la hora de interpretar y manejar las interfaces a estas librerías debido fundamentalmente a que los argumentos que aparecen en dichas interfaces hacen referencia al entorno paralelo con el que tienen que interactuar y no al problema que se tiene entre manos. Los investigadores e ingenieros  que se encuentran con este tipo de aplicaciones deben consumir un tiempo considerable desarrollando eficientemente y ejecutando sus códigos en entornos de alto rendimiento, cuando en realidad deberían consumir su tiempo usando sus aplicaciones computacionales y analizando los resultados.

                 Para aliviar esta situación, el grupo de Computación de Altas Prestaciones y Paralelismo ha propuesto la reutilización de librerías robustas altamente conocidas, desde un lenguaje de alto nivel como Python.  Una de estas colecciones de librerías son las librerías ACTS Collection (Advanced Computation Testing and Simulation) del NERSC. Python es un lenguaje de programación de libre distribución orientado a objetos e interpretado en tiempo de ejecución; es extensible con módulos compilados en otros lenguajes como C, Fortran, etc. En este sentido, Python posee un módulo (Numerical Python) de cálculo matricial compilado en C que permite diversas precisiones numéricas y operaciones como como obtención de filas, unión de matrices, transposición de índices, etc. Se ha constatado que Python es un recurso muy valioso para alcanzar flexibilidad y equilibrio entre el funcionamiento y la facilidad de empleo en el análisis de datos de problemas atmosféricos y oceánicos de grandes dimensiones. Actualmente, el grupo ha desarrollado ya las interfaces Python para las librerías BLACS, PBLAS y ScaLAPACK incluidas en las ACTS, denominados PyBLACS, PyPBLAS y PyScaLAPACK.  Para más información sobre la creación, uso, funciones y distribución de estas interfaces de alto nivel se puede consultar la web PyACTS.

                 Como se ha comentado, Python está siendo usado en problemas meteorológicos y atmosféricos. Durante los últimos años, debido fundamentalmente a la intervención humana en el clima, hay un creciente interés en la predicción del cambio climático bien atmosférico u oceánico. Este interés lleva al análisis de grandes conjuntos de datos para su posterior tratamiento en un modelo teórico e interpretación de los resultados obtenidos. Debido a esta gran cantidad de datos y a la naturaleza matricial no sólo de ellos sino de algunas de las técnicas utilizadas en los análisis de los mismos, se hace necesaria la intervención de la computación de altas prestaciones y del paralelismo para su manejo. Así, PyClimate (http://www.pyclimate.org) es una librería que implementa una gran variedad de funciones de uso común y muy frecuente en el análisis de la variabilidad climática, a la que se accede desde Python de forma secuencial y utilizando la funcionalidad proporcionada por LAPACK. En nuestro caso, nuestra labor de desarrollo de interfaces a las librerías ScaLAPACK (incluidas en las ACTS) está permitiendo obtener fácilmente paralelizaciones del código PyClimate.

 

 

La restauración de imágenes de dos dimensiones con la presencia de ruido requiere en general de la resolución de grandes sistemas de ecuaciones lineales. El término independiente representa los datos conocidos que se asume están contaminados por errores. El hecho de que la matriz del sistema sea de grandes dimensiones hace que su almacenamiento para un cálculo efectivo sea casi imposible. Es por ello que los métodos que se buscan deben poseer la característica de que no se requiera un rápido acceso simultáneo a los elementos de la matriz. Muchos métodos iterativos poseen esta propiedad. Además, debido a la sensibilidad de la solución del sistema respecto a las perturbaciones de los datos, es adecuado el uso de la regularización, es decir, el uso de determinados tipos de filtrado, como los filtros lineales, que reducen la influencia del error del término independiente en la solución aproximada calculada. La cantidad de filtrado se determina por un parámetro, denominado parámetro de regularización.

 

 

Imagen original (izquierda) e

 imagen con ruido (derecha)

Imagen restaurada

 Aunque hay buenos algoritmos de restauración, el problema radica en que en dichos algoritmos el número de productos matriz-vector requerido en las implementaciones es muy elevado y depende del número de iteraciones necesarias para converger y del nivel de ruido. Para conseguir que dichos algoritmos además sean también eficientes desde el punto de vista de tiempos de ejecución parece lógica su implementación paralela. Los objetivos marcados en esta línea pueden resumirse en los siguientes puntos:

 

· Diseño, evaluación e implementación de algoritmos paralelos para la restauración de imágenes.

· Desarrollo de unas librerías paralelas para la restauración y análisis de imágenes. La idea es que dichas librerías sean bastante transparentes a ciertos niveles, por lo que no será necesario que el usuario tenga conocimiento de paralelismo.

 

 

 

 

 

  Por ejemplo, al discretizar ecuaciones en derivadas parciales por técnicas numéricas, tan usuales hoy en día como las diferencias finitas o el método de elementos finitos, nos encontramos finalmente con un gran sistema de ecuaciones que puede ser lineal o no lineal. Estos sistemas resultantes son de gran tamaño, con el objetivo de conseguir en la discretización la mayor precisión posible. Si la discretización es consistente, el error cometido al discretizar tenderá a cero al aumentar el número de nodos, hecho que equivale a aumentar el orden del sistema.

                 Dadas las dimensiones de los sistemas a resolver, la utilización de métodos directos se hace inviable en la mayoría de los casos, teniendo que recurrir a métodos iterativos, los cuales pueden proporcionar una solución tan satisfactoria como los métodos directos, reduciendo los errores de redondeo. Además, la resolución directa de los sistemas no lineales, al margen del tamaño de los mismos, es impracticable en la inmensa mayoría de los casos debido al carácter no lineal de las ecuaciones. Por otro lado, para sistemas de orden elevado, la implementación de métodos iterativos en máquinas secuenciales presenta serios problemas que incluso, en determinados casos, pueden hacerla inviable. Nos referimos a problemas de memoria (la memoria disponible en una sola máquina puede no ser suficiente para atender a las necesidades de cálculo y almacenamiento de datos requeridos durante la ejecución de los programas) o a tiempos de ejecución excesivamente elevados. Una forma de subsanar las limitaciones de las máquinas secuenciales es el procesamiento paralelo.

                 Por estos motivos, la aparición de computadoras paralelas ha originado una adecuación de los algoritmos clásicos de la computación matricial para su implementación en dichas máquinas y, además, ha dado lugar a nuevas líneas de investigación dirigidas a diseñar nuevos métodos que obtengan un buen rendimiento en las máquinas paralelas. Dentro de este ámbito, hay que situar el contenido de esta línea de investigación en la que los objetivos marcados pueden resumirse en los siguientes puntos:

 

· Aplicación de la computación de altas prestaciones para problemas lineales al modelado de redes.

· Aplicación de la computación de altas prestaciones para matrices densas al análisis del crecimiento de grietas de estructuras.

· Aplicación de la computación de altas prestaciones para sistemas no lineales a problemas de combustión y dinámica de fluidos 3D.

· Desarrollo de software paralelo de altas prestaciones para la resolución de sistemas lineales y no lineales mediante técnicas no estacionarias y asíncronas.

Computación de altas prestaciones aplicada a la restauración de imágenes:

EJEMPLO DE PARALELIZACIÓN DE PyClimate

Conjunto de datos: Climate Diagnostic Center

                 - Variable: Temperatura del aire

                 - Medidas: 2.5 x 2.5 grados de latitud, longitud (144 x 73 puntos)

                 - Número de medidas: 2922 días desde 1998 hasta 2005

 

Obtención de los dos primeros EOF’s

 

 

 

 

 

 

 

 

 

 

 

 

 

Comparativa de tiempos

Entorno paralelo: Cluster de 6 Intel CPU, 2 GHZ conectados con Gigabit Ethernet