UNIVERSIDAD DE EXTREMADURA Escuela Politécnica Ingeniería Informática Proyecto Final de Carrera Aplicación de la Tecnología Grid al Tratamiento de Imágenes Hiperespectrales Fermín Ayuso Márquez Víctor Manuel Ochoa Sánchez Julio, 2008 UNIVERSIDAD DE EXTREMADURA Escuela Politécnica Ingeniería Informática Proyecto Final de Carrera Aplicación de la Tecnología Grid al Tratamiento de Imágenes Hiperespectrales Autores: Fermín Ayuso Márquez Víctor Manuel Ochoa Sánchez Fdo.: Director: Antonio Plaza Miguel Fdo.: Tribunal Calificador Presidente: <Nombre y Apellidos> Fdo: Secretario: : <Nombre y Apellidos> Fdo.: Vocal: : <Nombre y Apellidos> Fdo.: CALIFICACIÓN: FECHA: Índice de contenido Motivaciones y objetivos......................................................................................................8 Motivaciones......................................................................................................................8 Objetivos..........................................................................................................................10 Antecedentes.......................................................................................................................13 Concepto de imagen hiperespectral.................................................................................13 Sensores hiperespectrales...............................................................................................18 Algunos ejemplos de sensores hiperespectrales.............................................................23 Sensor AVIRIS.............................................................................................................23 Técnicas de particionamiento de datos para imágenes hiperespectrales.....................24 Procesamiento de la imagen hiperespectral.....................................................................30 Algoritmo paralelo para el reparto de carga.....................................................................31 Algoritmo de reparto de carga entre procesadores heterogéneos...................................32 Resultados experimentales................................................................................................34 Arquitectura empleada.....................................................................................................34 Análisis del rendimiento....................................................................................................35 Descripción de la imagen utilizada en las pruebas......................................................35 Análisis del rendimiento en un cluster heterogéneo....................................................38 Conclusiones y lineas de trabajo futuro...........................................................................89 Manual de Usuario...............................................................................................................91 Requisitos.........................................................................................................................91 Requisitos Hardware...................................................................................................91 Requisitos Software....................................................................................................91 Instalación........................................................................................................................92 Librerías......................................................................................................................92 Instalación de binarios.................................................................................................93 Ejecución..........................................................................................................................93 Versión secuencial.....................................................................................................93 Versión paralela...........................................................................................................94 Mensajes de error.............................................................................................................94 Manual del Programador....................................................................................................96 Entorno de desarrollo.......................................................................................................96 Estructuras de datos.........................................................................................................96 Unsigned char *...........................................................................................................96 BsqHeader..................................................................................................................97 sequential.c......................................................................................................................97 parallel.c.........................................................................................................................101 Referencias bibliográficas................................................................................................104 Artículos y Obras.......................................................................................................104 Webs Relacionadas...................................................................................................107 Apéndice............................................................................................................................108 Índice de ilustraciones Ilustración 1: Concepto de imagen hiperespectral.................................................................14 Ilustración 2: Adquisición de una imagen hiperespectral por el sensor AVIRIS.....................16 Ilustración 3: Tipos de píxels en imágenes hiperespectrales.................................................17 Ilustración 4: Tipos de sensores: (a) Sensor matricial. (b) sensor lineal o de empuje. (c) sensor de barrido...................................................................................................................21 Ilustración 5: Esquema del sensor hiperespectral AVIRIS.....................................................24 Ilustración 6: Diagrama representativo del procedimiento para obtener espectros puros.....27 Ilustración 7: Representación de la dilatación y erosión morfológica usada por el algoritmo AMEE....................................................................................................................................28 Ilustración 8: Partición dominio espectral y espacial.............................................................29 Ilustración 9: Imagen del sensor AVIRIS sobre la Jasper Ridge Biological Preserve (JRBP) de California..........................................................................................................................37 Ilustración 10: Firma espectral seleccionada de la imagen AVJRBP_RAD...........................38 Ilustración 11: Banda 224 de la imagen original..................................................................108 Ilustración 12: Banda 224 de la imagen procesada con una ventana 3x3...........................109 Ilustración 13: Banda 224 de la imagen procesada con una ventana 9x9...........................110 Índice de tablas Tabla 1: Características de la arquitectura heterogénea del Instituto de Astrofísica de Andalucía..............................................................................................................................35 Tabla 2: Tiempos de ejecución en serie para cada nodo de la arquitectura heterogénea.....38 Tabla 3: Resultados para una estimación de 2 líneas y 2 procesadores...............................40 Tabla 4: Resultados para una estimación de 2 líneas y 4 procesadores...............................40 Tabla 5: Resultados para una estimación de 2 líneas y 8 procesadores...............................41 Tabla 6: Resultados para una estimación de 2 líneas y 16 procesadores.............................42 Tabla 7: Resultados para una estimación de 2 líneas y 26 procesadores.............................43 Tabla 8: Resultados para una estimación de 5 líneas y 2 procesadores...............................45 Tabla 9: Resultados para una estimación de 5 líneas y 4 procesadores...............................46 Tabla 10: Resultados para una estimación de 5 líneas y 8 procesadores.............................46 Tabla 11: Resultados para una estimación de 5 líneas y 16 procesadores...........................47 Tabla 12: Resultados para una estimación de 5 líneas y 26 procesadores...........................49 Tabla 13: Resultados para una estimación de 10 líneas y 2 procesadores...........................51 Tabla 14: Resultados para una estimación de 10 líneas y 4 procesadores...........................51 Tabla 15: Resultados para una estimación de 10 líneas y 8 procesadores...........................52 Tabla 16: Resultados para una estimación de 10 líneas y 16 procesadores.........................53 Tabla 17: Resultados para una estimación de 10 líneas y 26 procesadores.........................54 Tabla 18: Resultados para una estimación de 20 líneas y 2 procesadores...........................56 Tabla 19: Resultados para una estimación de 20 líneas y 4 procesadores...........................56 Tabla 20: Resultados para una estimación de 20 líneas y 8 procesadores...........................57 Tabla 21: Resultados para una estimación de 20 líneas y 16 procesadores.........................58 Tabla 22: Resultados para una estimación de 20 líneas y 26 procesadores.........................59 Tabla 23: Resultados para una estimación de 30 líneas y 2 procesadores...........................62 Tabla 24: Resultados para una estimación de 30 líneas y 4 procesadores...........................62 Tabla 25: Resultados para una estimación de 30 líneas y 8 procesadores...........................63 Tabla 26: Resultados para una estimación de 30 líneas y 16 procesadores.........................64 Tabla 27: Resultados para una estimación de 30 líneas y 26 procesadores.........................66 Tabla 28: Resultados para una estimación de 60 líneas y 2 procesadores...........................67 Tabla 29: Resultados para una estimación de 60 líneas y 4 procesadores...........................67 Tabla 30: Resultados para una estimación de 60 líneas y 8 procesadores...........................68 Tabla 31: Resultados para una estimación de 60 líneas y 16 procesadores.........................69 Tabla 32: Resultados para una estimación de 60 líneas y 26 procesadores.........................71 Tabla 33: Resultados para una estimación de 120 líneas y 2 procesadores.........................72 Tabla 34: Resultados para una estimación de 120 líneas y 4 procesadores.........................72 Tabla 35: Resultados para una estimación de 120 líneas y 8 procesadores.........................73 Tabla 36: Resultados para una estimación de 120 líneas y 16 procesadores.......................74 Tabla 37: Resultados para una estimación de 120 líneas y 26 procesadores.......................76 Tabla 38: Resultados para una estimación de 240 líneas y 2 procesadores.........................77 Tabla 39: Resultados para una estimación de 240 líneas y 4 procesadores.........................78 Tabla 40: Resultados para una estimación de 240 líneas y 8 procesadores.........................79 Tabla 41: Resultados para una estimación de 240 líneas y 16 procesadores.......................80 Tabla 42: Resultados para una estimación de 240 líneas y 26 procesadores.......................81 Tabla 43: Requisitos hardware..............................................................................................91 Tabla 44: Requisitos software................................................................................................92 Fermín Ayuso y Víctor Manuel Ochoa Motivaciones y objetivos Motivaciones La realización de este Proyecto Fin de Carrera se encuentra enmarcado en las líneas de investigación actuales del Grupo de Redes Neuronales y Procesamiento de Señales (GRNPS) del Departamento de Tecnología de los Computadores y de las Comunicaciones de la Universidad de Extremadura. El GRNPS empezó su trabajo de investigación desarrollando algoritmos de computación neuronal para la posible cuantificación de espectros. Continuando con esta línea, sus investigaciones se han extendido al análisis de imágenes hiperespectrales de la superficie terrestre, obtenidas de forma remota, a partir de sensores de tipo satélite o aerotransportados. Uno de los problemas que se encuentran asociados a los sistemas automáticos de detección de objetivos es la elevada dimensión de las imágenes a procesar. Generalmente el tiempo de respuesta para estas aplicaciones ha de ser casi real y los resultados deben obtenerse en un corto periodo de tiempo, para, por ejemplo, en casos excepcionales, actuar con la mayor rapidez. Otro de los problemas, asociado a este anterior, es que, además, la elevada complejidad computacional de su tratamiento limita su explotación en situaciones en las que los requerimientos espaciales y temporales son altos. Existen muchos métodos para realizar el proceso de análisis de imágenes multiespectrales e hiperespectrales, muchos de ellos ya implementados en paralelo, para funcionar en arquitecturas de tipo Cluster, en las que todos lo nodos (ordenadores) conectados tienen características idénticas. Con la intención de crear sistemas informáticos paralelos efectivos específicos para las ciencias de la tierra y el espacio, el Center of Excellence in Space and Data Information Sciencies (CESDIS), locacalizado en el Goddard Space Flight Center en Maryland, desarrolló el concepto de cluster Beowulf. El poder de procesamiento ofrecido por dichos sistemas se ha empleado tradicionalmente en aplicaciones de 7 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales minería. Aunque la mayoría de las técnicas paralelas y sistemas para el procesamiento de información de imágenes y minería empleados por la NASA y otras instituciones durante la última década han sido principalmente homogéneos, aparece un tendencia actual en el diseño de sistemas para el análisis e interpretación de volúmenes masivos de datos, como consecuencia de la ciencia de la tierra y de misiones de exploración planetarias, depende de la utilización plataformas informáticas altamente heterogéneas. Por ello, este PFC intenta, con un algoritmo genérico, innovar en el área de la computación en sistemas heterogéneos, introduciendo técnicas para el correcto reparto de carga entre nodos de distintas características, haciendo, de esta forma, posible el análisis de imágenes hiperespectrales aprovechando las ventajas que aportan las arquitecturas de tipo heterogéneo. Para ello, el lenguaje de programación utilizado ha sido C, y para paralelizar, el código MPI. La realización de las pruebas y la comprobación del correcto funcionamiento del código desarrollado ha sido posible gracias al Instituto de Astrofísica de Andalucía (IAA) de Granada, donde se encuentra una arquitectura de tipo GRID y a la cual nos han dado acceso para realizar dichas pruebas. En el apartado Arquitectura empleada describiremos las características de dicha arquitectura. Además, se ha utilizado para la obtención de resultados la imagen AVJRPB_RAD descrita en una de las siguientes secciones (Descripción de la imagen). Objetivos El principal objetivo de este PFC es desarrollar un algoritmo que permita la correcta distribución de carga (cantidad de procesamiento) entre los distintos nodos de una red de ordenadores con arquitectura en GRID que permita que los algoritmos existentes para procesar imágenes hiperespectrales puedan ejecutarse en este tipo de arquitecturas Para poder alcanzar este objetivo, marcado anteriormente como principal, se han planteado y perseguido objetivos más específicos que se detallan a continuación: 1. Proceso de revisión de la bibliografía existente y exhaustivo estudio de las características principales de las imágenes hiperespectrales, así como de 8 Fermín Ayuso y Víctor Manuel Ochoa algunos algoritmos de procesamiento de dichas imágenes. 2. Implementación de un algoritmo genérico para el procesamiento de imágenes mediante un método de ventanas en su versión secuencial usando el lenguaje de programación C. 3. Desarrollo de dicho algoritmo en su versión paralela, haciendo uso de la librería MPI (Message Passing Interface) para facilitar el paso de mensajes entre los distintos nodos que existan en la arquitectura y comprobación de su correcto funcionamiento en una arquitectura de tipo Cluster, con los nodos homogéneos. 4. Comprobar la viabilidad de aplicar la metodología diseñada en aplicaciones reales, utilizando para ello imágenes obtenidas por una variedad de sensores hiperespectrales. 5. Implementación y desarrollo de código para estimar el correcto reparto de carga entre nodos heterogéneos. Para realizar esta tarea, las pruebas se han desarrollado en el cluster heterogéneo del IAA. 6. Realización de múltiples pruebas para comprobar distintos tamaños para la función de estimación de carga. 7. Desarrollo de un estudio detallado de los resultados obtenidos en las diferentes ejecuciones del código implementado. Este estudio exhaustivo supone una contribución novedosa con respecto a la literatura existente en el área de estudio considerada. Para una mayor comprensión de esta memoria, procedemos a describir los puntos que se tratarán, estructurando esta en una serie de secciones que se describen a continuación: 1) Antecedentes. En este capítulo introductorio se describen los conceptos fundamentales relacionados con análisis hiperespectral y procesamiento de datos. 2) Técnica de particionamiento de datos en imágenes hiperespectrales. En este capítulo se describe la técnica llevada a cabo para particionar la imagen hiperespectral en fragmentos que serán asignados a cada procesador. 9 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales 3) Algoritmo paralelo para reparto de carga. En este capítulo vamos a describir los pasos dados que se han realizado para estimar el reparto de carga entre diferentes procesadores. 4) Resultados experimentales. En este apartado presentamos la arquitectura y la descripción de la imagen utilizada para el estudio y exponemos los resultados obtenidos. 5) Manuales de usuario y programador: Se incluyen manuales tanto para los usuarios técnicos como para los usuarios finales de la aplicación desarrollada. 6) Conclusiones y lineas de trabajo futuro. Este capítulo resume las principales aportaciones realizadas por la presente memoria y muestra las conclusiones derivadas. A parte, sugiere un conjunto de lineas de trabajo que pueden ser abordadas en futuros trabajos. 7) Apéndice. En el apéndice se detallan la implementación del algoritmo de reparto de carga entre procesadores heterogéneos desarrollado en este PFC. La implementación ha sido desarrollada en el lenguaje de programación C incorporando las llamadas al interfaz estándar de paso de mensajes Message Passing Interface (MPI). 10 Fermín Ayuso y Víctor Manuel Ochoa Antecedentes En el presente capítulo trataremos de situar al lector en el marco en el que se desarrolla nuestro proyecto, explicando y resumiendo los principales términos que se usarán en el resto del documento. En primer lugar, describimos el concepto de imagen hiperespectral, detallando las particularidades y características propias de este tipo de imágenes. A continuación, describimos las principales características de la imagen utilizada en las pruebas realizadas. Por último discutiremos sobre las características del entorno donde realizamos las pruebas (Grid y Cluster) y haremos una descripción del entorno concreto donde hemos realizado las pruebas (IAA de Granada). Concepto de imagen hiperespectral Una imagen hiperespectral es una imagen en la que cada punto no viene descrito por un sólo valor de intensidad (como en una imagen "en blanco y negro") o por tres componentes de color (como en una imagen RGB de la pantalla del ordenador), sino por un vector de valores espectrales que se corresponden con la contribución de la luz detectada en ese punto a estrechas bandas del espectro, típicamente de entre 1 y 5 nm de ancho (el espectro visible abarca unos 300 nm), un número de bandas de entre las decenas hasta los varios centenares, en muchas ocasiones no limitado estrictamente al visible sino también en el infrarrojo y el ultravioleta (no son raros los sensores que cubren desde los 300 nm hasta los 2500 nm). Por eso se emplean el término "imagin spectroscopy" para referirse a los sensores de imagen hiperespectrales, porque en cierto modo es como si estuviéramos midiendo simultáneamente con multitud de espectrómetros (que sólo miden la luz incidente en un punto) toda una rejilla de puntos en una gran zona geográfica. El concepto de imagen hiperespectral se ha relacionado históricamente con uno de los primeros instrumentos de la NASA para la exploración de la tierra, el sistema Jet Propulsion Laboratory's Airbone Visible-Infrared Imaging Spectrometer (AVIRIS). El asentamiento de la tecnología hiperespectral en aplicaciones de observación remota de la tierra ha dado como resultado el desarrollo de instrumentos de medida de muy elevada resolución en los dominios espacial y espectral. Los sensores 11 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales hiperespectrales adquieren imágenes digitales en una gran cantidad de canales espectrales muy cercanos entre sí, obteniendo, para cada porción de la escena o píxel, una firma espectral característica de cada material. El resultado de la toma de datos por parte de un sensor hiperespectral sobre una Ba nd 1 as -4 ND en banda 4 Muestras ND en banda 3 ND en banda 2 ND en banda 1 Pixel en posición (x,y) Líneas Ilustración 1: Concepto de imagen hiperespectral. determinada escena puede ser representado en forma de cubo de datos, con dos dimensiones para representar la ubicación espacial de un píxel, y una tercera dimensión que representa la singularidad espectral de cada píxel en diferentes longitudes de onda. La ilustración 1 muestra la estructura de una imagen hiperespectral donde el eje X es el indicador de las líneas, el eje Y es el indicador de las muestras y el eje Z es el número de bandas, es decir, la longitud de onda de esa banda (canal). 12 Fermín Ayuso y Víctor Manuel Ochoa Como puede apreciarse en la ilustración 1, el resultado de la toma de datos por parte de un sensor hiperespectral sobre una determinada escena puede ser representado en forma de cubo de datos, con dos dimensiones para representar la ubicación espacial de un píxel, y una tercera dimensión que representa la singularidad espectral de cada píxel en diferentes longitudes de onda. En concreto, la capacidad de observación de los sensores denominados hiperespectrales permite la obtención de una firma espectral detallada para cada píxel de la imagen, dada por los valores de reflectancia Ilustración 2: Adquisición de una imagen hiperespectral por el sensor AVIRIS adquiridos por el sensor en diferentes longitudes de onda, lo cual permite una caracterización muy precisa de la superficie de nuestro planeta. Como ejemplo ilustrativo, la ilustración 2 muestra el procedimiento de análisis hiperespectral mediante un sencillo diagrama, en el que se ha considerado como ejemplo el sensor AVIRIS, el cual cubre el rango de longitudes de onda entre 0.4 y 2.5 µm utilizando 13 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales 224 canales y resolución espectral de aproximadamente 10 nm. Como puede apreciarse en la ilustración 2, la capacidad de observación de este sensor permite la obtención de una firma espectral detallada para cada píxel de la imagen, dada por los valores de reflectancia adquiridos por el sensor en diferentes longitudes de onda, lo cual permite una caracterización muy precisa de la superficie de nuestro planeta. Conviene destacar que, en este tipo de imágenes, es habitual la existencia de mezclas a nivel de subpíxel, por lo que a grandes rasgos podemos encontrar dos tipos de píxeles en estas imágenes: píxel puros y píxel mezcla. Se puede definir un píxel mezcla como aquel en el que cohabitan diferentes materiales. Este tipo de píxel son los que constituyen la mayor parte de la imagen hiperespectral, en parte, debido a que este fenómeno es independiente de la escala considerada ya que tiene lugar incluso a niveles microscópicos. La ilustración 3 muestra un ejemplo del proceso de adquisición de píxeles puros (a nivel macroscópico) y mezcla en imágenes hiperespectrales. Ilustración 3: Tipos de píxels en imágenes hiperespectrales El desarrollo tecnológico introducido por la incorporación de sensores hiperespectrales en plataformas de observación remota de la tierra de última generación ha sido particularmente notable durante los últimos años. En este sentido, conviene destacar que dos de las principales plataformas de tipo satélite que se 14 Fermín Ayuso y Víctor Manuel Ochoa encuentran en funcionamiento en la actualidad: Earth Observing-1 de NASA (http://eo1.gsfc.nasa.gov) y ENVISAT de la Agencia Espacial Europea (http://envisat.esa.int), llevan incorporados sensores de este tipo, permitiendo así la posibilidad de obtener imágenes hiperespectrales de la práctica totalidad del planeta de manera casi continua. A pesar de la gran evolución en los instrumentos de observación remota de la tierra, la evolución en las técnicas de análisis de los datos proporcionados por dichos sensores no ha sido tan notoria. En particular, la obtención de técnicas de análisis hiperespectral avanzadas, capaces de aprovechar totalmente la gran cantidad de información espacial y espectral presente en imágenes hiperespectrales, constituye un objetivo de gran interés para la comunidad científica. A continuación, describimos en detalle las características de los sensores hiperespectrales utilizados en el presente estudio. Sensores hiperespectrales En este apartado trataremos de describir algunos aspectos de los sensores hiperespectrales más actuales, por ejemplo, el tipo de sensor dependiendo de la adquisición de datos, la relación señal/ruido y la resolución del sensor. Además, estudiaremos de forma detallada los sensores hiperespectrales a partir de los cuales se han obtenido las imágenes utilizadas en el PFC. Un sensor hiperespectral es un dispositivo capaz de medir la radiación en gran cantidad de bandas muy estrechas, de forma que hace mucho más difícil que distintas combinaciones espectrales se confundan, aunque estas sean muy parecidas. Los sensores hiperespectrales son capaces de distinguir objetos, sustancias y materiales, que otro tipo de sensores, como los multiespectrales, no son capaces de reconocer. La capacidad de observación de los sensores hiperespectrales permite la obtención de una firma espectral detallada para cada píxel de la imagen, dada por los valores de reflectancia adquiridos por el sensor en diferentes longitudes de onda. Este hecho permite una caracterización muy precisa de la superficie del planeta. 15 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Con respecto a los tipos de sensores, existen dos grandes tipos: Sensores activos: poseen fuentes internas que generan artificialmente la radiación (radares). Sensores pasivos, que detectan la radiación electromagnética emitida o reflejada de fuentes naturales. Para nuestro estudio nos vamos a centrar en estos últimos, los sensores pasivos. Existe un amplia gama de ellos: sistemas fotográficos, radiómetros hiperespectrales y multiespectrales, espectrómetros de imagen. Un radiómetro, es un sistema ópticoelectrónico, que descompone la radiación recibida en varias longitudes de onda (bandas). Cada una de estas bandas se envía a un conjunto de detectores sensibles a esa región del espectro que la amplifican y la convierten en señal eléctrica y, por un proceso de conversión analógico-digital, en un valor numérico conocido como nivel digital (ND). Muchos sensores pasivos tienen lo que se conoce como sensibilidad hiperespectral, lo cual significa que recogen simultáneamente datos de entre decenas y centenas de bandas espectrales. Las mediciones sobre diferentes zonas del espectro electromagnético, aportan una amplia información a cerca de distintos aspectos del medio ambiente. Por ejemplo, la radiación ultravioleta se utiliza para monitorizar los niveles de ozono en las capas altas de la atmósfera. Las bandas visible e infrarrojas permiten determinar la salud de la cubierta vegetal (cultivos, bosques). Los captadores sensibles a la radiación infrarroja térmica sirven para determinar la temperatura del suelo, de las nubes, y de la superficie de los mares. Según el procedimiento utilizado por los sensores para recibir la radiación de los objetos, se pueden distinguir distintos tipos básicos de sensores: a) Sensores matriciales (‘frame cameras’): estos sensores electrónicos utilizan sensores de estado sólido tipo CCD o CMOS. Todos los elementos sensoriales están dispuestos en el plano focal y presentan la particularidad de que adquieren la imagen digital en un solo instante. La geometría de dichas imágenes corresponde al caso de la proyección central. Además, suelen aceptar la corrección del movimiento hacia delante (FMC) vía TDI (‘Time Delayed Integration’). Las resoluciones medias de 3K x 2K y 4K x 4K son las más extendidas y están disponibles 16 Fermín Ayuso y Víctor Manuel Ochoa en modo pancromático, color o falso color. Para obtener resoluciones equiparables con su homólogo analógico, se adoptan diseños modulares (de no menos de 2 x 2 sensores). b) Sensores lineales o de empuje (‘pushbroom scanners’): la captura de la imagen es un proceso continuo y totalmente electrónico, que se realiza mediante una serie de sensores lineales de estado sólido alineados entre ellos en posición perpendicular al avance del sensor. La geometría de la imagen es cilindro-cónica, también conocida con el nombre de perspectiva lineal, y se caracteriza porque cada línea de la imagen resultante precisa sus propios parámetros de orientación externa (POE), ajustándose a una proyección central. La sensibilidad espectral de estos sensores oscila entre 0.4 µm y 1 µm, por tanto abarcan el espectro electromagnético visible e infrarrojo cercano. c) Sensores de barrido o de rotación (‘whiskbroom scanners’): los sensores de rotación son de tipo electromecánico. La imagen se obtiene gracias a la rotación de un prisma o espejo que mueve instantáneamente el punto de vista (IFOV -‘Instantaneous Field of View’-) perpendicularmente a la dirección del sensor. De este modo, la formación de la imagen sigue un proceso continuo. La geometría resultante es cilíndrica, con las particularidades que ello implica. Por lo general, la sensibilidad espectral de estos sensores es mayor que los de empuje, ya que oscila entre 0.4 µm (visible) y 13 µm (infrarrojo lejano). Ilustración 4: Tipos de sensores: (a) Sensor matricial. (b) sensor lineal o de empuje. (c) sensor de barrido 2) La relación señal-ruido (signal-to-noise ratio -SNR-), es un parámetro 17 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales fundamental para definir la calidad de un sensor hiperespectral. Se puede definir como la cantidad de señal adquirida por unidad de ruido, es decir, la relación entre la amplitud de la señal obtenida y la amplitud del ruido. Esta relación depende de la anchura espectral, de la cantidad de radiación reflejada por el medio y de la sensibilidad del sensor. Dicha relación aumenta a medida que estos parámetros también lo hacen. 3) La resolución de un sensor es la capacidad para obtener información acerca de los detalles de la imagen. Dependiendo del tipo de información que nos aporten, podemos hablar de resolución espacial, espectral o radiométrica. ○ La resolución espacial proporciona el tamaño del menor objeto discriminable por el sensor. En este caso, define el tamaño y la forma de cada uno de los píxels. Se mide por el Instantaneous Field Of View (IFOV), que es la sección angular medida en radianes, observada en un instante determinado por el sensor. Se suele utilizar la distancia sobre el terreno que corresponde a ese ángulo y depende del ángulo de visión. Es diferente del pixel (Picture element): espaciado provocado por la frecuencia de muestreo. La mejor cobertura del terreno ocurre cuando ambas medidas coinciden. Influye en la información (valor digital) que ofrece el pixel. ○ La resolución espectral es el número y el ancho de las bandas espectrales que puede discriminar el sensores. También se puede definir como la capacidad del sensor para discriminar la radiancia detectada en distintas longitudes de onda del espectro. Viene determinada por el número de bandas que el sensor puede captar y por la anchura espectral de éstas. Es conveniente un número alto de bandas y bandas estrechas, ya que permite una discriminación más fina. En un sensor determinado, el número de bandas que posee y su anchura, dependen de la aplicación que se le haya querido dar al mismo. ○ La resolución radiométrica es la sensibilidad del sensor, es decir, la capacidad para detectar variaciones en la radiancia espectral que recibe. 18 Fermín Ayuso y Víctor Manuel Ochoa Determina el número de niveles de gris recogidos en la imagen, se expresa en niveles por pixel (64-128-256-1024). A mayor resolución radiométrica, mejor interpretación de la imagen. El pixel mixto es definido por una señal intermedia a las cubiertas que lo componen (Chuvieco, 1996). En dispositivos opto-electrónicos1 la radiancia incidente se registra matricialmente de forma digital. Cada pixel tiene asignado un número digital proporcional a la radiancia recibida. El almacenamiento digital es más inmune al ruido en la transmisión de información. La resolución radiométrica de un sensor viene dada por el número de niveles digitales que es capaz de codificar. Una mejor resolución radiométrica conduce a una mejor interpretación pero depende del método de interpretación. ○ Resolución temporal: frecuencia de cobertura que proporciona el sensor. La cadencia temporal de los sistemas espaciales varía de acuerdo a los objetivos fijados. Los diferentes tipos de resolución están muy relacionados. El mayor problema deriva de la transmisión de las imágenes a la superficie terrestre. Cada sistema ofrece unas características diferentes, según para los fines que se diseña. Un solo sistema no puede cubrir todas las expectativas. Por ejemplo, una alta resolución radiométrica implica un alto volumen de almacenamiento, lo que obliga a bajar la resolución espectral o para estudios de vegetación convienen resoluciones espaciales y espectrales altas. Algunos ejemplos de sensores hiperespectrales En el siguiente apartado describimos con más detalle el sensor hiperespectral del que se han escogido imágenes para realizar este trabajo. Sensor AVIRIS AVIRIS (Airborne Visible/InfraRed Imaging Spectrometer) es un sensor hiperespectral aerotransportado con capacidades analíticas en las zonas visible e infrarroja del espectro que lleva en funcionamiento desde 1987. Fue el primer 1. Dispositivos que están relacionados con la luz. 19 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales sistema de adquisición de imágenes capaz de obtener información en una gran cantidad de bandas espectrales estrechas y casi contiguas. En 1989, se convirtió en un instrumento aerotransportado y desde ese momento, se están realizando varias campañas de vuelo cada año para la toma de nuevos datos. Algunas de las características más relevantes del sensor AVIRIS son las siguientes: • Permite obtener información en 224 canales espectrales contiguos, con longitudes de onda entre 0.4 y 2.5 µm y con un ancho entre bandas de aproximadamente 0.01 metros. • Resolución espectral de 10 nm, resolución espacial de entre 5 y 20 metros y un campo de visión de unos 30º aproximadamente. • El sensor utiliza un explorador de barrido que permite obtener un total de 614 píxels por cada oscilación. • La cobertura de la parte visible del espectro es realizada por un espectrómetro EFOS- A, compuesto por un array de 32 detectores lineales. • La cobertura en el infrarrojo es realizada por los espectrómetros EFOS-B, EFOS-C y EFOS-D, compuestos todos ellos por arrays de 64 detectores lineales. Ilustración 5: Esquema del sensor hiperespectral AVIRIS Técnicas de particionamiento imágenes hiperespectrales de datos para Las técnicas que gobiernan el análisis de datos hiperespectrales tratan de 20 Fermín Ayuso y Víctor Manuel Ochoa medir la respuesta de cada firma espectral para múltiples materiales subyacentes para cada sitio. Por ejemplo, el vector del píxel etiquetado como “vegetation + soil” de la ilustración 3 es un píxel mixto que comprende una mezcla de vegetación y tierra o de diferentes tipos de cubiertas de tierra y vegetación. Esta situación, a menudo denominada como “problema mixto” en terminología de análisis hiperespectrales, es una de las más cruciales y con propiedades de distinguir análisis de imágenes hiperespectrales. Los píxeles mixtos existen por varias razones. Primero, si la resolución espacial del sensor no es suficientemente alta para separar diferentes materiales, este puede ocupar conjuntamente un píxel sencillo, y la medida espectral resultante será un compuesto de los espectros individuales. Segundo, los píxeles mixtos pueden ser consecuencia también de la combinación de dos materiales distintos en una mezcla heterogénea. Esta circunstancia ocurre independientemente de la resolución espacial del sensor. Una imagen hiperespectral a menudo es una combinación de las dos situaciones anteriormente descritas, donde unos pocos emplazamientos en una imagen son materiales puros, pero algunos otros son mezclas de materiales. Para tratar con el problema mixto en una imagen hiperespectral, se ha propuesto un procedimiento de análisis consolidado en el cual el espectro medido de un píxel mixto es descompuesto en una recopilación de cada endmember presente en el píxel mixto. La ilustración 6 muestra el procedimiento para obtener un espectro puro, en la cual, en primer lugar la imagen hiperespectral de entrada es reducida (este paso es opcional) y luego se extraen los endmembers puros de la imagen. El último paso es la descomposición de los píxeles mixtos en mapas fraccionados a través de un proceso de inversión lineal. Durante la última década, se han propuesto algunos algoritmos con el propósito de extraer de forma automática los endmembers espectrales desde datos de imágenes hiperespectrales. La extracción automática y morfológica de endmembers (automated morphological endmember extraction - AMEE) resulta ser la única técnica disponible que integra la información espacial y espectral en la investigación de endmembers hiperespectrales. El método se basa en la utilización de un núcleo o elemento estructural, que se 21 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales desplaza a través de todos los píxeles de la imagen, definiendo un área de búsqueda espacial alrededor de cada vector del píxel. Ilustración 6: Diagrama representativo del procedimiento para obtener espectros puros El valor del espectro más puro y el valor del espectro con más mezcla se obtienen respectivamente de la vecindad de cada píxel, mediante el cálculo del ángulo espectral entre el más puro y el que contiene más mezcla. La ilustración 7 muestra un ejemplo de la ejecución de las dos operaciones morfológicas para la selección de píxeles mixtos/puros. Como muestra dicha figura, la dilatación morfológica expande las áreas más puras en la escena, al seleccionar los píxeles de mayor pureza (representados como píxeles blancos y oscuros) en los elementos estructurales vecinos. Casi de forma opuesta, el desgaste o erosión morfológica expande las áreas de más alta pureza de la imagen hiperespectral, seleccionando los píxeles con mayor grado de mezcla (representados como grises) en la misma vecindad. Estas operaciones se repiten para todos los píxeles de la escena, hasta que se genera un MEI (Morphological Eccentricity Index) para cada vector de píxeles. Los píxeles con mayores valores MEI se asumen que son los endmembers finales. 22 Fermín Ayuso y Víctor Manuel Ochoa Ilustración 7: Representación de la dilatación y erosión morfológica usada por el algoritmo AMEE Debe resaltarse que tanto la identificación de endmembers en las imágenes como el subsiguiente proceso de pureza son problemas computacionalmente demandados. Sin embargo, se han realizado pocos esfuerzos en la investigación de diseños de implementaciones paralelas. En particular, algunas técnicas están sujetas a restricciones no reveladas debido principalmente a su uso en el campo militar y en aplicaciones de defensa. No obstante, con la reciente explosión de la cantidad y dimensionalidad de las imágenes hiperespectrales, se espera que el procesamiento paralelo se convierta en un requerimiento para cada aplicación de sensores remotos. Es importante recalcar que las técnicas de análisis espectrales se centran sobre el análisis de datos basados en las propiedades de las firmas espectrales, es decir, utilizan la información dada por cada píxel vector como un “todo”. Esta consideración tiene un impacto significativo sobre el diseño de las estrategias de partición de datos para la paralelización. En particular, se ha mostrado en la literatura que el ámbito de las técnicas de descomposición aporta flexibilidad y escalabilidad en el procesamiento paralelo de imágenes. En una imagen hiperespectral, se pueden hacer dos tipos de particiones: partición del dominio espectral y partición del dominio espacial. La primera subdivide el volumen en sub-volúmenes hechos de bandas espectrales continuas y asigna uno o más sub-volúmenes a cada procesador (ver ilustración 8a). Con este modelo, cada píxel vector es dividido entre varios procesadores incrementando así el coste de comunicación asociado a la computación 23 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales basada en firmas espectrales. Con el fin de aprovechar lo máximo posible el paralelismo, adoptamos la partición del dominio espacial (ver ilustración 8b), en a que el dato es partido en bloques que retienen la información espectral completa. Existen varias razones que justifican esta elección de incorporar dicha técnica de partición en la aplicación: Ilustración 8: Partición dominio espectral y espacial 1. En primer lugar, la partición por el dominio espacial es una aproximación natural para el procesamiento de imágenes de bajo nivel aunque muchas operaciones de procesamiento de imagen requieren que se aplique la misma función a pequeños grupos de elementos alrededor de cada píxel vector completo en el volumen de la imagen. 2. En segundo lugar, en la partición por el dominio espectral, los cálculos realizados para cada píxel vector necesitan originarse desde algunos procesadores y por tanto requieren comunicación entre procesadores muy masiva. Esto generalmente se percibe como un defecto para los diseños paralelos, ya que el tiempo de comunicación entre procesadores incrementaría de forma lineal con el incremento del número de procesadores, complicando así el diseño de algoritmos paralelos (particularmente en entornos heterogéneos). 3. Por último, la reutilización del código. Para disminuir la redundancia del código e incrementar la portabilidad, es deseable reutilizar muchas partes del código para los algoritmos secuenciales en el diseño de su correspondiente 24 Fermín Ayuso y Víctor Manuel Ochoa versión paralela y una aproximación del dominio espacial aumenta de forma importante esta posible reutilización. En la siguiente sección, mostraremos como el algoritmo paralelo desarrollado en este trabajo esta diseñado bajo la suposición de que cada píxel vector es únicamente representado por su firma espectral. Por lo tanto, la introducción de la descomposición basada en una aproximación en el dominio espectral requeriría estrategias para combinar los resultados parciales de algunos elementos procesados. Es por ello por lo que se ha escogido una partición del dominio espacial, para mantener la información espectral completa de cada píxel. Procesamiento de la imagen hiperespectral Antes de explicar la forma en que se procesa la imagen hiperespectral en nuestro caso, desarrollaremos algunos conceptos para familiarizar al lector con el procesamiento de imágenes. La ventana de procesamiento es el grupo de píxeles contiguos al punto en estudio y que forman una matriz de nxn. Esta matriz, conocida como ventana, se tomará como referencia a la hora de generar el nuevo valor del punto. La técnica de ventana de procesamiento se aplica en el tratamiento de imágenes de muchas formas diferentes, por ejemplo a la hora de aplicar filtros. En nuestro caso se ha optado por “aplanar” la imagen, calculando la media de la ventana y guardando el resultado en el píxel en estudio. Como se ha visto en anteriores secciones, una imagen hiperespectral está formada por una serie de bandas que forman cada una de las capas de la imagen. Observando la imagen desde el punto de vista de los píxeles, tendremos una serie de vectores que representan cada uno de los puntos de la imagen. En el procesamiento de imágenes hiperespectrales se trata cada píxel como si de un vector se tratase. De esta forma, nuestro algoritmo de procesado toma para cada píxel de la imagen los nxn vectores adyacentes al píxel en estudio. El algoritmo recorre todos los puntos de la imagen y para cada vector calcula la media. Uno de los puntos interesantes de este trabajo es que el nodo master es el único que necesita tener físicamente los ficheros de la imagen (archivos .bsq y .hdr). El master 25 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales lee la información necesaria y se la comunica al resto de nodos. De esta forma, se establece un paso previo para la implementación en una arquitectura GRID. Algoritmo paralelo para el reparto de carga Esta sección describe el algoritmo paralelo que ha sido implementado y utilizado para este estudio. Antes de introducir la descripción del algoritmo, vamos a formular un problema general de optimización en el contexto de los sistemas completamente heterogéneos. Asumimos que el procesamiento de elementos en el sistema pueden ser modelados por un conjunto de recursos informáticos P={pi} |P| i=1, donde |P| es el número total de procesadores en el sistema, y cada procesador se mide por su velocidad relativa wi. Con el fin de estimar velocidades relativas para los procesadores, utilizamos una función benchmark representativa que hace uso de una computación directamente relacionada con el dominio de la aplicación considerada. También denominamos W a la cantidad de trabajo total que debe realizar un algoritmo para imágenes hiperespetrales. Esta cantidad de trabajo depende del algoritmo que consideremos. Puesto que la mayoría de los algoritmos de procesado en las aplicaciones de imágenes hiperespectrales engloban repetidas operaciones de productos vectoriales, podemos medir la cantidad de trabajo implicada en cada algoritmo en términos de operaciones elementales de multiplicación/acumulación (MAC). Con la anterior fórmula presente, el procesador pi consigue una parte de αi x W del trabajo total ejecutado por un determinado algoritmo, donde αi ≥ 0 para 1 ≤ i ≤ P y Σ|p| i=1 αi = 1. Una visión abstracta del problema puede ser simplemente exponer una arquitectura cliente-servidor, en la que el nodo servidor es responsable de la distribución de trabajo entre los nodos |P|, y el nodo cliente opera con las firmas espectrales contenidas en la partición local. Las particiones locales se actualizan localmente y, dependiendo de los algoritmos, los cálculos resultantes pueden también intercambiarse entre los procesadores cliente, o entre los servidores y los clientes. La secuencia general de operaciones ejecutadas se resume como sigue: 26 Fermín Ayuso y Víctor Manuel Ochoa Algoritmo de reparto de carga entre procesadores heterogéneos. 1. Generamos la información necesaria, incluyendo el número de procesadores disponibles en el sistema, |P|, y el número identificativo para cada procesador, {p i }∣P∣ i =1 2. El procesador master obtiene las N primeras lineas de la imagen hiperespectral contenida en el fichero bsq, siendo N el número de lineas que vamos a utilizar para la estimación de carga por parte de cada procesador. 3. Comunicamos a cada procesador, mediante una función de broadcast, estas N lineas leídas por el master. 4. Cada procesador calcula el tiempo que tarda en procesar estas N lineas y se lo comunica al master. Para ello, procesa X veces las N lineas y calcula el tiempo empleado en cada una de las veces. El tiempo que comunica cada procesador al master se calcula de la siguiente forma X ∑ TimeProccess N i =0 , donde TimeProcess (N) es el tiempo empleado en X procesar N lineas. El proceso a las que son sometidas las N primeras lineas de la imagen es el que se detalla en el apartado Procesamiento de la imagen hiperespectral, y se realiza con un tamaño de ventana fijo e igual a 3x3. 5. El tiempo estimado para cada procesador, una vez que el master lo ha recibido, es almacenado por el master en una estructura tipo vector, donde el índice de ese vector indica el identificador del procesador. 6. Una vez que se obtienen los tiempos para todos los procesadores, nos disponemos a estimar el número de lineas que le corresponden a cada procesador, dependiendo de los tiempos calculados en el paso anterior. Para ello, realizamos un reparto inversamente proporcional, consiguiendo así que a los procesadores que han tardado más tiempo en procesar las N lineas se les asigne menos lineas de la imagen hiperespectral a procesar. El reparto se puede resumir en las siguientes fórmulas: 27 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales NumProcessors NumLines= ∑ i=0 1 ×K Timei donde K es la constante de proporcionalidad, Timei es el tiempo estimado para el procesador i, siendo i el identificador de cada procesador y NumLines el número total de las lineas de la imagen hiperespectral a procesar. Si de esta última fórmula despejamos el valor de K, obtendremos el valor de la constante de proporcionalidad NumLines K= NumProcessors ∑ i=0 1 que nos servirá a la Timei hora de asignar lineas a cada procesador. 7. Una vez obtenido el valor de la constante de proporcionalidad K, nos disponemos a repartir el número de lineas que le corresponden a cada uno de los procesadores que participan de la siguiente forma: Pi = K siendo 0 ≤ i ≤ P Timei 8. Por último, al tratar con números no enteros, es posible que no se asignen el total de las lineas de la imagen a procesar. Para solucionar este problema, se ordena el vector de tiempos estimados para cada procesador y se van asignando una a una las lineas sobrantes a los procesadores que menos tiempo han tardado en estimar. Siguiendo estos pasos, se ha conseguido un reparto de carga equitativo entre los distintos procesadores que participan en el procesado de la imagen hiperespectral. En las siguiente sección veremos los resultados obtenidos al aplicar esta metodología, eligiendo para cada una de las pruebas un tamaño de N (recuérdese que N es el número de lineas utilizadas para estimar el balanceo) diferente. Resultados experimentales Esta sección proporciona una evaluación de la eficiencia del algoritmo descrito en el apartado anterior. Antes de comenzar con el desarrollo del estudio, empezaremos describiendo la arquitectura y la imagen empleadas para la evaluación. 28 Fermín Ayuso y Víctor Manuel Ochoa Arquitectura empleada Para el desarrollo de este trabajo, se ha utilizado una plataforma de computación paralela con arquitectura heterogénea. La tabla 1 muestra las especificaciones de los nodos de esta arquitectura heterogénea, disponible en el departamento de Astrofísica Extragaláctica, del Instituto de Astrofísica de Andalucía (CSIC). La arquitectura heterogénea está compuesta por 13 nodos con dos procesadores cada uno y con una velocidad entre 2,73 y 2,92 Ghz por procesador. El sistema operativo utilizado por cada uno de los nodos es Linux 2.6.17-5mdv(x86). La memoria RAM es idéntica para todos los nodos (1,98 GB) y la memoria de intercambio está entre 977 MB y 2047.3 MB. NOMBRE CPU DISCO LOCAL MEMORIA RAM SWAP hyper03 2 x 2.73 Ghz 1559.475 GB 1.98 GB 1953.9 MB hyper04 2 x 2.73 Ghz 1581.202 GB 1.98 GB 1023.7 MB hyper05 2 x 2.73 Ghz 1581.206 GB 1.98 GB 1019.7 MB hyper06 2 x 2.92 Ghz 1621.105 GB 1.98 GB 2047.3 MB hyper07 2 x 2.92 Ghz 1621.098 GB 1.98 GB 2047.3 MB hyper09 2 x 2.92 Ghz 1621.098 GB 1.98 GB 2047.3 MB hyper10 2 x 2.92 Ghz 1621.098 GB 1.98 GB 2047.3 MB hyper11 2 x 2.73 Ghz 1581.252 GB 1.98 GB 977.0 MB hyper12 2 x 2.73 Ghz 1581.251 GB 1.98 GB 977.0 MB hyper13 2 x 2.73 Ghz 1581.251 GB 1.98 GB 977.0 MB hyper14 2 x 2.73 Ghz 1581.251 GB 1.98 GB 977.0 MB hyper15 2 x 2.73 Ghz 1581.198 GB 1.98 GB 1019.7 MB hyper16 2 x 2.73 Ghz 1581.198 GB 1.98 GB 1019.7 MB SISTEMA OPERATIVO Linux 2.6.17-5mdv (x86) Tabla 1: Características de la arquitectura heterogénea del Instituto de Astrofísica de Andalucía Análisis del rendimiento Descripción de la imagen utilizada en las pruebas Una vez que conocemos de forma genérica el concepto de imagen hiperespectral y la arquitectura en la que se ha realizado el estudio, vamos a intentar 29 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales presentar las características de la imagen utilizada para realizar las pruebas de estimación de carga entre los distintos procesadores, del tiempo de ejecución, del procesamiento de la imagen, etc. Imagen AVJRBP_RAD El algoritmo paralelo desarrollado ha sido aplicado a la imagen obtenida por el sensor AVIRIS, operado por el Jet Propulsion Laboratory de la NASA, sobre la Jasper Ridge Biological Preserve (JRBP) de California. Estos datos están disponibles en unidades de radiancia (obtenidos de http://aviris.jpl.nasa.gov ). El conjunto de datos, adquiridos en abril de 1998 consiste en 512 x 614 píxeles y 224 bandas espectrales con una resolución del terreno de 20 metros, una resolución espectral de 10nm, y 16-bits de resolución radiométrica (tamaño de la imagen: 134 MB). La ilustración 5 muestra una banda espectral de la imagen. Ilustración 9: Imagen del sensor AVIRIS sobre la Jasper Ridge Biological Preserve (JRBP) de California En la ilustración 10 se muestran firmas espectrales en unidades de radiancia asociadas con los principales componentes que constituyen la JRBP. Las firmas, denotadas como г1 (suelo), г2 (bosques), г3 (hierba seca), г4 (vegetación “chaparral”) y г5 (sombra), fueron obtenidas de la escena de la imagen usando un método híbrido, 30 Fermín Ayuso y Víctor Manuel Ochoa combinando inspecciones visuales e información a cerca de la escena. De forma específica el conocimiento del terreno se usó para identificar zonas de vegetación homogénea y áreas de sombra y suelo en la imagen. Ilustración 10: Firma espectral seleccionada de la imagen AVJRBP_RAD Análisis del rendimiento en un cluster heterogéneo Las primeras pruebas desarrolladas sobre esta imagen han sido las de procesado, siguiendo el método descrito en el apartado Procesamiento de la imagen hiperespectral, para el caso de una ejecución secuencial y con distintos tamaños de ventana. En la tabla 2 se muestran los tiempos de ejecución, expresados en segundos, para cada nodo de la arquitectura, para los diferentes tamaños de ventana escogidos. Nodo Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 hyper03 29,66 95,33 237,33 424 hyper04 27,66 90,33 227,5 413 hyper05 30,66 100 245 436 hyper06 18,33 55 118 204 hyper07 18,66 55 118 206 hyper09 18,66 55 117 205 hyper10 18,66 55 118 206 hyper11 34,66 104 264 454 hyper12 30 96 236 427 hyper13 28,66 92 233 419 hyper14 29,66 96 242 432 hyper15 29,33 96 235 418 31 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales hyper16 28,66 93 233 425 Tabla 2: Tiempos de ejecución en serie para cada nodo de la arquitectura heterogénea Estudio del rendimiento de la versión paralela diseñada Los resultados que se muestran a continuación son los de un estudio detallado del comportamiento de la versión paralela desarrollada para una multitud de pruebas detalladas en los siguientes puntos. Hay que tener en cuenta que los tiempos que se muestran son el resultado de haber ejecutado 10 veces cada prueba, mostrando los tiempos medios resultantes. Lo que presentamos como balanceo medio es la media de los balanceos obtenidos en cada una de estas 10 ejecuciones, y la varianza y desviación típica mostradas para cada caso han sido calculadas en referencia a este valor del balanceo. El balanceo global es obtenido de la siguiente forma: Tiempo mayor . Siendo Tiempomayor el mayor valor de los tiempos medios de Tiempo menor procesamiento de los distintos procesadores y Tiempomenor el menor de ellos. También cabe resaltar que el Tiempo de proceso-Total es el tiempo de procesamiento medio. El tiempo que se muestra está medido en segundos. Para todas las pruebas realizadas, se ha tomado el procesador master como uno de los dos procesadores del nodo hyper03. Todas las pruebas realizadas han sido llevadas a cabo variando el número de procesadores entre 2 y 26, que es el máximo que nos permitía la arquitectura. Resultados del estudio con un tamaño de la función benchmark de 2 lineas Las siguientes tablas muestran el comportamiento de la versión paralela cuando estimamos la carga de los procesadores con 2 lineas para la función benchmark. Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 9,03837 33,615 68,692 125,005 T. en calcular Workload - Master 0,037222 0,0371 0,0372 0,037 Tiempo procesar Slave 8,77903 30,893 77,74 126,167 T. en calcular Workload - Slave 0,0371025 0,0373 0,0371 0,0373 Tiempo de proceso - Total 9,342234 33,9884 78,221 128,702 1,0312 1,0943 1,138 1,044 Balanceo Medio 32 Fermín Ayuso y Víctor Manuel Ochoa Varianza 0,0004141 0,04023 0,0367 0,0008 Desviación típica 0,02035 0,2001 0,192 0,028 Balanceo Global 1,0295 1,088 1,132 1,009 Tabla 3: Resultados para una estimación de 2 líneas y 2 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 4,496112 15,392 34,578 60,51 T. en calcular Workload - Master 0,0372042 0,0371 0,03716 0,0371 Tiempo procesar Slave 1 4,439994 15,449 34,527 61,894 T. en calcular Workload - Slave 1 0,03705 0,0371 0,0374 0,0372 Tiempo procesar Slave 2 4,390693 15,386 33,56 61,776 T. en calcular Workload - Slave 2 0,037253 0,0372 0,0385 0,0373 Tiempo procesar Slave 3 4,279434 15,132 32,847 59,874 T. en calcular Workload - Slave 3 0,0375 0,0382 0,0382 0,0371 Tiempo de proceso - Total 5,09158 16,197 35,714 63,332 Balanceo Medio 1,06113 1,0713 1,11 1,062 Varianza 0,00099 0,0083 0,0144 0,00059 Desviación típica 0,031555 0,0913 0,12 0,0244 Balanceo Global 1,0506 1,021 1,053 1,034 Tiempo de proceso - Master Tabla 4: Resultados para una estimación de 2 líneas y 4 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 2,09415 7,163 15,839 27,772 T. en calcular Workload - Master 0,03705 0,0371 0,0372 0,0382 Tiempo procesar Slave 1 2,05879 7,418 16,37 30,322 T. en calcular Workload - Slave 1 0,03826 0,371 0,0371 0,0371 Tiempo procesar Slave 2 2,05661 7,385 16,39 30,391 T. en calcular Workload - Slave 2 0,03712 0,0371 0,0373 0,0372 Tiempo procesar Slave 3 2,071311 7,29 16,124 30,998 T. en calcular Workload - Slave 3 0,03713 0,037 0,0375 0,0373 Tiempo procesar Slave 4 2,0652 7,278 16,123 29,908 T. en calcular Workload - Slave 4 0,03714 0,0371 0,037 0,0372 2,0011 7,196 16,144 29,058 T. en calcular Workload - Slave 5 0,03823 0,0371 0,0371 0,0384 Tiempo procesar Slave 6 2,3083 7,947 17,933 32,139 T. en calcular Workload - Slave 6 0,02986 0,030 0,0297 0,0297 Tiempo procesar Slave 7 2,3016 7,715 17,144 30,336 Tiempo procesar Slave 5 33 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales T. en calcular Workload - Slave 7 0,02987 0,03 0,0298 0,0297 Tiempo de proceso - Total 3,0082 8,243 18,167 32,905 Balanceo Medio 1,1806 1,123 1,142 1,211 Varianza 0,00821 0,00047 0,0006 0,163 Desviación típica 0,091 0,0216 0,0246 0,128 Balanceo Global 1,1535 1,109 1,132 1,157 Tabla 5: Resultados para una estimación de 2 líneas y 8 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 1,0408 3,503 7,914 13,83 T. en calcular Workload - Master 0,03711 0,0371 0,0371 0,0372 Tiempo de proceso - Slave 1 1,03534 3,712 8,473 15,874 T. en calcular Workload - Slave 1 0,03827 0,0384 0,0382 0,0371 Tiempo de proceso - Slave 2 1,0426 3,689 8,682 15,907 T. en calcular Workload - Slave 2 0,03711 0,0383 0,0371 0,0371 Tiempo de proceso - Slave 3 1,0272 3,724 8,601 15,748 T. en calcular Workload - Slave 3 0,03715 0,037 0,0372 0,0371 Tiempo de proceso - Slave 4 1,0275 3,782 8,625 15,755 T. en calcular Workload - Slave 4 0,0384 0,0372 0,37 0,0371 Tiempo de proceso - Slave 5 1,0339 3,691 8,641 15,924 T. en calcular Workload - Slave 5 0,0371 0,037 0,037 0,0371 Tiempo de proceso - Slave 6 1,086 3,848 8,805 16,02 T. en calcular Workload - Slave 6 0,0299 0,0302 0,0298 0,03 Tiempo de proceso - Slave 7 1,072 3,914 8,551 16,014 T. en calcular Workload - Slave 7 0,0309 0,0297 0,031 0,0298 Tiempo de proceso - Slave 8 1,0837 3,782 8,662 15,802 T. en calcular Workload - Slave 8 0,0299 0,0298 0,0298 0,0298 Tiempo de proceso - Slave 9 1,0787 3,725 8,587 15,659 0,03 0,0298 0,0299 0,0298 Tiempo de proceso - Slave 10 1,0359 3,736 8,337 15,692 T. en calcular Workload - Slave 10 0,0308 0,0298 0,0308 0,0297 Tiempo de proceso - Slave 11 1,0573 3,704 8,567 15,63 T. en calcular Workload - Slave 11 0,0297 0,0297 0,0298 0,0297 Tiempo de proceso - Slave 12 1,0659 3,724 8,525 15,533 T. en calcular Workload - Slave 12 0,0297 0,0299 0,0301 0,0298 Tiempo de proceso - Slave 13 1,0687 3,681 8,471 15,562 T. en calcular Workload - Slave 13 0,0297 0,0297 0,03 0,0299 Tiempo de proceso - Slave 14 0,998 3,65 8,323 15,232 T. en calcular Workload - Slave 14 0,0372 0,0373 0,0372 0,0376 T. en calcular Workload - Slave 9 34 Fermín Ayuso y Víctor Manuel Ochoa Tiempo de proceso - Slave 15 0,976 3,439 7,588 13,628 T. en calcular Workload - Slave 15 0,0371 0,0371 0,0372 0,0372 Tiempo de proceso - Total 2,1495 4,705 9,188 16,397 Balanceo Medio 1,2352 1,192 1,219 1,194 Varianza 0,0121 0,0039 0,0084 0,0005 Desviación típica 0,11 0,0628 0,0914 0,0232 Balanceo Global 1,113 1,138 1,113 1,176 Tabla 6: Resultados para una estimación de 2 líneas y 16 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 0,6793 2,302 5,185 9,508 T. en calcular Workload - Master 0,037 0,0371 0,0371 0,037 Tiempo procesar Slave 1 0,6985 2,538 5,973 11,451 T. en calcular Workload - Slave 1 0,0372 0,0383 0,0382 0,0374 0,68 2,578 6,131 11,562 T. en calcular Workload - Slave 2 0,0371 0,0371 0,0371 0,0371 Tiempo procesar Slave 3 0,683 2,505 6,038 11,374 T. en calcular Workload - Slave 3 0,0371 0,038 0,0371 0,037 Tiempo procesar Slave 4 0,6777 2,53 6,043 11,25 T. en calcular Workload - Slave 4 0,0372 0,0378 0,0372 0,0382 Tiempo procesar Slave 5 0,681 2,551 6,079 11,392 T. en calcular Workload - Slave 5 0,0371 0,0371 0,0371 0,0371 Tiempo procesar Slave 6 0,7052 2,518 5,768 10,715 T. en calcular Workload - Slave 6 0,0298 0,0299 0,0298 0,298 Tiempo procesar Slave 7 0,686 2,54 5,784 10,65 T. en calcular Workload - Slave 7 0,0299 0,0297 0,0297 0,0297 Tiempo procesar Slave 8 0,687 2,513 5,754 10,609 T. en calcular Workload - Slave 8 0,297 0,0297 0,0299 0,0299 Tiempo procesar Slave 9 0,688 2,505 5,751 10,671 T. en calcular Workload - Slave 9 0,0297 0,0297 0,0297 0,297 Tiempo procesar Slave 10 0,691 2,487 5,760 10,656 T. en calcular Workload - Slave 10 0,0299 0,0299 0,0299 0,297 0,68 2,497 5,678 10,598 T. en calcular Workload - Slave 11 0,0299 0,0298 0,298 0,0298 Tiempo procesar Slave 12 0,691 2,446 5,673 10,492 T. en calcular Workload - Slave 12 0,0298 0,0298 0,0298 0,0298 Tiempo procesar Slave 13 0,666 2,405 5,537 10,383 T. en calcular Workload - Slave 13 0,0298 0,0297 0,0297 0,0298 Tiempo procesar Slave 14 0,6495 2,413 5,699 10,91 Tiempo procesar Slave 2 Tiempo procesar Slave 11 35 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales T. en calcular Workload - Slave 14 0,0371 0,0372 0,0373 0,0383 Tiempo procesar Slave 15 0,646 2,418 5,655 11,181 T. en calcular Workload - Slave 15 0,0371 0,037 0,0377 0,0371 Tiempo procesar Slave 16 0,643 2,441 5,743 11,127 T. en calcular Workload - Slave 16 0,0375 0,0373 0,0373 0,037 Tiempo procesar Slave 17 0,649 2,405 5,715 11,019 T. en calcular Workload - Slave 17 0,0371 0,0372 0,0372 0,0371 Tiempo procesar Slave 18 0,648 2,433 5,71 11,122 T. en calcular Workload - Slave 18 0,0371 0,0371 0,037 0,0371 Tiempo procesar Slave 19 0,652 2,423 5,745 11,025 T. en calcular Workload - Slave 19 0,0371 0,0372 0,0371 0,0372 Tiempo procesar Slave 20 0,665 2,439 5,773 11,137 T. en calcular Workload - Slave 20 0,037 0,0372 0,0371 0,0373 Tiempo procesar Slave 21 0,65 2,415 5,71 11,005 T. en calcular Workload - Slave 21 0,037 0,0372 0,0372 0,0371 Tiempo procesar Slave 22 0,653 2,411 5,755 11,137 T. en calcular Workload - Slave 22 0,0372 0,0372 0,0372 0,0373 Tiempo procesar Slave 23 0,636 2,369 5,699 11,09 T. en calcular Workload - Slave 23 0,0381 0,0384 0,0372 0,037 Tiempo procesar Slave 24 0,655 2,431 5,768 11,127 T. en calcular Workload - Slave 24 0,0377 0,0371 0,0373 0,0372 0,611 2,203 4,884 8,782 T. en calcular Workload - Slave 25 0,0371 0,0371 0,0371 0,0371 Tiempo de proceso - Total 1,766 3,505 6,461 11,723 Balanceo Medio 1,2413 1,254 1,271 1,33 Varianza 0,0061 0,006 0,0006 0,0015 Desviación típica 0,0783 0,0774 0,0235 0,0386 Balanceo Global 1,154 1,17 1,255 1,317 Tiempo procesar Slave 25 Tabla 7: Resultados para una estimación de 2 líneas y 26 procesadores Para una comprensión más sencilla de estas tablas, mostramos las siguientes gráficas, que resumen todo lo expuesto en las tablas: 36 Fermín Ayuso y Víctor Manuel Ochoa Balanceo para función benchmark con 2 líneas 1,4 1,3 balanceo 5x5 9x9 1,2 7x7 9x9 1,1 1 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Gráfica 1: Balanceo para una función de estimación con 2 lineas Efecto número de procesadores (tiempo) para función benchmark con 2 líneas 130 120 110 100 tiempo 90 80 5x5 70 9x9 60 7x7 50 9x9 40 30 20 10 0 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Gráfica 2: Efecto del número de procesadores para función de estimación de carga con 2 lineas Como puede observarse en las tablas y gráficas, el balanceo conseguido con una función benchmark utilizando 2 lineas (véase Gráfica 1) varía entre 1 y 1,2, exceptuando el caso de 26 procesadores y una ventana de 9x9, que aumenta el 37 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales balanceo hasta 1,3. Con respecto al efecto del número de procesadores con respecto al tiempo total de ejecución, podemos observar, en la Gráfica 2, como conforme aumentamos el número de procesadores, el tiempo de ejecución va disminuyendo. Resultados del estudio con un tamaño de la función benchmark de 5 líneas Los siguientes datos mostrados son resultado de haber realizado las pruebas con 5 lineas para la estimación de carga. Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 9.56163 31.60625 70.9862 125.35388 Tiempo en WORKLOAD MASTER 0.14811 0.14792 0.14750 0.14788 Tiempo de proceso - Slave 8.75267 31.6841 69.20472 123.19242 T. en calcular Workload - Slave 0.15110 0.14722 0.14712 0.14742 Tiempo de proceso - Total 9.88902 32.2525 71.78222 126.22289 Balanceo Medio 1.10081 1.01968 1.04116 1.02682 Varianza 0.03090 0.00011 0.00112 0.00061 Desviación típica 0.17579 0.01079 0.03356 0.02483 Balanceo Global 1.09242 1.00246 1.02574 1.01754 Tabla 8: Resultados para una estimación de 5 líneas y 2 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 4.50564 15.47644 33.90883 61.06516 Tiempo en WORKLOAD MASTER 0.14520 0.14647 0.14584 0.14615 Tiempo de proceso - Slave 1 4.44562 15.44712 33.8602 62.85202 T. en calcular Workload - Slave 1 0.14826 0.14506 0.14655 0.14614 Tiempo de proceso - Slave 2 4.38932 15.55636 34.91404 62.98738 T. en calcular Workload - Slave 2 0.14729 0.14538 0.14621 0.14533 Tiempo de proceso - Slave 3 4.36154 15.13916 33.65559 59.47012 T. en calcular Workload - Slave 3 0.14635 0.14637 0.14760 0.14650 Tiempo de proceso - Total 5.10455 16.20939 35.40721 64.30177 Balanceo Medio 1.06108 1.05335 1.06107 1.08420 Varianza 0.00041 0.00030 0.00062 0.00183 Desviación típica 0.02033 0.01743 0.02490 0.04281 Balanceo Global 1.03303 1.02755 1.03739 1.05914 Tabla 9: Resultados para una estimación de 5 líneas y 4 procesadores Procesadores 38 Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Fermín Ayuso y Víctor Manuel Ochoa Tiempo procesar Master 2.03693 6.91480 15.09613 28.33531 Tiempo en WORKLOAD MASTER 0.14623 0.14791 0.14967 0.14566 Tiempo de proceso - Slave 1 2.06263 7.25373 16.10629 29.27916 T. en calcular Workload - Slave 1 0.14620 0.14542 0.14611 0.14649 Tiempo de proceso - Slave 2 2.02496 7.24304 16.14069 29.30087 T. en calcular Workload - Slave 2 0.14786 0.14663 0.14923 0.14801 Tiempo de proceso - Slave 3 2.02443 7.13329 16.10551 29.55757 T. en calcular Workload - Slave 3 0.14695 0.14730 0.14635 0.14607 Tiempo de proceso - Slave 4 2.04442 7.16982 16.10703 29.38170 T. en calcular Workload - Slave 4 0.14600 0.14707 0.14691 0.14745 Tiempo de proceso - Slave 5 2.00991 7.14290 16.11520 29.32384 T. en calcular Workload - Slave 5 0.14634 0.14769 0.14686 0.14650 Tiempo de proceso - Slave 6 2.42339 8.38925 18.51247 33.16543 T. en calcular Workload - Slave 6 0.11048 0.11038 0.11093 0.11077 Tiempo de proceso - Slave 7 2.36586 8.11396 17.95497 31.29082 T. en calcular Workload - Slave 7 0.11002 0.11113 0.10995 0.11109 Tiempo de proceso - Total 2.94118 8.62237 18.75452 33.41188 Balanceo Medio 1.23115 1.22670 1.23174 1.18839 Varianza 0.00202 0.00271 0.001672 0.00061 Desviación típica 0.04497 0.052112 0.04089 0.02487 Balanceo Global 1.20572 1.21323 1.22630 1.17046 Tabla 10: Resultados para una estimación de 5 líneas y 8 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 0.99141 3.40248 7.49344 13.63973 Tiempo en WORKLOAD MASTER 0.14703 0.14593 0.14788 0.14573 Tiempo de proceso - Slave 1 1.00712 3.60796 8.25618 15.4663 T. en calcular Workload - Slave 1 0.147992 0.14957 0.14636 0.14677 Tiempo de proceso - Slave 2 0.986457 3.65392 8.20466 15.38166 T. en calcular Workload - Slave 2 0.149131 0.14558 0.14557 0.14565 Tiempo de proceso - Slave 3 0.98648 3.63811 8.18537 15.25295 T. en calcular Workload - Slave 3 0.14849 0.14705 0.14830 0.146860 Tiempo de proceso - Slave 4 .99531 3.62897 8.25190 15.43083 T. en calcular Workload - Slave 4 0.14674 0.14571 0.14549 0.14603 Tiempo de proceso - Slave 5 0.98803 3.61305 8.09046 15.16007 T. en calcular Workload - Slave 5 0.14697 0.14599 0.14632 0.14723 Tiempo de proceso - Slave 6 1.10892 3.91310 8.64446 16.01636 T. en calcular Workload - Slave 6 0.11108 0.11031 0.11103 0.11188 Tiempo de proceso - Slave 7 1.08637 3.90995 8.81045 16.22883 39 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales T. en calcular Workload - Slave 7 0.11023 0.10999 0.11073 0.11016 Tiempo de proceso - Slave 8 1.07958 3.86887 8.77280 15.89047 T. en calcular Workload - Slave 8 0.11069 0.11174 0.11094 0.11271 Tiempo de proceso - Slave 9 1.08037 3.91587 8.79493 16.04452 T. en calcular Workload - Slave 9 0.11165 0.11015 0.11037 0.10967 Tiempo de proceso - Slave 10 1.09456 3.85673 8.79787 16.12496 T. en calcular Workload - Slave 10 0.11025 0.11130 0.11112 0.11129 Tiempo de proceso - Slave 11 1.08507 3.82890 8.78660 16.03650 T. en calcular Workload - Slave 11 0.11026 0.11170 0.11011 0.11067 Tiempo de proceso - Slave 12 1.08246 3.90804 8.90657 16.07497 T. en calcular Workload - Slave 12 0.11232 0.11079 0.11015 0.11236 Tiempo de proceso - Slave 13 1.08632 3.89748 8.76288 16.04362 T. en calcular Workload - Slave 13 0.11024 0.11013 0.11066 0.11013 Tiempo de proceso - Slave 14 1.00969 3.58366 8.14148 15.63254 T. en calcular Workload - Slave 14 0.14734 0.14609 0.14728 0.14640 Tiempo de proceso - Slave 15 0.96251 3.40794 7.45222 13.58077 T. en calcular Workload - Slave 15 0.14659 0.14648 0.14759 0.14734 Tiempo de proceso - Total 2.21031 4.57775 9.15289 16.60529 Balanceo Medio 1.18681 1.18351 1.22327 1.22064 Varianza .002403 0.00013 0.00057 0.00063 Desviación típica 0.04902 0.01183 0.02392 0.02521 Balanceo Global 1.15211 1.15088 1.19515 1.19498 Tabla 11: Resultados para una estimación de 5 líneas y 16 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 0.64094 2.29181 4.9163 8.89102 Tiempo en WORKLOAD MASTER 0.14700 0.14778 0.14893 0.14689 Tiempo de proceso - Slave 1 0.67007 2.48433 5.77578 11.10864 T. en calcular Workload - Slave 1 0.14805 0.14721 0.14662 0.14870 Tiempo de proceso - Slave 2 0.64608 2.40350 5.83067 11.19150 T. en calcular Workload - Slave 2 0.14921 0.14940 0.14987 0.14884 Tiempo de proceso - Slave 3 0.65265 2.42748 5.78386 11.16298 T. en calcular Workload - Slave 3 0.14877 0.14758 0.14926 0.14769 Tiempo de proceso - Slave 4 0.67098 2.48375 5.87789 11.31753 T. en calcular Workload - Slave 4 0.14868 0.14816 0.14832 0.14877 Tiempo de proceso - Slave 5 0.65367 2.40653 5.73163 11.11755 T. en calcular Workload - Slave 5 0.14754 2.51039 0.14683 0.14802 Tiempo de proceso - Slave 6 0.70073 0.11119 5.8638 10.54654 T. en calcular Workload - Slave 6 0.11071 0.11112 0.11062 0.11327 40 Fermín Ayuso y Víctor Manuel Ochoa Tiempo de proceso - Slave 7 0.70512 2.5373 5.77266 10.66129 T. en calcular Workload - Slave 7 0.11029 0.11015 0.11178 0.11078 Tiempo de proceso - Slave 8 0.69353 2.5393 5.69871 10.65942 T. en calcular Workload - Slave 8 0.11178 0.11052 0.11265 0.11101 Tiempo de proceso - Slave 9 0.70505 2.52076 5.79749 10.59165 T. en calcular Workload - Slave 9 0.11124 0.11025 0.11156 0.11176 Tiempo de proceso - Slave 10 0.70406 2.5760 5.78772 10.65373 T. en calcular Workload - Slave 10 0.11163 0.11037 0.11149 0.11106 Tiempo de proceso - Slave 11 0.70517 2.5064 5.82943 10.67997 T. en calcular Workload - Slave 11 0.11090 0.11199 0.11032 0.11078 Tiempo de proceso - Slave 12 0.69150 2.48359 5.79224 10.66911 T. en calcular Workload - Slave 12 0.11256 0.113053 0.11120 0.10982 Tiempo de proceso - Slave 13 0.69519 2.5667 5.81688 10.66743 T. en calcular Workload - Slave 13 0.11076 0.110356 0.11135 0.11080 Tiempo de proceso - Slave 14 0.66660 2.43999 5.88116 11.22284 T. en calcular Workload - Slave 14 0.14735 0.148937 0.14842 0.14948 Tiempo de proceso - Slave 15 0.65043 2.45425 5.78055 11.04998 T. en calcular Workload - Slave 15 0.14809 0.14789 0.14648 0.14941 Tiempo de proceso - Slave 16 0.64905 2.433114 5.71459 11.27652 T. en calcular Workload - Slave 16 .147645 0.149397 0.14797 0.14796 Tiempo de proceso - Slave 17 0.64889 2.37281 5.77251 11.10459 T. en calcular Workload - Slave 17 0.14768 0.152024 0.14823 .014713 Tiempo de proceso - Slave 18 0.66209 2.42967 5.90841 11.14797 T. en calcular Workload - Slave 18 0.14812 0.15030 0.14792 0.14674 Tiempo de proceso - Slave 19 0.64555 2.38215 5.78856 11.21363 T. en calcular Workload - Slave 19 0.14879 0.148166 0.14748 0.14861 Tiempo de proceso - Slave 20 0.65680 2.47135 5.76808 11.08189 T. en calcular Workload - Slave 20 0.14984 0.14951 0.14926 0.14941 Tiempo de proceso - Slave 21 0.64936 2.44927 5.75567 11.07066 T. en calcular Workload - Slave 21 0.14893 0.14807 0.14895 0.14877 Tiempo de proceso - Slave 22 0.65314 2.505284 5.73977 11.21290 T. en calcular Workload - Slave 22 0.14836 0.14899 0.14695 0.15040 Tiempo de proceso - Slave 23 0.64498 2.42961 5.77876 11.18399 T. en calcular Workload - Slave 23 0.14949 0.14881 0.14872 0.14801 Tiempo de proceso - Slave 24 0.65375 2.43157 5.74954 11.22162 T. en calcular Workload - Slave 24 0.14839 0.150864 0.14863 0.14775 Tiempo de proceso - Slave 25 0.62231 2.18372 4.95372 8.97336 T. en calcular Workload - Slave 25 0.14825 0.147772 0.14776 0.14844 Tiempo de proceso - Total 1.73041 3.42097 6.48652 11.55899 Balanceo Medio 1.23501 1.21459 1.2566 1.30161 41 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Varianza 0.00409 0.00039 0.00065 0.00027 Desviación típica 0.06400 0.01979 0.02558 0.01649 Balanceo Global 1.13316 1.17964 1.19434 1.27291 Tabla 12: Resultados para una estimación de 5 líneas y 26 procesadores Balanceo para función benchmark con 5 líneas 1,3 1,2 balanceo 1,1 1 9x9 0,9 9x9 7x7 9x9 0,8 0,7 0,6 0,5 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Gráfica 3: Balanceo para una función de estimación de carga con 5 lineas Tras estos resultados, podemos observar que conforme aumenta el número de procesadores, el tiempo total de ejecución disminuye. En la Gráfica 3 podemos observar el efecto del balanceo para distintos números de procesadores y tamaños de ventana utilizando una función de estimación de carga con 5 lineas. Como se puede observar, el balanceo oscila entre 1 y 1.2, no llegando nunca a superar el 1.3 Resultados del estudio con un tamaño de la función benchmark de 10 líneas En este apartado mostramos los datos obtenidos al realizar las pruebas con 10 lineas para estimación de carga. Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 9,015 30,661 69,44 140,041 T. en calcular Workload - Master 0,323 0,323 0,318 0,321 Tiempo procesar Slave 9,233 32,778 69,725 126,719 42 Fermín Ayuso y Víctor Manuel Ochoa T. en calcular Workload - Slave 0,32 0,32 0,322 0,322 Tiempo de proceso - Total 9,76 33,453 71,321 143,628 Balanceo Medio 1,075 1,0942 1,041 1,163 Varianza 0,0191 0,427 0,00119 0,0679 Desviación típica 0,138 0,206 0,0345 0,260 Balanceo Global 1,024 1,0911 1,004 1,11 Tabla 13: Resultados para una estimación de 10 líneas y 2 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 4,456 15,247 33,339 60,165 T. en calcular Workload - Master 0,321 0,0321 0,32 0,318 Tiempo procesar Slave 1 4,45 15,91 34,116 62,084 T. en calcular Workload - Slave 1 0,319 0,32 0,317 0,321 Tiempo procesar Slave 2 4,372 15,480 34,576 62,569 T. en calcular Workload - Slave 2 0,32 0,32 0,32 0,322 Tiempo procesar Slave 3 4,326 15,234 33,853 61,923 T. en calcular Workload - Slave 3 0,321 0,32 0,321 0,32 Tiempo de proceso - Total 5,073 16,382 35,309 64,265 Balanceo Medio 1,059 1,08 1,0616 1,074 Varianza 0,00086 0,004 0,000948 0,000984 Desviación típica 0,0293 0,0642 0,0308 0,0314 Balanceo Global 1,03 1,0435 1,0371 1,04 Tabla 14: Resultados para una estimación de 10 líneas y 4 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 2,0824 7,078 15,371 27,617 0,32 0,32 0,322 0,325 Tiempo procesar Slave 1 2,1004 7,257 16,219 29,565 T. en calcular Workload - Slave 1 0,322 ,032 0,321 0,321 Tiempo procesar Slave 2 2,0559 7,363 16,188 29,784 T. en calcular Workload - Slave 2 0,3208 0,317 0,323 0,321 Tiempo procesar Slave 3 2,0962 7,198 16,219 29,913 T. en calcular Workload - Slave 3 0,3173 0,318 0,324 0,319 Tiempo procesar Slave 4 2,0077 7,15 16,15 29,73 T. en calcular Workload - Slave 4 0,3224 0,318 0,321 0,323 Tiempo procesar Slave 5 2,0305 7,16 17,026 29,679 T. en calcular Workload - Slave 5 0,3184 0,317 0,316 0,3178 Tiempo de proceso - Master T. en calcular Workload - Master 43 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Tiempo procesar Slave 6 2,3284 8,2 18,196 32,547 T. en calcular Workload - Slave 6 0,2507 0,249 0,25 0,249 Tiempo procesar Slave 7 2,3104 7,918 17,52 30,685 T. en calcular Workload - Slave 7 0,2502 0,249 0,249 0,251 Tiempo de proceso - Total 2,989 8,434 19,043 32,189 Balanceo Medio 1,185 1,179 1,224 1,179 Varianza 0,00053 0,0004 0,0149 0,00064 Desviación típica 0,0232 0,021 0,122 0,0253 Balanceo Global 1,1597 1,1585 1,184 1,083 Tabla 15: Resultados para una estimación de 10 líneas y 8 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 1,0132 3,502 7,735 13,749 T. en calcular Workload - Master 0,3212 0,319 0,32 0,317 Tiempo de proceso - Slave 1 1,0483 3,711 8,485 15,757 T. en calcular Workload - Slave 1 0,31829 0,321 0,32 0,325 Tiempo de proceso - Slave 2 1,034 3,688 8,61 15,739 T. en calcular Workload - Slave 2 0,3184 0,319 0,318 0,318 Tiempo de proceso - Slave 3 1,0064 3,696 8,456 15,684 T. en calcular Workload - Slave 3 0,3216 0,319 0,321 0,323 Tiempo de proceso - Slave 4 1,029 3,676 8,514 15,484 T. en calcular Workload - Slave 4 0,3189 0,32 0,318 0,324 Tiempo de proceso - Slave 5 1,0241 3,664 8,438 15,465 T. en calcular Workload - Slave 5 0,3179 0,319 0,322 0,321 1,12 3,867 8,687 15,883 T. en calcular Workload - Slave 6 0,2484 0,252 0,25 0,25 Tiempo de proceso - Slave 7 1,0878 3,818 8,709 15,893 T. en calcular Workload - Slave 7 0,2499 0,25 0,248 0,25 Tiempo de proceso - Slave 8 1,0645 3,709 8,472 15,92 T. en calcular Workload - Slave 8 0,2497 0,251 0,251 0,25 Tiempo de proceso - Slave 9 1,0594 3,749 8,581 15,641 T. en calcular Workload - Slave 9 0,2495 0,251 0,251 0,252 Tiempo de proceso - Slave 10 1,0646 3,761 8,585 15,909 T. en calcular Workload - Slave 10 0,2517 0,251 0,2518 0,248 Tiempo de proceso - Slave 11 1,0564 3,776 8,596 15,894 T. en calcular Workload - Slave 11 0,2511 0,248 0,251 0,25 Tiempo de proceso - Slave 12 1,0938 3,779 8,674 15,751 T. en calcular Workload - Slave 12 0,2495 0,249 0,2496 0,25 Tiempo de proceso - Slave 13 1,0845 3,781 8,641 15,886 Tiempo de proceso - Slave 6 44 Fermín Ayuso y Víctor Manuel Ochoa T. en calcular Workload - Slave 13 0,2497 0,249 0,249 0,248 Tiempo de proceso - Slave 14 0,984 3,577 8,417 15,655 T. en calcular Workload - Slave 14 0,3216 0,318 0,322 0,320 Tiempo de proceso - Slave 15 0,957 3,348 7,681 13,956 T. en calcular Workload - Slave 15 0,3161 0,319 0,317 0,317 Tiempo de proceso - Total 2,249 4,715 9,145 16,331 Balanceo Medio 1,1978 1,182 1,165 1,182 Varianza 0,00274 0,000254 0,000396 0,000507 Desviación típica 0,0524 0,159 0,0199 0,0225 Balanceo Global 1,17 1,155 1,134 1,16 Tabla 16: Resultados para una estimación de 10 líneas y 16 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 0,651 2,302 5,001 9,177 T. en calcular Workload - Master 0,322 0,32 0,318 0,319 Tiempo procesar Slave 1 0,689 2,537 5,893 11,294 T. en calcular Workload - Slave 1 0,322 0,322 0,319 0,319 Tiempo procesar Slave 2 0,668 2,554 5,912 11,316 T. en calcular Workload - Slave 2 0,321 0,317 0,319 0,317 Tiempo procesar Slave 3 0,668 2,546 5,909 11,335 T. en calcular Workload - Slave 3 0,32 0,317 0,319 0,320 Tiempo procesar Slave 4 0,678 2,515 5,814 11,196 T. en calcular Workload - Slave 4 0,3199 0,319 0,319 0,321 Tiempo procesar Slave 5 0,668 2,515 5,771 11,128 T. en calcular Workload - Slave 5 0,318 0,323 0,318 0,318 Tiempo procesar Slave 6 0,713 2,574 5,677 10,714 T. en calcular Workload - Slave 6 0,25 0,25 0,252 0,248 Tiempo procesar Slave 7 0,709 2,55 5,646 10,626 T. en calcular Workload - Slave 7 0,251 0,25 0,251 0,251 Tiempo procesar Slave 8 0,716 2,539 5,672 10,634 T. en calcular Workload - Slave 8 0,249 0,25 0,25 0,25 Tiempo procesar Slave 9 0,712 2,55 5,644 10,575 T. en calcular Workload - Slave 9 0,248 0,25 0,2495 0,248 Tiempo procesar Slave 10 0,71 2,535 5,705 10,507 T. en calcular Workload - Slave 10 0,25 0,252 0,25 0,251 Tiempo procesar Slave 11 0,692 2,483 5,66 10,428 T. en calcular Workload - Slave 11 0,249 0,25 0,25 0,253 Tiempo procesar Slave 12 0,689 2,514 5,705 10,675 T. en calcular Workload - Slave 12 0,25 0,249 0,249 0,248 45 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Tiempo procesar Slave 13 0,682 2,494 5,71 10,606 T. en calcular Workload - Slave 13 0,249 0,248 0,249 0,249 Tiempo procesar Slave 14 0,638 2,371 5,982 11,306 T. en calcular Workload - Slave 14 0,322 0,319 0,31 0,321 Tiempo procesar Slave 15 0,64 2,397 5,783 11,297 T. en calcular Workload - Slave 15 0,319 0,319 0,318 ,0319 Tiempo procesar Slave 16 0,643 2,366 5,878 11,339 T. en calcular Workload - Slave 16 0,316 0,322 0,323 0,32 Tiempo procesar Slave 17 0,634 2,364 5,79 11,158 T. en calcular Workload - Slave 17 0,319 0,324 0,319 0,317 Tiempo procesar Slave 18 0,666 2,347 5,857 11,264 T. en calcular Workload - Slave 18 0,324 0,323 0,318 0,32 Tiempo procesar Slave 19 0,633 2,371 5,791 11,15 T. en calcular Workload - Slave 19 0,32 0,318 0,322 0,319 Tiempo procesar Slave 20 0,637 2,372 5,927 11,381 T. en calcular Workload - Slave 20 0,32 0,321 0,318 0,324 Tiempo procesar Slave 21 0,629 2,385 5,838 11,152 T. en calcular Workload - Slave 21 0,321 0,317 0,321 0,319 Tiempo procesar Slave 22 0,625 2,404 5,807 11,266 T. en calcular Workload - Slave 22 0,323 0,316 0,321 0,317 Tiempo procesar Slave 23 0,642 2,376 5,864 11,183 T. en calcular Workload - Slave 23 0,317 0,319 0,319 0,32 Tiempo procesar Slave 24 0,637 2,398 5,81 11,195 T. en calcular Workload - Slave 24 0,317 0,316 0,318 0,321 Tiempo procesar Slave 25 0,596 2,12 4,987 9,054 T. en calcular Workload - Slave 25 0,324 0,319 0,32 0,323 Tiempo de proceso - Total 1,755 3,5 6,321 11,618 Balanceo Medio 1,232 1,259 1,253 1,293 Varianza 0,0032 0,00113 0,00162 0,00153 Desviación típica 0,0565 0,337 0,0402 0,0391 Balanceo Global 1,196 1,212 1,199 1,257 46 Fermín Ayuso y Víctor Manuel Ochoa Tabla 17: Resultados para una estimación de 10 líneas y 26 procesadores Balanceo para función benchm ark con 10 líneas 1,3 1,25 1,2 balanceo 1,15 9x9 1,1 9x9 1,05 9x9 7x7 1 0,95 0,9 2 4 6 8 10 12 14 16 18 20 22 24 26 núm ero de procesadores Gráfica 4: Balanceo para una función de estimación con 10 lineas Al igual que en los casos anteriormente estudiados, el efecto de estimar la carga para cada procesador con 10 lineas parece que no afecta al balanceo, ya que como podemos observar en la Gráfica 4, estos oscilan entre 1 y 1.2, no llegando nunca a 1.3 Resultados del estudio con un tamaño de la función benchmark de 20 líneas Ahora vamos a estimar la carga de cada procesador utilizando las 20 primeras lineas de la imagen hiperespectral. Los resultados son los siguientes: Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 8.98987 32.3979 69.5724 126.01296 T. en calcular Workload - Master 0.65077 0.64412 0.64857 0.65074 Tiempo de proceso - Slave 8.78709 32.2423 70.8109 122.76596 T. en calcular Workload - Slave 0.65185 0.64801 0.65090 0.64810 Tiempo de proceso - Total 9.29064 32.91644 72.7550 126.68787 Balanceo Medio 1.0245 1.01908 1.06703 1.03216 Varianza 0.00027 0.00020 0.00111 0.00126 Desviación típica 0.01656 0.01426 0.03341 0.03557 47 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Balanceo Global 1.02307 1.00482 1.01780 1.02644 Tabla 18: Resultados para una estimación de 20 líneas y 2 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 4.50505 15.37790 33.29350 59.65250 T. en calcular Workload - Master 0.64964 0.65316 0.65245 0.65145 Tiempo de proceso - Slave 1 4.45289 15.44188 34.5355 63.5587 T. en calcular Workload - Slave 1 0.64972 0.65088 0.64830 0.64887 Tiempo de proceso - Slave 2 4.40259 15.37468 34.2140 62.02669 T. en calcular Workload - Slave 2 0.65573 0.65323 0.653173 0.653425 Tiempo de proceso - Slave 3 4.42955 15.30162 34.05257 60.0710 T. en calcular Workload - Slave 3 0.65277 0.647803 0.650706 0.65310 Tiempo de proceso - Total 5.11030 16.07869 35.20469 63.76242 Balanceo Medio 1.04859 1.04195 1.05575 1.07831 Varianza 0.00035 0.00028 0.000521 0.00108 Desviación típica 0.01872 0.01679 0.022835 0.03300 Balanceo Global 1.02327 1.0091 1.03730 1.0654 Tabla 19: Resultados para una estimación de 20 líneas y 4 procesadores Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master Procesadores Ventana 3x3 2.09575 7.14294 15.81331 28.29286 T. en calcular Workload - Master 0.65349 0.65251 0.65004 0.65126 Tiempo de proceso - Slave 1 2.1069 7.4467 16.43684 30.17661 T. en calcular Workload - Slave 1 0.65070 0.65006 0.65341 0.654776 Tiempo de proceso - Slave 2 2.09322 7.39505 16.54342 30.31545 T. en calcular Workload - Slave 2 0.65019 0.651566 0.65144 0.65188 Tiempo de proceso - Slave 3 2.08115 7.38936 16.31278 29.99825 T. en calcular Workload - Slave 3 0.65127 0.646704 0.650135 0.64867 Tiempo de proceso - Slave 4 2.10144 7.34491 16.43431 30.17845 T. en calcular Workload - Slave 4 0.64900 0.651765 0.646950 0.64980 Tiempo de proceso - Slave 5 2.07269 7.371471 16.42561 30.03699 T. en calcular Workload - Slave 5 0.65232 0.65161 0.64974 0.65229 Tiempo de proceso - Slave 6 2.24196 7.81722 17.40420 31.44959 T. en calcular Workload - Slave 6 0.53629 0.53847 0.53745 0.53444 Tiempo de proceso - Slave 7 2.20844 7.60189 16.77862 29.61117 T. en calcular Workload - Slave 7 0.53685 0.53591 0.53540 0.53556 Tiempo de proceso - Total 2.9949 8.145334 17.62735 31.69460 Balanceo Medio 1.10347 1.09856 1.10159 1.11286 48 Fermín Ayuso y Víctor Manuel Ochoa Varianza 0.00019 0.00043 0.000517 0.00012 Desviación típica 0.01381 0.02080 0.02274 0.01118 Balanceo Global 1.08166 1.09439 1.1006 1.11157 Tabla 20: Resultados para una estimación de 20 líneas y 8 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 1.02543 3.57324 7.83705 14.01906 T. en calcular Workload - Master 0.65135 0.64673 0.65073 0.647799 Tiempo de proceso - Slave 1 1.06793 3.77187 8.70780 16.00216 T. en calcular Workload - Slave 1 0.65322 0.65024 0.64739 0.65369 Tiempo de proceso - Slave 2 1.04522 3.75170 8.76706 15.9170 T. en calcular Workload - Slave 2 0.64917 0.654434 0.65485 0.648808 Tiempo de proceso - Slave 3 1.04258 3.78626 8.66262 15.98872 T. en calcular Workload - Slave 3 0.65347 0.65142 0.64717 0.64933 Tiempo de proceso - Slave 4 1.05484 3.70116 8.68468 15.92064 T. en calcular Workload - Slave 4 0.65129 0.64872 0.65166 0.64502 Tiempo de proceso - Slave 5 1.04237 3.72669 8.67039 15.88139 T. en calcular Workload - Slave 5 0.64753 0.64372 0.64808 0.65003 Tiempo de proceso - Slave 6 1.04532 3.66178 8.50833 15.42779 T. en calcular Workload - Slave 6 0.53717 0.53500 0.53383 0.53929 Tiempo de proceso - Slave 7 1.03979 3.63204 8.50240 15.37199 T. en calcular Workload - Slave 7 0.53743 0.53487 0.53400 0.535654 Tiempo de proceso - Slave 8 1.05843 3.62116 8.44539 15.41863 T. en calcular Workload - Slave 8 0.53566 0.53513 0.53847 0.53653 Tiempo de proceso - Slave 9 1.04826 3.671863 8.45562 15.50456 T. en calcular Workload - Slave 9 0.53473 0.53142 0.53397 0.53486 Tiempo de proceso - Slave 10 1.04298 3.64148 8.47163 15.49643 T. en calcular Workload - Slave 10 0.53687 0.53677 0.53286 0.53596 Tiempo de proceso - Slave 11 1.04805 3.64795 8.45515 15.57558 T. en calcular Workload - Slave 11 0.53477 0.53405 0.53314 0.53228 Tiempo de proceso - Slave 12 1.05031 3.67280 8.45219 15.5367 T. en calcular Workload - Slave 12 0.53296 0.53221 0.53382 0.53483 Tiempo de proceso - Slave 13 1.06586 3.62881 8.44278 15.47735 T. en calcular Workload - Slave 13 0.53230 0.53356 0.53397 0.53186 Tiempo de proceso - Slave 14 1.03118 3.75165 8.55228 15.96269 T. en calcular Workload - Slave 14 0.65903 0.65062 0.65691 0.65300 Tiempo de proceso - Slave 15 0.99788 3.59035 7.88515 14.3157 T. en calcular Workload - Slave 15 0.65367 0.65048 0.65114 0.65080 Tiempo de proceso - Total 2.14708 4.76804 9.12700 16.40380 49 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Balanceo Medio 1.11329 1.08508 1.14443 1.16368 Varianza 0.00451 0.00063 0.00044 0.00020 Desviación típica 0.06719 0.02524 0.02109 0.01424 Balanceo Global 1.0701 1.05961 1.11866 1.14145 Tabla 21: Resultados para una estimación de 20 líneas y 16 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 0.64594 2.31407 5.10654 9.31046 T. en calcular Workload - Master 0.65351 0.64855 0.648505 0.64795 Tiempo de proceso - Slave 1 0.68701 2.56299 6.05677 11.48692 T. en calcular Workload - Slave 1 0.65222 0.64684 0.65112 0.65394 Tiempo de proceso - Slave 2 0.67049 2.48132 6.04357 11.39099 T. en calcular Workload - Slave 2 0.65291 0.65260 0.65198 0.64968 Tiempo de proceso - Slave 3 0.67097 2.49223 5.91694 11.44909 T. en calcular Workload - Slave 3 0.64952 0.64939 0.64954 0.65796 Tiempo de proceso - Slave 4 0.67651 2.52663 5.92055 11.38895 T. en calcular Workload - Slave 4 0.64787 0.64930 0.65250 0.65179 Tiempo de proceso - Slave 5 0.67959 2.53044 6.01901 11.22729 T. en calcular Workload - Slave 5 0.64642 0.64803 0.65293 0.64706 Tiempo de proceso - Slave 6 0.65708 2.39019 5.5348 10.26250 T. en calcular Workload - Slave 6 0.53867 0.53340 0.53582 0.53629 Tiempo de proceso - Slave 7 0.66571 2.37400 5.5526 10.25324 T. en calcular Workload - Slave 7 0.53580 0.53295 0.53292 0.53302 Tiempo de proceso - Slave 8 0.66768 2.35933 5.49998 10.17630 T. en calcular Workload - Slave 8 0.53464 0.53680 0.53673 0.53659 Tiempo de proceso - Slave 9 0.65824 2.3596 5.49243 10.23552 T. en calcular Workload - Slave 9 0.53255 0.53381 0.53625 0.53472 Tiempo de proceso - Slave 10 0.66306 2.3680 5.52254 10.25305 T. en calcular Workload - Slave 10 0.53544 0.53610 0.53607 0.53509 Tiempo de proceso - Slave 11 0.65821 2.38792 5.5229 10.23768 T. en calcular Workload - Slave 11 0.53256 0.53150 0.53105 0.53231 Tiempo de proceso - Slave 12 0.66115 2.3588 5.51349 10.22904 T. en calcular Workload - Slave 12 0.53543 0.53424 0.53599 0.53531 Tiempo de proceso - Slave 13 0.66101 2.39659 5.49919 10.19568 T. en calcular Workload - Slave 13 0.53427 0.53182 0.53307 0.53673 Tiempo de proceso - Slave 14 0.67915 2.53162 5.98760 11.45960 T. en calcular Workload - Slave 14 0.65034 0.65003 0.64850 0.65068 Tiempo de proceso - Slave 15 0.66965 2.5211 5.93889 11.46498 T. en calcular Workload - Slave 15 0.64938 0.64869 0.67062 0.64878 50 Fermín Ayuso y Víctor Manuel Ochoa Tiempo de proceso - Slave 16 0.67684 2.4910 5.94530 11.46616 T. en calcular Workload - Slave 16 0.65309 0.64797 0.65060 0.65274 Tiempo de proceso - Slave 17 0.65710 2.50345 5.99197 11.13095 T. en calcular Workload - Slave 17 0.64363 0.64928 0.64819 0.64455 Tiempo de proceso - Slave 18 0.66742 2.5467 6.05784 11.39389 T. en calcular Workload - Slave 18 0.64976 0.6488 0.64991 0.64975 Tiempo de proceso - Slave 19 0.66874 2.56601 5.94043 11.26296 T. en calcular Workload - Slave 19 0.65065 0.65141 0.64889 0.64653 Tiempo de proceso - Slave 20 0.69640 2.491932 5.99362 11.31470 T. en calcular Workload - Slave 20 0.64698 0.65152 0.66372 0.64858 Tiempo de proceso - Slave 21 0.67453 2.47276 5.89551 11.30824 T. en calcular Workload - Slave 21 0.65179 0.64733 0.65365 0.64809 Tiempo de proceso - Slave 22 0.67257 2.5525 5.89224 11.35023 T. en calcular Workload - Slave 22 0.65477 0.65192 0.67732 0.65311 Tiempo de proceso - Slave 23 0.66582 2.48206 5.85816 11.35377 T. en calcular Workload - Slave 23 0.65158 0.65154 0.64948 0.65121 Tiempo de proceso - Slave 24 0.67769 2.54559 6.04282 11.75977 T. en calcular Workload - Slave 24 0.65021 0.65473 0.65198 0.64951 Tiempo de proceso - Slave 25 0.65955 2.22197 5.10931 9.10194 T. en calcular Workload - Slave 25 0.65309 0.65446 0.65223 0.64560 Tiempo de proceso - Total 1.73803 3.49478 6.4183 12.10466 Balanceo Medio 1.16417 1.19394 1.25281 1.3396 Varianza 0.00354 0.00138 0.00120 0.02205 Desviación típica 0.05951 0.03724 0.03468 0.14852 Balanceo Global 1.0781 1.15483 1.18628 1.2920 Tabla 22: Resultados para una estimación de 20 líneas y 26 procesadores 51 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Balanceo para función benchmark con 20 líneas 1,28 1,23 balanceo 1,18 5x5 9x9 7x7 9x9 1,13 1,08 1,03 0,98 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Gráfica 5: Balanceo para una función de estimación de carga con 20 lineas Efecto número de procesadores (tiempo) para función benchmark con 20 líneas 140 130 120 110 100 90 5x5 tiempo 80 9x9 70 7x7 60 9x9 50 40 30 20 10 0 2 6 10 14 18 22 26 número de procesadores Gráfica 6: Efecto del número de procesadores para una función de estimación con 20 lineas Los resultados obtenidos en este apartado se asemejan bastante a los obtenidos en los apartados anteriores. Como muestran las tablas y las gráficas 5 y 6, podemos comprobar que el balanceo varía entre 1 y 1.2, sin llegar a 1.3 para las distintas pruebas y que el efecto que supone aumentar el número de procesadores es el de 52 Fermín Ayuso y Víctor Manuel Ochoa reducir el tiempo de ejecución. Resultados del estudio con un tamaño de la función benchmark de 30 líneas Vamos a mostrar los resultados obtenidos al utilizar 30 lineas para estimar la carga de los distintos procesadores: Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 8,934 31,145 71,488 120,338 T. en calcular Workload - Master 0,995 0,997 0,995 0,991 Tiempo de proceso - Slave 8,759 31,401 70,166 124,671 T. en calcular Workload - Slave 0,995 0,991 0,999 0,999 Tiempo de proceso - Total 9,235 31,89 72,902 125,087 Balanceo Medio 1,021 1,02 1,052 1,038 0,000138 0,000161 0,0016 0,00222 Desviación típica 0,012 0,0127 0,04 0,0472 Balanceo Global 1,02 1,008 1,083 1,036 Varianza Tabla 23: Resultados para una estimación de 30 líneas y 2 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 4,49 15,508 33,6 59,286 T. en calcular Workload - Master 0,998 0,999 0,991 0,992 Tiempo de proceso - Slave 1 4,43 15,465 34,483 62,902 T. en calcular Workload - Slave 1 0,998 0,992 0,997 0,998 Tiempo de proceso - Slave 2 4,428 15,375 34,25 62,249 T. en calcular Workload - Slave 2 1,002 1,004 0,998 0,998 Tiempo de proceso - Slave 3 4,378 15,257 33,711 60,645 T. en calcular Workload - Slave 3 1,001 0,997 0,998 0,996 Tiempo de proceso - Total 5,087 16,166 35,178 63,135 Balanceo Medio 1,042 1,041 1,052 1,069 0,000436 0,00042 0,000137 0,000292 Desviación típica 0,0209 0,02 0,012 0,017 Balanceo Global 1,026 1,016 1,026 1,061 Varianza Tabla 24: Resultados para una estimación de 30 líneas y 4 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 2,111 7,147 15,967 28,294 T. en calcular Workload - Master 0,999 0,998 0,996 0,991 53 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Tiempo de proceso - Slave 1 2,161 7,418 16,617 30,655 T. en calcular Workload - Slave 1 0,997 0,994 0,996 0,998 Tiempo de proceso - Slave 2 2,147 7,431 16,865 30,372 T. en calcular Workload - Slave 2 1,002 1,002 1,005 1,002 Tiempo de proceso - Slave 3 2,082 7,429 16,49 30,447 T. en calcular Workload - Slave 3 0,997 1 0,999 0,997 Tiempo de proceso - Slave 4 2,109 7,404 16,598 30,298 T. en calcular Workload - Slave 4 0,997 1,004 0,995 1 Tiempo de proceso - Slave 5 2,084 7,383 16,478 30,376 T. en calcular Workload - Slave 5 0,995 0,996 0,995 0,996 Tiempo de proceso - Slave 6 2,204 7,677 17,158 30,798 T. en calcular Workload - Slave 6 0,841 0,845 0,842 0,842 Tiempo de proceso - Slave 7 2,176 7,528 16,432 29,142 T. en calcular Workload - Slave 7 0,84 0,835 0,838 0,839 Tiempo de proceso - Total 3,01 8,078 17,61 31,346 1,0799 1,075 1,09 1,102 0,000442 0,000157 0,0025 0,00012 Desviación típica 0,021 0,0125 0,05 0,0109 Balanceo Global 1,059 1,074 1,075 1,088 Balanceo Medio Varianza Tabla 25: Resultados para una estimación de 30 líneas y 8 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 1,05 3,592 7,997 14,223 T. en calcular Workload - Master 0,994 0,996 0,990 1 Tiempo de proceso - Slave 1 1,096 3,817 8,857 16,015 T. en calcular Workload - Slave 1 0,993 1,003 1 0,992 Tiempo de proceso - Slave 2 1,086 3,817 8,744 16,012 T. en calcular Workload - Slave 2 0,999 1 1,002 1,006 Tiempo de proceso - Slave 3 1,056 3,789 8,676 16,02 T. en calcular Workload - Slave 3 0,996 0,997 0,996 1,002 Tiempo de proceso - Slave 4 1,068 3,801 8,79 16,119 T. en calcular Workload - Slave 4 0,997 0,997 1,005 1,001 Tiempo de proceso - Slave 5 1,06 3,736 8,688 16,024 T. en calcular Workload - Slave 5 0,999 0,997 0,993 0,996 Tiempo de proceso - Slave 6 1,021 3,635 8,395 15,38 T. en calcular Workload - Slave 6 0,839 0,841 0,843 0,837 Tiempo de proceso - Slave 7 1,048 3,623 8,383 15,374 T. en calcular Workload - Slave 7 0,84 0,834 0,836 0,84 Tiempo de proceso - Slave 8 1,046 3,633 8,369 15,396 54 Fermín Ayuso y Víctor Manuel Ochoa T. en calcular Workload - Slave 8 0,84 0,842 0,839 0,84 Tiempo de proceso - Slave 9 1,034 3,614 8,347 15,301 T. en calcular Workload - Slave 9 0,835 0,837 0,837 0,838 Tiempo de proceso - Slave 10 1,025 3,636 8,332 15,347 T. en calcular Workload - Slave 10 0,841 0,838 0,848 0,841 Tiempo de proceso - Slave 11 1,032 3,623 8,37 15,276 T. en calcular Workload - Slave 11 0,837 0,836 0,836 0,837 Tiempo de proceso - Slave 12 1,031 3,621 8,385 15,225 T. en calcular Workload - Slave 12 0,842 0,84 0,84 0,842 Tiempo de proceso - Slave 13 1,035 3,636 8,331 15,236 T. en calcular Workload - Slave 13 0,844 0,839 0,836 0,836 Tiempo de proceso - Slave 14 1,056 3,857 8,739 16,353 T. en calcular Workload - Slave 14 1,004 0,996 1,003 0,998 Tiempo de proceso - Slave 15 1,012 3,583 8,031 14,442 T. en calcular Workload - Slave 15 1,002 0,998 0,999 0,996 Tiempo de proceso - Total 2,202 4,799 9,226 16,568 Balanceo Medio 1,124 1,107 1,131 1,161 Varianza 0,00121 0,00777 0,000243 0,000614 Desviación típica 0,0345 0,0279 0,0156 0,0248 Balanceo Global 1,083 1,076 1,108 1,15 Tabla 26: Resultados para una estimación de 30 líneas y 16 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 0,659 2,291 5,085 9,427 T. en calcular Workload - Master 0,999 0,995 0,993 0,997 Tiempo de proceso - Slave 1 0,691 2,559 5,988 11,28 T. en calcular Workload - Slave 1 0,995 0,998 0,995 0,991 Tiempo de proceso - Slave 2 0,683 2,53 5,967 11,419 T. en calcular Workload - Slave 2 1,001 1 0,996 1,004 Tiempo de proceso - Slave 3 0,669 2,535 6,049 11,351 T. en calcular Workload - Slave 3 1,001 0,994 0,996 0,997 Tiempo de proceso - Slave 4 0,646 2,522 6,028 11,449 1 0,998 0,998 0,998 Tiempo de proceso - Slave 5 0,676 2,536 5,866 11,44 T. en calcular Workload - Slave 5 0,999 0,996 0,989 0,994 Tiempo de proceso - Slave 6 0,657 2,361 5,431 10,155 T. en calcular Workload - Slave 6 0,84 0,84 0,841 0,837 Tiempo de proceso - Slave 7 0,668 2,377 5,474 10,05 T. en calcular Workload - Slave 7 0,837 0,839 0,837 0,842 T. en calcular Workload - Slave 4 55 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Tiempo de proceso - Slave 8 0,657 2,364 5,448 10,182 T. en calcular Workload - Slave 8 0,837 ,0838 0,841 0,837 Tiempo de proceso - Slave 9 0,66 2,377 5,39 10,036 T. en calcular Workload - Slave 9 0,837 0,838 0,838 0,84 Tiempo de proceso - Slave 10 0,672 2,353 5,379 10,189 T. en calcular Workload - Slave 10 0,837 0,838 0,841 0,838 Tiempo de proceso - Slave 11 0,652 2,325 5,433 10,23 T. en calcular Workload - Slave 11 0,837 0,841 0,839 0,835 Tiempo de proceso - Slave 12 0,652 2,353 5,46 10,118 T. en calcular Workload - Slave 12 0,843 0,838 0,839 0,84 Tiempo de proceso - Slave 13 0,677 2,337 5,44 10,136 T. en calcular Workload - Slave 13 0,845 0,838 0,838 0,837 Tiempo de proceso - Slave 14 0,675 2,572 6,087 11,624 1 1,004 1,001 1,005 Tiempo de proceso - Slave 15 0,681 2,513 6,076 11,525 T. en calcular Workload - Slave 15 1,003 0,996 0,999 0,997 Tiempo de proceso - Slave 16 0,675 2,546 6,075 11,491 T. en calcular Workload - Slave 16 1,001 1,001 0,998 0,998 Tiempo de proceso - Slave 17 0,664 2,529 6,097 11,295 T. en calcular Workload - Slave 17 0,99 1 1,002 0,994 Tiempo de proceso - Slave 18 0,67 2,54 6,057 11,35 T. en calcular Workload - Slave 18 0,994 0,997 1,002 0,999 Tiempo de proceso - Slave 19 0,677 2,512 5,93 11,398 T. en calcular Workload - Slave 19 0,999 0,992 0,996 0,995 T. en calcular Workload - Slave 14 Tiempo de proceso - Slave 20 0,691 2,493 5,998 11,302 T. en calcular Workload - Slave 20 0,997 0,993 0,997 0,994 Tiempo de proceso - Slave 21 0,672 2,539 5,982 11,244 T. en calcular Workload - Slave 21 0,996 0,992 0,997 0,991 Tiempo de proceso - Slave 22 0,671 2,554 6,018 11,428 T. en calcular Workload - Slave 22 0,999 1 0,997 1 Tiempo de proceso - Slave 23 0,663 2,526 6,102 11,345 T. en calcular Workload - Slave 23 0,995 1 1,004 0,996 Tiempo de proceso - Slave 24 0,695 2,524 6,065 11,401 T. en calcular Workload - Slave 24 1,001 0,996 1 1,002 Tiempo de proceso - Slave 25 0,638 2,293 5,163 9,262 T. en calcular Workload - Slave 25 0,995 1 0,998 0,994 Tiempo de proceso - Total 1,748 3,469 6,401 11,771 Balanceo Medio 1,171 1,192 1,244 1,284 0,00364 0,00049 0,00158 0,00187 0,603 0,0221 0,0398 0,043 Varianza Desviación típica 56 Fermín Ayuso y Víctor Manuel Ochoa Balanceo Global 1,089 1,123 1,2 1,255 Tabla 27: Resultados para una estimación de 30 líneas y 26 procesadores Balanceo para función benchm ark con 30 líneas 1,26 1,23 1,21 1,18 balanceo 1,16 9x9 9x9 7x7 9x9 1,13 1,11 1,08 1,06 1,03 1,01 0,98 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Gráfica 7: Balanceo para una función de estimación con 30 lineas Resultados del estudio con un tamaño de la función benchmark de 60 líneas Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 8.99392 31.8155 69.87337 121.48939 T. en calcular Workload - Master 1.98074 1.97631 1.97688 1.96660 Tiempo de proceso - Slave 8.70209 31.35107 70.8841 130.87774 T. en calcular Workload - Slave 1.98526 1.97179 1.99880 1.96742 Tiempo de proceso - Total 9.31336 32.45954 71.6599 132.5936 Balanceo Medio 1.03390 1.03796 1.02643 1.10104 Varianza 0.00042 0.00185 0.00074 0.04801 Desviación típica 0.02053 0.04311 0.02723 0.21912 Balanceo Global 1.03353 1.01481 1.01446 1.07727 Tabla 28: Resultados para una estimación de 60 líneas y 2 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 4.5165 15.56246 33.50402 60.35970 T. en calcular Workload - Master 1.9692 1.98233 1.97331 1.98401 57 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Tiempo de proceso - Slave 1 4.45082 15.48524 34.90106 63.59628 T. en calcular Workload - Slave 1 1.97833 1.99606 1.98109 1.981171 Tiempo de proceso - Slave 2 4.41641 15.5812 34.92878 63.34584 T. en calcular Workload - Slave 2 1.97289 1.98870 1.96740 1.99795 Tiempo de proceso - Slave 3 4.43462 15.51833 34.63576 61.017581 T. en calcular Workload - Slave 3 1.97631 1.97197 1.99180 1.984321 Tiempo de proceso - Total 5.14698 16.28334 35.70573 64.78502 Balanceo Medio 1.04465 1.04498 1.06224 1.07795 Varianza 0.00010 0.00015 0.00123 0.00090 Desviación típica 0.01037 0.01225 0.03516 0.03005 Balanceo Global 1.02267 1.00620 1.04252 1.05362 Tabla 29: Resultados para una estimación de 60 líneas y 4 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 2.19699 7.36881 16.09807 29.08121 T. en calcular Workload - Master 1.96560 1.96434 1.98096 1.98277 Tiempo de proceso - Slave 1 2.16138 7.52456 16.72613 31.12371 T. en calcular Workload - Slave 1 1.96309 1.98278 1.97210 1.98644 Tiempo de proceso - Slave 2 2.15994 7.51084 16.88210 31.14490 T. en calcular Workload - Slave 2 1.98310 1.98781 1.97450 1.98716 Tiempo de proceso - Slave 3 2.17201 7.48201 16.78889 30.96783 T. en calcular Workload - Slave 3 1.97281 1.98556 1.98810 1.99986 Tiempo de proceso - Slave 4 2.14143 7.53281 16.78486 31.22164 T. en calcular Workload - Slave 4 1.99034 1.98644 1.978506 1.97941 Tiempo de proceso - Slave 5 2.12370 7.47009 16.71036 31.08012 T. en calcular Workload - Slave 5 1.97151 1.96889 1.971937 1.96434 Tiempo de proceso - Slave 6 2.11747 7.32039 16.26067 29.13480 T. en calcular Workload - Slave 6 1.79983 1.80210 1.79907 1.80171 Tiempo de proceso - Slave 7 2.07571 7.170718 15.62961 27.5810 T. en calcular Workload - Slave 7 1.79205 1.79343 1.79153 1.80331 Tiempo de proceso - Total 3.15607 8.27770 17.24698 31.70469 Balanceo Medio 1.074756 1.06495 1.09308 1.14414 Varianza 0.00104 0.00041 0.00016 0.00014 Desviación típica 0.03225 0.02026 0.01277 0.01222 Balanceo Global 1.05842 1.05049 1.08013 1.13199 Tabla 30: Resultados para una estimación de 60 líneas y 8 procesadores 58 Fermín Ayuso y Víctor Manuel Ochoa Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 1.09761 3.74247 8.32764 15.77775 T. en calcular Workload - Master 1.98003 1.98992 1.97489 1.99569 Tiempo de proceso - Slave 1 1.11416 3.95848 8.90911 30.79600 T. en calcular Workload - Slave 1 1.97159 1.98453 1.98118 1.95781 Tiempo de proceso - Slave 2 1.11163 3.96473 8.89106 28.09449 T. en calcular Workload - Slave 2 1.98126 1.99322 1.99918 2.015951 Tiempo de proceso - Slave 3 1.07880 3.99016 8.87378 30.77042 T. en calcular Workload - Slave 3 1.98776 1.97588 1.98240 1.970647 Tiempo de proceso - Slave 4 1.10590 4.00769 8.85227 30.87134 T. en calcular Workload - Slave 4 1.96975 1.96351 1.98680 1.97851 Tiempo de proceso - Slave 5 1.08980 3.95307 8.91069 27.10131 T. en calcular Workload - Slave 5 1.97008 1.97677 1.97936 1.96885 Tiempo de proceso - Slave 6 1.00213 3.56553 7.95814 14.9482 T. en calcular Workload - Slave 6 1.79552 1.80513 1.80317 1.794458 Tiempo de proceso - Slave 7 1.00397 3.50621 7.7652932 14.84477 T. en calcular Workload - Slave 7 1.79405 1.78741 1.789230 1.79882 Tiempo de proceso - Slave 8 0.9959 3.53074 7.87921 14.88412 T. en calcular Workload - Slave 8 1.79900 1.79473 1.79688 1.79821 Tiempo de proceso - Slave 9 0.98654 3.53738 7.87401 14.78590 T. en calcular Workload - Slave 9 1.79151 1.78713 1.79326 1.79435 Tiempo de proceso - Slave 10 0.99694 3.53931 7.870857 14.80413 T. en calcular Workload - Slave 10 1.79458 1.794231 1.79524 1.79167 Tiempo de proceso - Slave 11 0.99041 3.51675 7.92599 14.87640 T. en calcular Workload - Slave 11 1.78822 1.790270 1.79214 1.79685 Tiempo de proceso - Slave 12 1.00866 3.51994 7.82970 14.93218 T. en calcular Workload - Slave 12 1.79162 1.79670 1.79093 1.794712 Tiempo de proceso - Slave 13 0.99200 3.52544 7.84954 14.78055 T. en calcular Workload - Slave 13 1.78672 1.78807 1.79230 1.786496 Tiempo de proceso - Slave 14 1.086319 3.96826 9.02961 17.45863 T. en calcular Workload - Slave 14 1.98667 1.97776 1.97418 1.98731 Tiempo de proceso - Slave 15 1.05704 3.74219 8.263950 14.44382 T. en calcular Workload - Slave 15 1.98306 1.98204 1.985561 2.07856 Tiempo de proceso - Total 2.19898 4.93391 9.61784 33.89448 Balanceo Medio 1.16542 1.17053 1.19024 2.42391 Varianza 0.00146 0.00038 0.000204 0.05310 Desviación típica 0.03826 0.01963 0.014289 0.23045 Balanceo Global 1.12935 1.14302 1.16281 2.13733 Tabla 31: Resultados para una estimación de 60 líneas y 16 procesadores 59 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 0.67593 2.34805 5.35058 9.49485 T. en calcular Workload - Master 1.97576 1.9650 1.97456 1.96375 Tiempo de proceso - Slave 1 0.70672 2.61068 6.17655 11.49062 T. en calcular Workload - Slave 1 1.98349 1.97010 1.97813 1.97737 Tiempo de proceso - Slave 2 0.68303 2.54381 6.20077 11.68959 T. en calcular Workload - Slave 2 1.99287 1.99509 1.97498 1.973765 Tiempo de proceso - Slave 3 0.69314 2.62016 6.26550 11.46930 T. en calcular Workload - Slave 3 1.9769 1.98172 1.98206 1.96123 Tiempo de proceso - Slave 4 0.68532 2.60976 6.125282 11.53209 T. en calcular Workload - Slave 4 2.0376 1.987738 1.979641 1.98089 Tiempo de proceso - Slave 5 0.70016 2.59650 6.105300 11.56107 T. en calcular Workload - Slave 5 1.9763 1.96715 1.985102 1.96743 Tiempo de proceso - Slave 6 0.61675 2.23221 5.22423 9.73295 T. en calcular Workload - Slave 6 1.79786 1.797314 1.80412 1.79675 Tiempo de proceso - Slave 7 0.63215 2.23501 5.20877 9.68551 T. en calcular Workload - Slave 7 1.79498 1.79186 1.79414 1.80041 Tiempo de proceso - Slave 8 0.61429 2.20515 5.15263 9.71910 T. en calcular Workload - Slave 8 1.80303 1.79517 1.79471 1.79764 Tiempo de proceso - Slave 9 0.62000 2.22117 5.21463 9.78314 T. en calcular Workload - Slave 9 1.78686 1.79152 1.79034 1.79073 Tiempo de proceso - Slave 10 0.61437 2.21601 5.27775 9.76256 T. en calcular Workload - Slave 10 1.79262 1.79867 1.79458 1.79300 Tiempo de proceso - Slave 11 0.61727 2.24945 5.262144 9.76708 T. en calcular Workload - Slave 11 1.79329 1.78559 1.78589 1.79082 Tiempo de proceso - Slave 12 0.612021 2.22220 5.18304 9.74079 T. en calcular Workload - Slave 12 1.79764 1.79521 1.79775 1.79299 Tiempo de proceso - Slave 13 0.61958 2.25274 5.23988 9.71734 T. en calcular Workload - Slave 13 1.78797 1.79077 1.78706 1.79183 Tiempo de proceso - Slave 14 0.70129 2.63355 6.18051 11.69584 T. en calcular Workload - Slave 14 1.98599 1.98272 1.98687 1.97385 Tiempo de proceso - Slave 15 0.68602 2.57262 6.12415 11.62388 T. en calcular Workload - Slave 15 1.97821 2.00759 1.99443 1.98084 Tiempo de proceso - Slave 16 0.69502 2.60184 6.2475 11.56519 T. en calcular Workload - Slave 16 1.97349 1.97654 1.98550 1.97659 Tiempo de proceso - Slave 17 0.69993 2.55530 6.13850 11.58885 T. en calcular Workload - Slave 17 1.98114 2.00199 1.97293 1.96492 Tiempo de proceso - Slave 18 0.69132 2.59601 6.144929 11.58430 T. en calcular Workload - Slave 18 1.9806 1.96965 2.04019 1.98391 60 Fermín Ayuso y Víctor Manuel Ochoa Tiempo de proceso - Slave 19 0.68648 2.56332 6.17383 11.38157 T. en calcular Workload - Slave 19 1.9942 1.97753 1.97666 1.99367 Tiempo de proceso - Slave 20 0.70423 2.58373 6.17691 11.69890 T. en calcular Workload - Slave 20 1.98046 1.98033 1.965403 1.98601 Tiempo de proceso - Slave 21 0.69205 2.60594 6.193715 11.61440 T. en calcular Workload - Slave 21 1.971651 1.98600 1.98322 1.97998 Tiempo de proceso - Slave 22 0.694107 2.62900 6.17478 11.60212 T. en calcular Workload - Slave 22 1.98216 1.97723 1.971821 1.97559 Tiempo de proceso - Slave 23 0.69933 2.57520 6.16222 11.51281 T. en calcular Workload - Slave 23 1.97048 1.954658 1.97241 1.98298 Tiempo de proceso - Slave 24 0.70493 2.605921 6.13239 11.56160 T. en calcular Workload - Slave 24 1.98087 1.97476 1.98995 1.97188 Tiempo de proceso - Slave 25 0.66527 2.32458 5.20369 9.67344 T. en calcular Workload - Slave 25 1.95774 1.98107 1.97412 1.97649 Tiempo de proceso - Total 1.77702 3.55908 6.68480 12.08119 Balanceo Medio 1.27228 1.26065 1.29904 1.28251 Varianza 0.00647 0.00011 0.00054 0.00022 Desviación típica 0.080455 0.01057 0.02337 0.01512 Balanceo Global 1.1547 1.19427 1.21598 1.23213 Tabla 32: Resultados para una estimación de 60 líneas y 26 procesadores Balanceo para la f unción benchmark con 60 líneas 1,23 1,18 5x5 9x9 7x7 9x9 balanceo 1,13 1,08 1,03 0,98 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Gráfica 8: Balanceo para una función de estimación con 60 lineas 61 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Efecto del número de procesadores (tiempo) para función benchmark con 60 líneas 140 120 tiempo 100 9x9 80 9x9 7x7 60 9x9 40 20 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 número de procesadores Gráfica 9: Efecto del número de procesadores para una función de estimación con 60 lineas Resultados del estudio con un tamaño de la función benchmark de 120 líneas Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 8,95250520 32,34828780 69,09974462 123,4862056 T. en calcular Workload - Master 3,9787860 3,958491600 4,00570830 3,98201020 Tiempo de proceso - Slave 8,74532190 30,56392970 70,17842670 122,98637210 T. en calcular Workload - Slave 4,00434670 4,006972200 4,009271800 4,002897800 Tiempo de proceso - Total 9,2615195 32,6465878 72,35891060 126,7646060 Balanceo Medio 1,02657870 1,05946890 1,05823530 1,0536405 Varianza 0,0002111927 0,004130824 0,001260875 0,001042357 Desviación típica 0,1453247377 0,062714861 0,035508808 0,032285565 1,058381174 1,002585530 1,004064137 Balanceo Global 1,02369075 Tabla 33: Resultados para una estimación de 120 líneas y 2 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 4.519357500 15.57424390 33.92375660 60.70229370 T. en calcular Workload - Master 3.992476600 4.002075800 3.981465100 3.966226100 Tiempo de proceso - Slave 1 4.442482700 15.68203440 34.04067920 62.37593400 T. en calcular Workload - Slave 1 4.019645300 4.005195700 3.994869400 4.008105200 Tiempo de proceso - Slave 2 4.524427000 15.481431600 34.44370660 62.89102790 T. en calcular Workload - Slave 2 4.009329000 4.006845200 4.022810500 4.006912200 62 Fermín Ayuso y Víctor Manuel Ochoa Tiempo de proceso - Slave 3 4.382847200 15.32882200 33.786874100 60.49632760 T. en calcular Workload - Slave 3 4.012315000 4.037251900 3.9874180000 3.995664600 Tiempo de proceso - Total 5.186066500 16.39930530 35.10628370 63.67726320 Balanceo Medio 1.062841700 1.065887600 1.040186400 1.0620611000 Varianza 0.001616232 0.001917383 0.000217668 0.0002991103 Desviación típica 0.040202390 0.043787942 0.014753583 0.017294806 Balanceo Global 1.032303156 1.023042370 1.019440463 1.039584225 Tabla 34: Resultados para una estimación de 120 líneas y 4 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 2.1851392000 7.364601800 16.20081820 29.016159100 T. en calcular Workload - Master 3.994452900 4.000452600 3.991986300 3.992410200 Tiempo de proceso - Slave 1 2.1812463000 7.565723300 16.76834390 31.20037550 T. en calcular Workload - Slave 1 4.005429100 4.02976340 4.018324700 4.024636600 Tiempo de proceso - Slave 2 2.140628200 7.5011699000 16.77983940 31.151911100 T. en calcular Workload - Slave 2 4.010623000 3.996622700 3.9891197000 4.017925600 Tiempo de proceso - Slave 3 2.145347900 7.868343900 16.86685690 30.95340690 T. en calcular Workload - Slave 3 3.995128400 4.017752300 3.980293500 4.013339200 Tiempo de proceso - Slave 4 2.146799800 7.4891781000 16.95099410 31.281770000 T. en calcular Workload - Slave 4 4.002650800 3.982461500 4.011385500 3.985365500 Tiempo de proceso - Slave 5 2.1556727000 7.564453800 16.730165100 31.26603720 T. en calcular Workload - Slave 5 4.005489100 3.982303100 4.0140412000 3.9821271000 Tiempo de proceso - Slave 6 2.1170841000 7.4319879000 16.291491400 29.12996040 T. en calcular Workload - Slave 6 3.628691200 3.613910200 3.636700600 3.637713400 Tiempo de proceso - Slave 7 2.070148700 7.1744305000 15.69913790 27.671051700 T. en calcular Workload - Slave 7 3.624579400 3.626052500 3.626685400 3.634331300 Tiempo de proceso - Total 3.0647741000 8.605854300 17.317682800 31.79070890 1.1210626000 1.089801700 1.1440307000 0.025701286 0.000326217 0.0001969418 0.1603162091 0.0180615019 0.014033597 1.096720345 1.1304872087 Balanceo Medio 1.0785590 Varianza 0.000865474 Desviación típica 0.029418948 Balanceo Global 1.055546975 1.079740442 Tabla 35: Resultados para una estimación de 120 líneas y 8 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x Tiempo de proceso - Master 1.094861900 3.746491900 8.318037200 16.02845290 T. en calcular Workload - Master 3.974143500 3.990048200 3.966215900 3.9817961000 Tiempo de proceso - Slave 1 1.112133700 3.932574800 8.910593100 32.37348630 63 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales T. en calcular Workload - Slave 1 3.969526000 4.0851851000 4.007898300 Tiempo de proceso - Slave 2 1.090971700 T. en calcular Workload - Slave 2 4.003340600 3.971437500 8.826968100 3.981464500 31.55588540 4.007939800 4.0110670000 4.007085300 Tiempo de proceso - Slave 3 1.082196500 3.948169800 8.963089200 31.145464000 T. en calcular Workload - Slave 3 3.973361100 4.023508600 4.003208600 3.979268100 Tiempo de proceso - Slave 4 1.089289700 3.998723400 8.878467100 29.60252550 T. en calcular Workload - Slave 4 4.009659100 3.990675300 3.999391000 4.001048300 Tiempo de proceso - Slave 5 1.079339100 3.912834000 8.879282600 30.23158640 T. en calcular Workload - Slave 5 3.997503500 3.994864500 3.979734500 3.989986200 Tiempo de proceso - Slave 6 1.026554700 3.598472800 7.9262161000 14.874716800 T. en calcular Workload - Slave 6 3.638719800 3.622642800 3.628933100 3.629577800 Tiempo de proceso - Slave 7 0.991258500 3.592712500 7.899570400 14.88000910 T. en calcular Workload - Slave 7 3.621483400 3.624206300 3.627093100 3.627948400 Tiempo de proceso - Slave 8 0.988174500 3.540281800 7.877000500 14.800115400 T. en calcular Workload - Slave 8 3.637757000 3.623664300 3.618234400 3.627015500 Tiempo de proceso - Slave 9 0.991628500 3.534503700 7.894379400 14.79450050 T. en calcular Workload - Slave 9 3.629591800 3.627587300 3.636444600 3.621364800 Tiempo de proceso - Slave 10 0.987464100 3.574336800 7.892276000 14.77995650 T. en calcular Workload - Slave 10 3.630871100 3.6261651000 3.626629100 3.6186167000 Tiempo de proceso - Slave 11 1.006909100 3.5199146000 7.790537500 T. en calcular Workload - Slave 11 3.618314000 Tiempo de proceso - Slave 12 0.995746900 T. en calcular Workload - Slave 12 3.620123700 Tiempo de proceso - Slave 13 1.007352800 3.616434800 3.626306000 14.83373080 3.632126900 3.520461000 7.8770181000 14.75608480 3.619822000 3.624951400 3.623956100 3.568146900 7.8117720000 14.79528820 T. en calcular Workload - Slave 13 3.630365000 3.624675700 3.623373000 Tiempo de proceso - Slave 14 1.084763800 3.928524200 8.947235500 16.787140100 3.615475200 T. en calcular Workload - Slave 14 4.014095500 4.036007100 4.044649300 Tiempo de proceso - Slave 15 1.069692400 3.710465600 8.346889100 14.839717500 T. en calcular Workload - Slave 15 4.040551700 4.037600600 4.000928400 4.020912100 Tiempo de proceso - Total 2.183230700 4.920518200 9.535737900 34.04103080 4.032355800 Balanceo Medio 1.135698000 1.1754282000 1.1826192000 2.326298800 Varianza 0.000283078 0.000548240 0.000331585 0.008176569 Desviación típica 0.016824926 0.023414540 0.018209478 0.090424386 Balanceo Global 1.126252286 1.1360285275 1.150509730 2.1939075804 Tabla 36: Resultados para una estimación de 120 líneas y 16 procesadores 64 Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo procesar Master 0.672918100 2.370476300 5.1579811000 9.615420000 T. en calcular Workload - Master 3.980705400 3.995539200 4.026545000 3.991333400 Fermín Ayuso y Víctor Manuel Ochoa Tiempo de proceso - Slave 1 0.722256100 2.622019900 6.270494000 11.62305940 T. en calcular Workload - Slave 1 3.999758300 4.000293000 3.997620500 3.982120700 Tiempo de proceso - Slave 2 0.688393800 2.657660900 6.342531700 11.578170300 T. en calcular Workload - Slave 2 4.010658000 4.019526800 4.000727200 4.039346800 Tiempo de proceso - Slave 3 0.699529600 2.562227000 6.199767900 11.37030850 T. en calcular Workload - Slave 3 3.994248300 4.081224800 3.982220200 4.011982700 Tiempo de proceso - Slave 4 0.694113400 2.591623100 6.304306000 11.549537100 T. en calcular Workload - Slave 4 4.007357400 4.016621200 4.032346300 3.995802800 Tiempo de proceso - Slave 5 0.685373300 2.585226600 6.1127756000 11.431920600 T. en calcular Workload - Slave 5 4.013274400 3.973764600 3.966778600 3.992732900 Tiempo de proceso - Slave 6 0.610297700 2.251230000 5.256895300 9.713202900 T. en calcular Workload - Slave 6 3.637351800 3.631815500 3.632739500 3.631420500 Tiempo de proceso - Slave 7 0.623191600 2.199076000 5.263820100 9.723121600 T. en calcular Workload - Slave 7 3.613033900 3.639952100 3.611809000 3.633418300 Tiempo de proceso - Slave 8 0.617529100 2.231813300 5.275878800 9.827039000 T. en calcular Workload - Slave 8 3.628956000 3.634761400 3.622874200 3.617440200 Tiempo de proceso - Slave 9 0.616316200 2.249289300 5.179683500 9.696272400 T. en calcular Workload - Slave 9 3.623826100 3.612767600 3.626054100 3.626539100 Tiempo de proceso - Slave 10 0.614370400 2.218714500 5.179608100 9.749389600 T. en calcular Workload - Slave 10 3.629654700 3.637525500 3.632422900 3.624103200 Tiempo de proceso - Slave 11 0.625258300 2.237037200 5.244955100 9.737214200 T. en calcular Workload - Slave 11 3.610634800 3.613728900 3.615156900 3.615598300 Tiempo de proceso - Slave 12 0.634017500 2.265303000 5.209899700 9.750002100 T. en calcular Workload - Slave 12 3.629992800 3.628581600 3.624373800 3.625096700 Tiempo de proceso - Slave 13 0.6171076000 2.244208300 5.216930500 9.774217900 T. en calcular Workload - Slave 13 3.619810000 3.611535900 3.6186311000 3.614319300 Tiempo de proceso - Slave 14 0.686242900 2.630840300 6.343753600 11.618087900 T. en calcular Workload - Slave 14 4.032353300 4.023022900 4.012048000 3.991627900 Tiempo de proceso - Slave 15 0.698548600 2.607952100 6.202386100 11.57984650 T. en calcular Workload - Slave 15 3.988640400 4.005793000 3.967680800 4.016518400 Tiempo de proceso - Slave 16 0.701812000 2.574707600 6.097045200 11.601956600 T. en calcular Workload - Slave 16 4.012473200 4.003024900 4.016385000 4.009374200 Tiempo de proceso - Slave 17 0.687528600 2.558426500 6.1162270000 11.567167800 T. en calcular Workload - Slave 17 3.983632100 3.990993000 4.002821400 Tiempo de proceso - Slave 18 0.687250300 2.566418300 6.1161805000 11.622621200 T. en calcular Workload - Slave 18 3.982787300 4.012849700 3.986472200 3.984302200 Tiempo de proceso - Slave 19 0.686217800 2.582000900 6.150367200 11.438215500 T. en calcular Workload - Slave 19 3.986034100 3.985820600 3.985758300 4.018657900 Tiempo de proceso - Slave 20 0.693854200 2.606659400 6.241470400 11.659121900 T. en calcular Workload - Slave 20 3.986845400 4.007377400 4.013491400 4.011794000 4.001843200 65 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Tiempo de proceso - Slave 21 0.693562100 2.578331300 6.046199600 11.46775330 T. en calcular Workload - Slave 21 3.995943800 3.995758100 3.967716600 3.989511800 Tiempo de proceso - Slave 22 0.703945700 2.633503700 6.1851128000 11.571163200 T. en calcular Workload - Slave 22 3.993980600 4.013094800 3.988536600 4.015615200 Tiempo de proceso - Slave 23 0.680744500 2.553933400 6.216384000 11.516621800 T. en calcular Workload - Slave 23 3.987435600 3.968952300 4.007098100 3.978198400 Tiempo de proceso - Slave 24 0.690440700 2.632181900 6.301235100 11.654521800 T. en calcular Workload - Slave 24 3.990356500 4.014002900 3.997899600 4.005395900 Tiempo de proceso - Slave 25 0.663269800 2.357990500 5.275280800 9.369075100 T. en calcular Workload - Slave 25 4.025610500 3.975804400 4.001347500 4.000318500 Tiempo de proceso - Total 1.7437140000 3.524960600 6.700493000 12.14980580 Balanceo Medio 1.256128300 1.269593200 1.3171337000 1.296935500 Varianza 0.003830539 0.000539068 0.000344875 0.000418319 Desviación típica 0.061891349 0.023217848 0.018570817 0.020452858 Balanceo Global 1.1834488316 1.208535266 1.229890819 1.244426133 Tabla 37: Resultados para una estimación de 120 líneas y 26 procesadores Balanceo para función benchmark con 120 líneas 1,23 1,18 9x9 9x9 7x7 9x9 balanceo 1,13 1,08 1,03 0,98 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Gráfica 10: Balanceo para una función de estimación con 120 lineas 66 Fermín Ayuso y Víctor Manuel Ochoa Efecto número de procesadores (tiempo) para función benchmark con 120 líneas 140 120 100 9x9 9x9 7x7 9x9 tiempo 80 60 40 20 0 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Gráfica 11: Efecto del número de procesadores con una función de estimación de 120 lineas Resultados del estudio con un tamaño de la función benchmark de 240 líneas Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 9.032491800 32.175622700 69.53260630 123.65810760 T. en calcular Workload - Master 8.206495500 8.1975459000 8.1917100000 8.206645600 Tiempo de proceso - Slave 8.742573900 32.23822600 70.99972910 123.23539160 T. en calcular Workload - Slave 8.165593800 8.232936700 8.237283500 8.20685510 Tiempo de proceso - Total 9.333309800 32.761212900 71.88347690 124.5522622 Balanceo Medio 1.033364800 1.0163072000 1.038969100 1.0129351000 Varianza 0.000549165 0.000249693 0.001590199 0.0001489743 Desviación típica 0.023434290 0.0158017004 0.039877304 0.012205506 Balanceo Global 1.0331616184 1.0019456748 1.0210997814 1.003430150 Tabla 38: Resultados para una estimación de 240 líneas y 2 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 4.522829200 15.72660380 34.22969590 61.146605600 T. en calcular Workload - Master 8.194821900 8.1722933000 8.198381400 8.1768840000 Tiempo de proceso - Slave 1 4.407079600 15.351234200 33.90928200 61.474422800 T. en calcular Workload - Slave 1 8.1708921000 8.242098500 8.182349500 8.1583815000 67 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Tiempo de proceso - Slave 2 4.389823800 15.22667030 33.72447290 62.32816750 T. en calcular Workload - Slave 2 8.202607200 8.200457400 8.188160400 8.164670300 Tiempo de proceso - Slave 3 4.355779800 15.064541000 33.39152380 59.27277850 T. en calcular Workload - Slave 3 8.1745386000 8.1606136000 8.129356800 8.2191031000 Tiempo de proceso - Total 5.1218745000 16.356107600 34.94432560 63.016281600 Balanceo Medio 1.043315400 1.060129500 1.043189700 1.0603271000 Varianza 0.000123457 0.000738001 0.000943349 0.000506622 Desviación típica 0.0111111555 0.0271661829 0.030713989 0.022508286 1.025101343 1.0515479293 Balanceo Global 1.038351204 1.043948421 Tabla 39: Resultados para una estimación de 240 líneas y 4 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 2.169396900 7.293045800 16.07256950 29.31688980 T. en calcular Workload - Master 8.188444600 8.1910902000 8.1911927000 8.220136000 Tiempo de proceso - Slave 1 2.1490421000 7.5619375000 16.73551890 31.24495730 8.201226600 8.206165600 8.224809000 2.134978000 7.470675600 16.610101700 31.241645600 T. en calcular Workload - Slave 2 8.1949418000 8.208059100 8.2505110000 8.250576100 Tiempo de proceso - Slave 3 2.1376376000 7.479345600 16.67609980 31.43589860 8.159790700 8.164004200 8.1919703000 8.205335100 Tiempo de proceso - Slave 4 2.1679491000 7.525367000 16.70678980 31.26849420 T. en calcular Workload - Slave 1 8.2113381000 Tiempo de proceso - Slave 2 T. en calcular Workload - Slave 3 T. en calcular Workload - Slave 4 8.178968400 8.205554100 8.199006300 8.243026300 Tiempo de proceso - Slave 5 2.134634500 7.4763621000 16.71224820 31.09655990 T. en calcular Workload - Slave 5 8.172983400 8.1152816000 8.209026300 8.240199900 Tiempo de proceso - Slave 6 2.159032300 7.408599100 16.55581320 29.94178020 T. en calcular Workload - Slave 6 7.279660500 7.2595139000 7.280796400 7.305428900 Tiempo de proceso - Slave 7 2.1146371000 7.288436800 15.90047890 28.45989600 T. en calcular Workload - Slave 7 7.229304300 7.262480400 7.238328400 7.252630100 Tiempo de proceso - Total 3.053521400 8.1818946000 17.126022500 31.94462020 Balanceo Medio 1.062255300 1.051988300 1.063715300 1.1179708000 Varianza 0.000485300 0.000075461 0.000175308 0.000295510 Desviación típica 0.022029544 0.008686865 0.013240400 0.0171904200 Balanceo Global 1.025895601 1.037525289 1.0525166572 1.1045682879 Tabla 40: Resultados para una estimación de 240 líneas y 8 procesadores 68 Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 Tiempo de proceso - Master 1.085346200 3.722827900 8.149838900 15.156703100 Fermín Ayuso y Víctor Manuel Ochoa T. en calcular Workload - Master 8.221055300 Tiempo de proceso - Slave 1 8.201629600 8.1925129000 8.187885500 1.111127500 3.945742700 8.841888300 23.60652650 T. en calcular Workload - Slave 1 8.284333700 8.200775700 8.213998200 8.195983800 Tiempo de proceso - Slave 2 1.086964700 3.913289300 8.898988900 24.519910400 T. en calcular Workload - Slave 2 8.265815800 8.262445000 8.177555300 Tiempo de proceso - Slave 3 1.087612900 8.239528300 3.892420800 8.9174148000 25.59132630 T. en calcular Workload - Slave 3 8.223833200 8.232093900 8.152720000 8.1713941000 Tiempo de proceso - Slave 4 1.081516800 3.910961700 8.794677800 26.24133230 T. en calcular Workload - Slave 4 8.3142846 8.227770000 8.1434191000 8.197258200 Tiempo de proceso - Slave 5 1.09586320 3.901097000 8.823032900 27.318807300 T. en calcular Workload - Slave 5 8.16563560 8.210466200 8.168309300 8.202606800 Tiempo de proceso - Slave 6 1.01242090 3.615529800 8.138783600 14.86090930 T. en calcular Workload - Slave 6 7.34274430 7.292905800 7.243556900 7.2815666000 Tiempo de proceso - Slave 7 1.02736430 3.608572100 8.0110417000 14.95392690 T. en calcular Workload - Slave 7 7.25853130 7.256327800 7.269386400 7.242603900 Tiempo de proceso - Slave 8 1.01112670 3.560416500 7.930690600 14.895131100 T. en calcular Workload - Slave 8 7.33688410 7.2851751000 7.285968200 Tiempo de proceso - Slave 9 1.0185536 3.563506300 7.906294800 14.988718200 T. en calcular Workload - Slave 9 7.336564 7.298686900 7.270526900 7.281688500 Tiempo de proceso - Slave 10 1.020174 3.591561300 8.052357100 14.94276000 T. en calcular Workload - Slave 10 7.3285948 7.259550400 7.254088100 7.260162200 Tiempo de proceso - Slave 11 1.014422 3.615334400 8.1845111000 15.016173900 T. en calcular Workload - Slave 11 7.259041 7.256144900 7.234808000 7.227266800 Tiempo de proceso - Slave 12 1.026116 3.581439100 8.084639900 14.89306750 7.269594400 T. en calcular Workload - Slave 12 7.3636109 7.261868800 7.2518792000 7.260273500 Tiempo de proceso - Slave 13 1.017671 3.6041410000 8.072178900 T. en calcular Workload - Slave 13 7.2688601 7.257293400 7.2370167000 7.216036300 Tiempo de proceso - Slave 14 1.0881400 3.8951919000 8.910269700 16.54882210 T. en calcular Workload - Slave 14 8.412669 8.343983500 8.288872500 8.276778400 Tiempo de proceso - Slave 15 1.0517533 3.657788600 8.021938700 14.67535940 T. en calcular Workload - Slave 15 8.287280200 Tiempo de proceso - Total 2.195780600 15.00470990 8.291321200 8.2478170000 8.202966400 4.878398200 9.381204200 31.93754680 Balanceo Medio 1.127231500 1.1532744000 1.1705526000 2.204660200 Varianza 0.000467195 0.000508995 0.000121855 0.1225397622 Desviación típica 0.021614697 0.022560938 0.011038809 Balanceo Global 1.098900365 0.350056798 1.108225034 1.1278879709 1.8615426413 Tabla 41: Resultados para una estimación de 240 líneas y 16 procesadores Procesadores Ventana 3x3 Ventana 5x5 Ventana 7x7 Ventana 9x9 69 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Tiempo procesar Master 0.665494100 2.338099700 5.228564000 9.730822500 T. en calcular Workload - Master 8.172847500 8.192280000 8.204469100 8.185465400 Tiempo de proceso - Slave 1 0.715412800 2.587376400 6.1130924000 11.438541700 T. en calcular Workload - Slave 1 8.231698400 8.262199800 8.190806300 8.203955500 Tiempo de proceso - Slave 2 0.692251700 2.585761700 6.158389500 11.64098960 T. en calcular Workload - Slave 2 8.216497000 8.220132700 8.2117670000 8.201548600 Tiempo de proceso - Slave 3 0.690643400 2.606791800 6.265070500 11.543907100 T. en calcular Workload - Slave 3 8.211763500 8.210722200 8.229675400 8.244278700 Tiempo de proceso - Slave 4 0.696633900 2.580115200 6.087590600 11.58689890 T. en calcular Workload - Slave 4 8.242110400 8.216265300 8.155669700 8.188840000 Tiempo de proceso - Slave 5 0.691068200 2.561704400 6.204647400 11.56665730 T. en calcular Workload - Slave 5 8.156195400 8.182374900 8.230189700 8.197632800 Tiempo de proceso - Slave 6 0.625924400 2.266553300 5.299777900 9.908729900 T. en calcular Workload - Slave 6 7.257295400 7.253486900 7.289332800 7.272039100 Tiempo de proceso - Slave 7 0.626623700 2.257832300 5.297176700 9.873773800 T. en calcular Workload - Slave 7 7.268537300 7.263019400 7.2291131000 7.251088500 Tiempo de proceso - Slave 8 0.626821500 2.262553200 5.3175171000 9.886232000 T. en calcular Workload - Slave 8 7.234680700 7.253189600 7.255840600 7.267439200 Tiempo de proceso - Slave 9 0.625939800 2.264886600 5.273311800 9.838265400 T. en calcular Workload - Slave 9 7.258875200 7.239036800 7.238928800 7.222033200 Tiempo de proceso - Slave 10 0.626728500 2.276375000 5.287248600 9.858853900 T. en calcular Workload - Slave 10 7.261690500 7.239634200 7.237839600 7.264057100 Tiempo de proceso - Slave 11 0.638004700 2.256133500 5.302518500 9.843296500 T. en calcular Workload - Slave 11 7.230683800 7.250230500 7.261899600 7.229961800 Tiempo de proceso - Slave 12 0.626414900 2.250295100 5.289408000 9.886233100 T. en calcular Workload - Slave 12 7.228289200 7.2477182000 7.222329300 7.268563700 Tiempo de proceso - Slave 13 0.628445100 2.268971700 5.317537500 9.824043700 T. en calcular Workload - Slave 13 7.258137200 7.245527800 7.266210900 7.216392600 Tiempo de proceso - Slave 14 0.691503900 2.547281600 6.124057000 11.767636800 T. en calcular Workload - Slave 14 8.214832800 8.240313000 8.339295000 8.213888600 Tiempo de proceso - Slave 15 0.685773100 2.566808900 6.053106700 11.70754330 T. en calcular Workload - Slave 15 8.203953000 8.327388800 8.327044600 8.232042000 Tiempo de proceso - Slave 16 0.686640400 2.576914200 6.135863200 11.57083870 T. en calcular Workload - Slave 16 8.222703900 8.217020500 8.253012000 8.2318131000 Tiempo de proceso - Slave 17 0.686851300 2.568384300 6.1311230000 11.39907540 T. en calcular Workload - Slave 17 8.173222800 8.1751424000 8.199215600 8.146022800 Tiempo de proceso - Slave 18 0.682975900 2.562542800 6.134727300 11.45208370 T. en calcular Workload - Slave 18 8.193793400 8.250217500 8.263592300 8.207154000 Tiempo de proceso - Slave 19 0.691472600 2.578240600 6.0711711000 11.471216400 T. en calcular Workload - Slave 19 8.201556500 8.1762199000 8.245421200 8.204726300 70 Fermín Ayuso y Víctor Manuel Ochoa Tiempo de proceso - Slave 20 0.707420400 2.583255600 6.185943400 11.40052470 T. en calcular Workload - Slave 20 8.183217700 8.205880600 8.143045000 8.261440900 Tiempo de proceso - Slave 21 0.684310700 2.574541700 6.139627500 11.581470600 T. en calcular Workload - Slave 21 8.192796900 8.209330100 8.1899412000 8.203617200 Tiempo de proceso - Slave 22 0.681685800 2.605800900 6.199772800 11.50354880 T. en calcular Workload - Slave 22 8.246670500 8.235519900 8.255768100 8.222719900 Tiempo de proceso - Slave 23 0.682726700 2.598347600 6.092885900 11.44075300 T. en calcular Workload - Slave 23 8.182911500 8.205854700 8.213233800 8.192866000 Tiempo de proceso - Slave 24 0.688664700 2.569832700 6.0711479000 11.430318500 T. en calcular Workload - Slave 24 8.204566400 8.207401800 8.245134300 8.1951949000 Tiempo de proceso - Slave 25 0.650367900 2.295370300 5.224191900 9.542497400 T. en calcular Workload - Slave 25 8.19687720 8.26686080 8.17124340 8.17503790 Tiempo de proceso - Total 1.76922910 3.57508550 6.61315800 12.0022447 Balanceo Medio 1.20653990 1.21641250 1.26887870 1.25991940 Varianza 0.00422314 0.00040717 0.00131352 0.00101323 Desviación típica 0.06498573 0.02017857 0.03624260 0.03183127 Balanceo Global 1.14296998 1.15842219 1.19924203 1.23318208 Tabla 42: Resultados para una estimación de 240 líneas y 26 procesadores Balanceo para f unción benchmark con 240 líneas 1,26 1,22 1,18 9x9 9x9 7x7 9x9 balanceo 1,14 1,1 1,06 1,02 0,98 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Gráfica 12: Balanceo para una función de estimación de carga de 240 lineas 71 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Efecto número de procesadores (tiempo) para función benchmark con 240 líneas 140 120 100 9x9 tiempo 80 9x9 7x7 60 9x9 40 20 0 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Gráfica 13: Efecto del número de procesadores con una función de estimación con 240 lineas A continuación, mostramos una serie de gráficas que indican el efecto del tamaño de la función benchmark en diferentes casos en los que se han utilizado un número distinto de procesadores: Para 4 procesadores: Efecto tamaño función benchmark para 4 procesadores 70 60 50 9x9 9x9 7x7 9x9 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 100110120130140150160170180190200210220230240 tamaño (líneas) Gráfica 14: Efecto del tamaño de la función de estimación para 4 procesadores 72 Fermín Ayuso y Víctor Manuel Ochoa Para 8 procesadores: Efecto del tamaño de la función benchmark 8 procesadores 40 tiempo de ejecución 35 30 25 9x9 20 9x9 7x7 15 9x9 10 5 0 12 2 32 22 52 42 72 62 92 82 112 132 152 172 192 212 232 102 122 142 162 182 202 222 Tamaño (líneas) Gráfica 15: Efecto del tamaño de la función de estimación para 8 procesadores Para 26 procesadores: Efecto tamaño función benchmark para 26 procesadores 14 12 10 tiempo 8 9x9 9x9 7x7 9x9 6 4 2 0 10 0 30 20 50 40 70 60 90 80 110 130 150 170 190 210 230 100 120 140 160 180 200 220 240 tamaño (líneas) Gráfica 16: Efecto del tamaño de la función de estimación para 26 procesadores Observamos en las tres últimas gráficas (Gráficas 14, 15 y 16) como el cambio entre el número de lineas utilizadas para la estimación de carga no afecta al tiempo de ejecución del algoritmo, por lo que podemos deducir que el reparto de carga se realiza de forma correcta independientemente del número de lineas utilizadas. Para finalizar con el grupo de pruebas, a continuación mostramos el speedup habiendo tomado como referencia los tiempos de ejecución secuencial para los distintos procesadores y con los diferentes tamaños de ventana anteriormente 73 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales nombrados en este trabajo. Speedup tomando el menor tiempo para función benchmark con 2 líneas 27,98 24,98 21,98 18,98 9x9 9x9 7x7 9x9 Óptimo speedup 15,98 12,98 9,98 6,98 3,98 0,98 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Speedup con el peor tiempo para función benchmark con 2 líneas 45 40 35 speedup 30 9x9 9x9 7x7 9x9 Óptimo 25 20 15 10 5 0 2 4 6 8 10 12 14 16 número de procesadores 74 18 20 22 24 26 Fermín Ayuso y Víctor Manuel Ochoa Speedup tomando el tiempo medio para f unción benchmark con 2 líneas 35 30 speedup 25 20 9x9 9x9 15 7x7 9x9 Óptimo 10 5 0 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Speedup tomando el menor tiempo para función benchmark con 20 líneas 27,98 24,98 21,98 speedup 18,98 9x9 9x9 7x7 9x9 Óptimo 15,98 12,98 9,98 6,98 3,98 0,98 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores 75 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Speedup con el peor tiempo para f unción benchmark con 20 líneas 45 40 35 30 9x9 9x9 7x7 9x9 Óptimo speedup 25 20 15 10 5 0 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Speedup tomando el tiempo medio para función benchmark con 20 líneas 35 30 25 9x9 9x9 7x7 9x9 Óptimo speedup 20 15 10 5 0 2 4 6 8 10 12 14 número de procesadores 76 16 18 20 22 24 26 Fermín Ayuso y Víctor Manuel Ochoa Speedup tomando el menor tiempo para f unción benchmark con 60 líneas 27,98 24,98 21,98 18,98 9x9 9x9 7x7 9x9 Óptimo speedup 15,98 12,98 9,98 6,98 3,98 0,98 2 4 6 8 10 12 14 16 18 20 22 24 26 número de procesadores Speedup tomando el tiempo medio Speedup con el peor tiem po para función benchmark con 60 líneas para función benchmark con 60 líneas 35 45 4030 speedup speedup 35 25 30 9x99x9 9x9 9x97x7 7x79x9 9x9Óptimo 2520 20 15 15 1010 Óptimo 55 0 02 4 2 4 6 6 8 8 10 10 12 12 14 14 16 16 número de procesadores 18 18 20 20 22 22 24 24 26 26 número de procesadores Como podemos observar en los datos presentados en este apartado, el aumento en el número de procesadores provoca una mejora en el tiempo de ejecución y en el speedup, pero empeora el balanceo, no llegando a alcanzar este el 1,3. Observamos como el algoritmo consigue escalar mejor con un número menor de procesadores. De los datos también podemos observar que el tiempo de procesamiento total empeora si elegimos un tamaño de ventana mayor, ya que los cálculos a realizar son más costosos. Un hecho a destacar es cuando ejecutamos el algoritmo con 16 procesadores, una 77 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales ventana de 9x9 y una función de estimación relativamente grande. En este caso, el balanceo se dispara, siendo posible que los resultados obtenidos para este caso no sean representativos, ya que no hemos tenido acceso y explotación exclusiva de la arquitectura en la que se han realizado las pruebas. 78 Fermín Ayuso y Víctor Manuel Ochoa Conclusiones y lineas de trabajo futuro A diferencia de los sistemas homogéneos tradicionales, las redes heterogéneas están compuestas de procesadores funcionando a diferentes velocidades. Como resultado, los algoritmos de imágenes hiperespectrales paralelos tradicionales, los cuales distribuyen los cálculos incluso a través de varios procesadores, no pueden equilibrar la carga de procesadores de diferentes velocidades en redes heterogéneas como los procesadores rápidos que realizarán rápidamente sus porciones de cálculo y tendrán que esperar en el punto de sincronización a aquellos más lentos. Por lo tanto, una solución natural del problema del cálculo heterogéneo es distribuir datos de modo dispar a lo largo de los procesadores, de tal forma que cada procesador ejecuta el volumen de computación de forma proporcional a su velocidad. La investigación del cálculo heterogéneo ha mostrado que, con una tarea cuidadosa del programa de reparto de carga, clusters heterogéneos pueden realizar un alto nivel de ejecución agregada. Consiguientemente, esperamos que este tipo de clusters representen una herramienta de elección para la comunidad científica dedicada al análisis de datos de grandes dimensiones en sensores remotos y otros campos. Debido a la reciente incorporación del cálculo heterogéneo a la investigación basada en sensores remotos, hay disponible grandes oportunidades para explotar esta técnica en el análisis de datos hiperespectrales. El objetivo principal de este trabajo ha sido examinar el efecto que tiene la selección de una función de estimación con diferentes tamaños; hemos comprobado que el reparto de carga entre los diferentes procesadores se hace de forma correcta. Con ello, se intentan integrar las implementaciones paralelas de las diferentes estrategias para el análisis hiperespectral que ya existen para que funcionen en sistemas heterogéneos (frecuentemente son la herramienta de elección de muchos sensores remotos), como paso previo a portar dichas implementaciones a arquitecturas GRID. Uno de estos pasos ya ha sido tenido en cuenta en este trabajo, como por ejemplo, que los ficheros de la imagen sólo los necesita el master. Como trabajo futuro, proponemos la implementación de algoritmos paralelos en otros sistemas de computación masivamente paralelos, con la finalidad de acortar el 79 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales tiempo necesario para procesar las imágenes. 80 Fermín Ayuso y Víctor Manuel Ochoa Manual de Usuario Esta sección tratará de solventar las dudas de los usuarios finales de la aplicación desarrollada como PFC. En las siguientes secciones se indicará como instalar el software, ejecutarlo, conocer los mensajes de error, etc. Requisitos El primer apartado está dedicado a los requisitos necesarios para ejecutar la aplicación desarrollada, tanto a nivel de hardware como a nivel de software. Requisitos Hardware En la siguiente tabla se detallan los requisitos hardware2 necesarios para poder ejecutar el programa. Procesador Memoria RAM Disco Duro Tarjeta gráfica Versión Paralela Pentium IV 2600 512 MB 3 MB3 Compatible vga Acceso a Cluster/Grid Tabla 43: Requisitos hardware Requisitos Software A la hora de ejecutar la aplicación será necesario cumplir los siguientes requisitos de software. Sistema Operativo Librerías Linux (kernel > 2.14) Librería MPI4 Versión secuencial Binario de la versión secuencial del algoritmo Versión paralela Binario de la versión paralela del algoritmo Para compilar Si desea compilar alguna de las versiones necesitará las librerías de desarrollo de MPI5 Tabla 44: Requisitos software 2 Requisitos tomados de los ordenadores de desarrollo, pero podría funcionar sobre configuraciones menores 3 Se necesitará almacenamiento extra para las imágenes hiperespectrales 4 Ver sección Instalación para mas información 5 Idem. 81 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Instalación Esta sección abarca el proceso de instalación del programa desarrollado. El programa viene distribuido como un tar.gz en el que se encuentran por un lado los binarios de la aplicación y por otro el código fuente de la misma, permitiendo al usuario compilar el código si desea personalizar el binario para una distribución concreta. Librerías Para el correcto funcionamiento de la aplicación es necesario tener instaladas la librería MPI. Esta librería implementa el middelware necesario para correr la aplicación de forma paralela. La instalación puede variar de una distribución a otra, así que daremos las instrucciones básicas para instalar la librería en las principales distribuciones, así como a partir de su código fuente. Además de esto, si desea compilar el código fuente proporcionado, tanto de la versión paralela, como la secuencial, necesitará obtener las librerías de desarrollo de MPI. En la siguiente tabla se detalla la forma de instalar las librerías necesarias para correr el programa y para compilarlo. Distribuciones Debian apt-get install mpich-bin openmpi-bin mpi-doc Distribuciones Red Hat yum install mpich-bin openmpi-bin mpi-doc Compilar Librería6 1. Descargue el código fuente de la web de MPI7. 2. Descomprima el archivo descargado con: mpich.tar.gz 3. Acceda a la carpeta y ejecute: ./configure ./make ./make install Librerías de desarrollo apt-get libmpich1.0-dev (Debian) yum install libmpich1.0-dev (Red Hat/Fedora) 6 Puede encontrar mas información sobre la compiladión de MPICH en : http://www-unix.mcs.anl.gov/mpi/mpich1/compiler.html 7 http://www-unix.mcs.anl.gov/mpi/mpich1/download.html 82 tar xvf Fermín Ayuso y Víctor Manuel Ochoa Instalación de binarios Para instalar la versión de binarios solamente tendrá que descomprimir el fichero proporcionado en la carpeta que desee, para ello, ejecute: $> gunzip Fichero.tar.gz Este comando le creará una carpeta donde se encuentran por un lado los binarios de la aplicación (directorio bin) y por otro el código fuente de la misma (directorio src). Si desea compilar el código fuente puede hacerlo ejecutando: $> make en el directorio src. Esto le creará los binarios en la ruta bin, antes citada. Ejecución A continuación mostramos la forma de ejecutar las dos versiones desarrolladas: secuencial y paralela. Versión secuencial Para ejecutar la versión secuencial debe ejecutar el siguiente comando: $> ./sequential [opciones] NombreFichero A continuación enumeramos las posibles opciones de ejecución de la versión secuencial: ● -w: Establece el tamaño de la ventana de procesamiento. El valor de la ventana debe ser menor de 9 y mayor o igual que 3 e impar. ● -o: Configura el nombre del fichero de salida. Por defecto output.bsq ● -no-save: No salvará el resultado. ● --help: Muestra la ayuda. Un ejemplo de uso sería: $> ./sequential -no-save AVIRIS_RAD Versión paralela Para ejecutar la versión paralela debe ejecutar el siguiente comando: $> mpirun parallel -np X [opciones] NombreFichero La opción -np establece el número de procesadores que se usarán en la ejecución. A continuación enumeramos las posibles opciones de ejecución de la versión paralela: 83 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales ● -w: Establece el tamaño de la ventana de procesamiento. El valor de la ventana debe ser menor de 9 y mayor o igual que 3 e impar. ● -o: Configura el nombre del fichero de salida. Por defecto output.bsq. ● -no-save: No salvará el resultado. ● -e: Número de líneas que se usan en la estimación del reparto de recursos. ● --help: Muestra la ayuda. Un ejemplo de uso sería: $> mpirun parallel -np 16 -e 5 -w 5 AVIRIS_RAD En el comando de ejemplo se ejecuta la simulación para 16 procesadores, usando 5 líneas para estimar la carga de los procesadores y una ventana de 5x5. Mensajes de error Por último se describen los posibles mensajes de error que pueden aparecer a la hora de ejecutar cada uno de los programas. Generalmente los errores son comunes a las dos aplicaciones, así que si alguno de los mensajes sólo pertenece a una de las versiones se indica. Invalid option Uno de los parámetros no es válido. Compruebe la sintaxis del comando ejecutado. Unable to load bsq image No se puede leer el archivo de imagen indicado. Compruebe que la imagen está en la ruta especificada y el nombre de la misma. Unable to create output file No se ha podido crear el fichero de salida. Compruebe que existe la carpeta destino, tiene suficiente espacio y tiene permisos de escritura sobre el destino. Incorrect format El formato de la imagen no es válido. Revise la imagen de entrada. Unable to calculate workload (paralela) No se ha podido calcular la carga de trabajo para los procesadores. Revise la configuración de la imagen, y del cluster. 84 Fermín Ayuso y Víctor Manuel Ochoa Manual del Programador En esta sección trataremos de dar una visión mas técnica del trabajo llevado a cabo, para futuras modificaciones o ampliaciones del mismo y facilitar la lectura del código para el lector técnico. En la presente sección se describe el código fuente, incluidas las funciones implementadas tanto para la versión secuencial del algoritmo como la paralela, así como el entorno de desarrollo de ambas versiones. Entorno de desarrollo Es importante reseñar el entorno utilizado a la hora de implementar el PFC. Para las dos versiones se ha utilizado un entorno similar: Sistema Operativo Ubuntu 8.04 Lenguaje Compilador IDE Librerías C Gcc 4.2.3 (versión secuencial) mpicc 4.2.3 (versión paralela) gedit, consola y make MPICH (versión de desarrollo) Estructuras de datos A continuación hacemos una descripción de las estructuras de datos creadas y utilizadas en el desarrollo. Son comunes a la versión paralela y la secuencial, por tanto sólo las describimos una vez.. Unsigned char * Los vectores de unsigned char no son una estructura creada ex profeso para nuestro proyecto, pero dada la importancia de los mismos en el programa, daremos una pequeña explicación de su uso. Los vectores de char se utilizan para almacenar las imágenes bsq, así como las partes en que se divide la misma para procesarlos. El motivo de utilizar vectores de unsigned char es que tomamos las imágenes bsq como una simple colección de bytes a procesar. Para hacer esto C no tiene un tipo definido (por ejemplo Byte), por lo que utilizamos un tipo similar en este caso: unsigned char. 85 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Los datos almacenados en los vectores dependen de la imagen, ya que pueden estar agrupados de 1 en 1, de 2 en 2, etc. Esta agrupación depende de la imagen en concreto y se define en la cabecera de la imagen. BsqHeader La estructura BsqHeader ha sido creada en exclusiva para la aplicación y nos permite almacenar los parámetros de la cabecera de las imágenes dentro de nuestro programa. Gracias a esta estructura podremos pasar información básica sobre la imagen entre las funciones de la aplicación. Esta estructura se rellena a partir del fichero .hdr (cabecera) de las imágenes bsq. La estructura de la misma es: typedef struct{ int iNumSamples; int iNumLines; int iNumBands; int iDataType; int iMult; long int iFileSize; }BsqHeader; El significado de cada término es el siguiente: ● iNumSamples: Número de samples, píxeles, por línea que tiene la imagen. ● iNumLines: Número total de líneas que tiene la imagen bsq. ● iNnumBands: Número de bandas de la imagen. ● iDataType: Tipo de datos de la imagen. Este valor nos dice la forma en que se agrupan los bytes de la imagen. ● iMult: Una vez conocemos la agrupación de bytes, tenemos esta variable para saber como recorrer la imagen, es decir, almacena el tamaño del “paso” en bytes a la hora de recorrer la imagen. ● iFileSize: Tamaño de la imagen, en bytes. sequential.c Este fichero implementa la versión secuencial del algoritmo. Debido a que algunas funciones son comunes a los dos algoritmos, se omitirán en la descripción del fichero parallel.c. 86 Fermín Ayuso y Víctor Manuel Ochoa ReadHeader Lee el fichero de cabecera de una imagen, en formato hdr, y almacena los datos en una estructura de datos. Parámetros: filename_header: Cadena con el nombre de la cabecera BsqHeader *BH: Estructura de datos donde se almacena la salida. Es un parámetro de E/S. Retorna: Entero. 1 si todo ha funcionado bien, 0 si no. ● ● ● ● ReadPiece Lee una porción de una imagen hiperespectral, devolviendo el resultado como un array de unsigned char.. Parámetros: fp: Fichero donde leeremos. lines_offset: Dirección del fichero a partir de la cual se lee lines: Número de líneas del fichero a leer. trozo: Vector de unsigned char que retorna la porción leída. BH: Cabecera de la imagen. Retorna: Entero. 1 si todo ha funcionado bien, 0 si no. ● ● ● ● ● ● ● char2* Transforman una serie de valores de un vector (dependiendo del tamaño del tipo destino) de unsigned char en un número con diferentes formatos: short, entero o double. ● ● ● ● Parámetros: num: Vector de unsigned char que transformaremos. inic: Offset desde el que calcular el resultado. Retorna: Short, Entero o double. Valor transformado. Process Procesa la imagen hiperespectral, recorriendo los píxeles y calculando la media, tomando una ventana definida por el usuario. Parámetros: ● piece: Imagen a procesar. ● Lines: Número de líneas de la imagen. ● tam_ventana: Tamaño de la ventana ● bh: Cabecera de la imagen El siguiente fragmento recoge el bucle que recorre la imagen y procesa cada uno de ● los píxeles: 87 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales for(i=0;i<lines;i++) { for(j=0;j<bh.iNumSamples;j++) { for(k=0;k<bh.iNumBands;k++) { num_valores[k]=0; csuma[k]=0; ssuma[k]=0; isuma[k]=0; dsuma[k]=0; } for(in=(i-(tam_ventana/2));in<=i+((tam_ventana/2));in++) { for(jn=(j-(tam_ventana/2));jn<=(j+(tam_ventana/2));jn++) { if(in>=0 && jn>=0 && (in!=i && jn!=j) && (in<lines) && (jn<bh.iNumSamples)) { for(k=0;k<bh.iNumBands;k++) { switch (bh.iMult) { case 1: csuma[k] +=piece[(k*piece_band_size)+((in*bh.iNumSamples)+jn)*bh.iMult]; break; case 2: ssuma[k] +=char2short(piece,(k*piece_band_size)+(((in*bh.iNumSamples)+jn)*bh.iMult)); break; case 4: isuma[k]+=char2int(piece, (k*piece_band_size)+(((in*bh.iNumSamples)+jn)*bh.iMult)); break; case 8: dsuma[k] +=char2double(piece,(k*piece_band_size)+(((in*bh.iNumSamples)+jn)*bh.iMult)); break; } } num_valores[k]++; } } } for(k=0;k<bh.iNumBands;k++) { switch (bh.iMult) { case 1: cresult=(unsigned char) (csuma[k]/num_valores[k]); piece[(k*piece_band_size)+(i*bh.iNumSamples) +j]=cresult; break; 88 Fermín Ayuso y Víctor Manuel Ochoa case 2: sresult=(short)(ssuma[k]/num_valores[k]); memcpy(&piece[(k*piece_band_size)+ (((i*bh.iNumSamples)+j)*bh.iMult)],&sresult,2); break; case 4: iresult=(int)(isuma[k]/num_valores[k]); memcpy(&piece[(k*piece_band_size)+ (((i*bh.iNumSamples)+j)*bh.iMult)],&iresult,4); break; case 8: dresult=(double)(dsuma[k]/num_valores[k]); memcpy(&piece[(k*piece_band_size)+ (((i*bh.iNumSamples)+j)*bh.iMult)],&dresult,8); break; } } } } ParameterProcess Procesa los parámetros de entrada del programa. ● ● ● ● Parámetros: argc: Número de parámetros. Argv: Valor de los parámetros. Retorna: Entero. 1 si todo ha funcionado bien, 0 si no. SecuencialProcess Procesa de forma secuencial una imagen hiperespectral. Utiliza la función process para realizar los cálculos. ● ● ● ● Parámetros: filename: Nombre de la imagen a procesar. BH: Cabecera de la imagen. Retorna: Entero. 1 si todo ha funcionado bien, 0 si no. parallel.c Fichero donde se implementa la versión paralela del algoritmo, usando la librería MPI para ello. ImagePartition Particiona la imagen para poder enviar a los diferentes procesadores una pieza que procesar. ● Parámetros: 89 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales ● ● ● ● filename: Nombre de la imagen a procesar. BH: Cabecera de la imagen. num_nodes: Número de procesadores/ equipos. Retorna: Entero. 1 si todo ha funcionado bien, 0 si no. La forma en que se particiona la imagen, es: for(n=0;n<num_nodes;n++) { if(n==0) { lines=LinesAssign[n]+(HalfWinSize); offset_mod=0; } else if(n==num_nodes-1) { lines=LinesAssign[n]+(HalfWinSize); offset_mod=-HalfWinSize; } else { lines=LinesAssign[n]+(HalfWinSize*2); offset_mod=-HalfWinSize; } Pieces[n]=(unsigned char*)malloc(BH.iMult*lines*BH.iNumSamples*BH.iNumBands); ReadPiece(fp,lines_offset+offset_mod,lines,Pieces[n],BH); lines_offset+=LinesAssign[n]; } SaveImage Guarda los resultados del proceso en un archivo bsq válido, teniendo en cuenta las piezas en que se divide la imagen. ● ● ● ● Parámetros: BH: Cabecera de la imagen. num_nodes: Número de procesadores/ equipos. Retorna: Entero. 1 si todo ha funcionado bien, 0 si no. WorkloadCalculation Calcula el tamaño de la carga de trabajo que se repartirá entre los procesadores. Se hace una prueba de carga, enviando a los procesadores una parte de la imagen. Con los tiempos de respuesta se calcula la carga asignada a cada procesador. ● ● ● 90 Parámetros: BH: Cabecera de la imagen. Retorna: Entero. 1 si todo ha funcionado bien, 0 si no. Fermín Ayuso y Víctor Manuel Ochoa La parte central del algoritmo es la siguiente: MedEstimatedTime=0; for(i=0;i<MAX_PROBES;i++){ st_master=MPI_Wtime(); Process(P,EstimationLines,DEFAULT_WINSIZE,header); end_master=MPI_Wtime(); MedEstimatedTime+=(end_master-st_master); } total=MedEstimatedTime/MAX_PROBES; double NodeTime[MAX_NODES]; double Alpha=0; double K=0; int Total=0; NodeTime[0]=total; for(i=1;i<num_nodes;i++) { MPI_Recv(&time,sizeof(time),MPI_CHAR,i,TAG,MPI_COMM_WORLD,&status); NodeTime[i]=time; total+=time; } for(i=0;i<num_nodes;i++) { Alpha+=(1/NodeTime[i]); } K=header.iNumLines/Alpha; for(i=0;i<num_nodes;i++) { LinesAssign[i]=K/NodeTime[i]; Total+=LinesAssign[i]; } OrderIndex(NodeTime,Index,num_nodes); i=0; while(i<header.iNumLines-Total) { LinesAssign[Index[(num_nodes-(i+1))]]++; i=(i+1)%num_nodes; } 91 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Referencias bibliográficas Artículos y Obras 1. D. Valencia, A. Lastovetsky, M. O'Flynn, A. Plaza and J. Plaza. Parallel Processing of Remotely Sensed Hyperspectral Images on Heterogeneous Networks of Workstations Using HeteroMPI. International Journal of High Performance Computing Applications, accepted for publication. 2. Schowengerdt, R.A. Remote Sensing: Models and Methods for Image Processing, 2nd ed., Academic Press, 1997. 3. J. Plaza, R. Perez, A. Plaza, P. Martinez and D. Valencia. Parallel Morphological/Neural Processing of Hyperspectral Images Using Heterogeneous and Homogeneous Platforms. Cluster Computing, vol. 11, no. 1, pp. 17-32, March 2008. 4. Green, R.O. et al., Imaging spectroscopy and the airborne visible/infrared imaging spectrometer (AVIRIS), Remote Sens. Environ., vol. 65,pp. 227– 248, 1998. 5. Chang, C.-I, Hyperspectral Imaging: Techniques for Spectral Detection and Classification, Kluwer Academic/Plenum Publishers, 2003. 6. Landgrebe, D., “Hyperspectral Image Data Analysis”, IEEE Signal Processing Magazine, vol. 19, no. 1, pp. 17-28, 2002. 7. A. Plaza, D. Valencia and J. Plaza. An Experimental Comparison of Parallel Algorithms for Hyperspectral Analysis Using Homogeneous and Heterogeneous Networks of Workstations. Parallel Computing, vol. 34, no. 2, pp. 92-114, February 2008. 8. A. Plaza. Parallel Techniques for Information Extraction from Hyperspectral Imagery Using Heterogeneous Networks of Workstations. Journal of Parallel and Distributed Computing, vol. 68, pp. 93-111, January 2008. 9. Landgrebe, D., Multispectral Data Analysis, A Signal Theory Perspective http://dynamo.ecn.purdue.edu/~biehl/MultiSpec/documentation.html, 1998. 10. A. Plaza, J. Plaza and D. Valencia. Impact of Platform Heterogeneity on the Design of Parallel Algorithms for Morphological Processing of HighDimensional Image Data. Journal of Supercomputing, vol. 40, no. 1, pp. 81-107, April 2007. 11. A. Plaza, J. Plaza and D. Valencia. AMEEPAR: Parallel Morphological Algorithm for Hyperspectral Image Classification in Heterogeneous Networks of Workstations. Lecture Notes in Computer Science, vol. 3391, pp. 888-891, ICCS 2006. 12. Message Passing Interface Forum. MPI: A message-passing interface standard. 92 Fermín Ayuso y Víctor Manuel Ochoa Computer Science Dept. Technical Report CS-94-230, University of Tennessee, Knoxville,TN, 1994. 13. D. Valencia, P. Martínez, A. Plaza and J. Plaza. Parallel Wildland Fire Monitoring and Tracking Using Heterogeneous Computing Resources, in: High Performance Computing in Remote Sensing. Edited by A. Plaza and C.-I Chang, Chapman & Hall/CRC Press, Computer & Information Science Series, Boca Raton, Florida, October 2007, ISBN: 9781584886624, pp. 151-182, 2007. 14. Chan A., Gropp, W. y Lusk, E.. User’s guide for mpe extensions for MPI programs. Technical Report ANL-98/xx, Argonne National Laboratory, 1998. ftp://ftp.mcs.anl.gov/pub/mpi/mpeman.ps. 15. J. Plaza, A. Plaza, R. Perez and P. Martinez. Parallel Morphological Neural Networks for Hyperspectral Image Classification on Fully Heterogeneous and Homogeneous Networks of Workstations. Parallel Computing (ParCo'2007), Forschungszentrum Jülich, Aachen, Germany, 2007. 16. Gropp, W., Lust, E., Skjellum, A., Using MPI: Portable parallel programming with message passing interface, MIT Press, 1996. 17. A. Plaza, J. Plaza, A. Paz and S. Blazquez. Parallel CBIR System for Efficient Hyperspectral Image Retrieval from Heterogeneous Networks of Workstations. Workshop on Grid Computing Applications Development (GridCAD), Timisoara, Romania, 2007 18. A. Plaza, D. Valencia, S. Blazquez and J. Plaza. Parallel Detection of Targets in Hyperspectral Images Using Heterogeneous Networks of Workstations. 15th Euromicro Parallel and Distributed Processing Conference (PDP'2007), Naples, Italy, 2007. 19. Neville, R.A., Staenz, K., Szeredi, T., Lefebvre, J. y Hauff, P., Automatic endmember extraction from hyperspectral data for mineral exploration, 4th International Airborne Remote Sensing Conf. and Exhibition/21st Canadian Symposium on remote Sensing, Ottawa, Ontario, Canada, pp. 21-24, June 1999. 20. A. Plaza, J. Plaza and D. Valencia. Distributed Computing for Efficient Hyperspectral Imaging Using Fully Heterogeneous Networks of Workstations, IEEE International Conference on Distributed Computing Systems (ICDCS), Lisbon, Portugal, 2006. 21. Chang, C.-I y Du, Q. Estimation of number of spectrally distinct signal sources in hyperspectral imagery, IEEE Trans. on Geoscience and Remote Sensing, vol. 42, no. 3, pp. 608-619, March 2004. 22. A. Plaza. Parallel Morphological Processing of Hyperspectral Image Data on Heterogeneous Networks of Computers. 20th IEEE International Parallel & Distributed Processing Symposium (IPDPS), Rhodes Island, Greece, 2006. 23. D. Valencia, A. Lastovetsky and A. Plaza. Design and Implementation of a Parallel Heterogeneous Algorithm for Hyperspectral Image Analysis Using 93 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales HeteroMPI. 5th International Symposium on Parallel and Distributed Computing (ISPDC), Timisoara, Romania, 2006. 24. Boardman, J.W. y Kruse, F.A., “Automated spectral analysis: A geological example using AVIRIS data, Northern Grapevine Mountains, Nevada,” En: Proc. 10th Thematic Conference, Geologic Remote Sensing, San Antonio, TX, 1994. 25. J. Plaza, R. Perez, A. Plaza, P. Martinez and D. Valencia. Parallel Morphological/Neural Classification of Remote Sensing Images Using Fully Heterogeneous and Homogeneous Commodity Clusters. IEEE International Conference on Cluster Computing (Cluster'2006), Barcelona, Spain, 2006. 26. A. Plaza. Heterogeneous Computing in Remote Sensing Applications: Current Trends and Future Perspectives. Fifth International Workshop on Algorithms, Models and Tools for Parallel Computing on Heterogeneous Networks (HeteroPar'06), Barcelona, Spain, 2006. 27. Madhok, V., Landgrebe, D., Spectral-Spatial Analysis of Remote Sensing Data: An Image Model and A Procedural Design. Tesis Doctoral, School of Electrical Engineering and Computer Science, Purdue University, 1998. 28. A. Plaza, J. Plaza, D. Valencia and P. Martinez, Efficient Information Extraction from Hyperspectral Imagery Using Heterogeneous Networks of Workstations. IEEE International Geoscience and Remote Sensing Symposium 2005, Seoul, South Korea, 2005. 29. A. Plaza, J. Plaza, D. Valencia and P. Martinez, Efficient Information Extraction from Hyperspectral Imagery Using Heterogeneous Networks of Workstations. IEEE International Geoscience and Remote Sensing Symposium 2005, Seoul, South Korea, 2005. 30. Chen, J.M., Spatial Scaling of a Remotely Sensed Surface Parameter by Contexture. Remote Sensing of Environment, vol. 69, pp. 30-42, 1999. 31. D. Valencia and A. Plaza. Diseño e implementación de un algoritmo heterogéneo paralelo para el análisis de imágenes hiperespectrales. Jornadas de Paralelismo, Albacete, Spain, 2006 32. Lastovetsky, A., Reddy, R., HeteroMPI: Towards a Message-Passing Library for Heterogeneous Networks of Computers, Journal of Parallel and Distributed Computing, vol. 66, issue 2: Elsevier, pp. 197-220, 2006. 33. Lastovetsky, A., Reddy, R., Data Partitioning with a Realistic Performance Model of Networks of Heterogeneous Computers, International Journal of High Performance Computations and Applications (IJHPCA), 2005. 34. Reddy, R., HMPI: A Message-Passing Library for Heterogeneous Networks of Computers, Computer Science Department, University College Dublin, Dublin, 2005. 35. Lastovetsky, A., Reddy, R., HMPI: Towards a Message-Passing Library for Heterogeneous Networks of Computers, Proceedings of the 17th 94 Fermín Ayuso y Víctor Manuel Ochoa International Parallel and Distributed Processing Symposium (IPDPS 2003), Nice, France, IEEE Computer Society, 22-26 April 2003 Webs Relacionadas 36. http://www.gts.tsc.uvigo.es/~julio/english/pubimhai/presentation.htm 37. http://concurso.cnice.mec.es/cnice2006/material121/unidad3/sensores.htm 38. http://www.oss.goodrich.com/HyperspectralDigitalImageryCollectionExperi ment.shtml 39. http://fullspectralimaging.net/MHIL.aspx 40. http://aviris.jpl.nasa.gov/ 41. http://www-unix.mcs.anl.gov/mpi/ 42. http://www3.niu.edu/mpi/ 43. http://www.open-mpi.org/ 44. http://www.gridmpi.org/index.jsp 45. http://hcl.ucd.ie/project/HeteroMPI 46. www.microimages.com/i18n/_es_spanish/es_hyprspec.pdf Apéndice En este apéndice mostramos una versión resumida del código desarrollado para la realización de este PFC. A continuación mostramos el código de la versión secuencial y el de la versión paralela. 95 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Ilustración 11: Banda 224 de la imagen original 96 Fermín Ayuso y Víctor Manuel Ochoa Ilustración 12: Banda 224 de la imagen procesada con una ventana 3x3 97 Aplicación de la tecnología Grid al tratamiento de imágenes hiperespectrales Ilustración 13: Banda 224 de la imagen procesada con una ventana 9x9 98