VALENCIA Y PLAZA 1 Diseño e implementación de un algoritmo heterogéneo paralelo para el tratamiento de imágenes hiperespectrales David Valencia† y Antonio Plaza† Resumen— El desarrollo de técnicas eficientes para la transformación de volúmenes masivos de datos hiperespectrales, obtenidos de forma remota, es una tarea crı́tica para la exploración terrestre y planetaria basada en satélites. A pesar de que la mayorı́a de las estrategias de procesamiento paralelo utilizadas para el análisis de imágenes hiperespectrales asumen homogeneidad en las plataformas de computación, las redes de computadores heterogéneos suponen una solución muy prometedora, que ha empezado a juegar un papel muy importante en misiones de teledetección. Para tratar la necesidad de algoritmos heterogéneos para el tratamiento de imágenes hiperespectrales, en el presente trabajo desarrollamos un novedoso algoritmo paralelo para el análisis morfológico (espacial y espectral) de imágenes hiperespectrales. El algoritmo se ha desarrollado utilizando heterogeneous MPI (HeteroMPI), una extensión de MPI para programar cálculos de alto rendimiento en redes heterogéneas de computadores. Los resultados experimentales son evaluados en el contexto de una aplicación real, utilizando datos hiperespectrales obtenidos por NASA Jet Propulsion Laboratory. Palabras clave— Computación heterogénea, Plataformas distribuidas, Balance de carga, MPI, HeteroMPI, Análisis hiperespectral. I. Introducción L OS sensores hiperespectrales permiten identifican materiales y objetos en la superficie terrestre basándose en patrones únicos de reflectancia, resultantes de la interacción de la energı́a solar con la estructura molecular de los materiales [1]. La mayorı́a de las aplicaciones de ésta tecnologı́a necesitan tiempos de respuesta muy rápidos para poder tomar decisiones de una forma correcta, por lo que necesitan algoritmos de alto rendimiento computacional. Algunos ejemplos de aplicaciones que utilizan esta tecnologı́a son la detección de objetivos militares, planificación urbanı́stica, prevención y respuesta ante desastres, detección de contaminantes biológicos, vertidos y otros tipos de sustancias quı́micas, etc. El concepto de imagen hiperespectral fue introducido a raı́z del desarrollo (por parte de NASA Jet Propulsion Laboratory) del sensor Airborne Visible-InfraRed Imaging Spectrometer (AVIRIS), el cual cubre la región de longitudes de onda entre 0.4 y 2.5 µm utilizando 224 bandas espectrales. Dicho instrumento es capaz de obtener ”cubos” de datos de varias decenas de kilómetros de largo y cientos de MB de tamaño. La cantidad y volumen de datos obtenidos por estos sensores ha intro†Área de Arquitectura y Tecnologı́a de Computadores, Departamento de Informática, Universidad de Extremadura, Avda. de la Universidad s/n, CP 10071, Cáceres. ducido nuevos desafı́os en cuanto a procesamiento [2]. La mayorı́a de arquitecturas paralelas especializadas en el análisis de datos de teledetección en la última década han sido de naturaleza homogégena [3]. No obstante, la computación heterogénea se está convirtiendo en una alternativa viable a los (generalmente caros) sistemas paralelos de altas prestaciones [4]. En particular, las redes heterogéneas de computadores permiten utilizar recursos ya existentes con escalabilidad incremental de componentes, y con posibilidad de evaluar el rendimiento de forma aislada [5]. Al mismo tiempo, estos sistemas pueden conseguir una gran velocidad de cómputo a bajo coste [6]. A pesar del creciente interés en el desarrollo de técnicas de análisis hiperespectral, solo existen unos cuantos algoritmos paralelos consolidados en la literatura. Esto se debe, principalmente, a su uso restringido en aplicaciones militares (muchas veces clasificadas). Sin embargo, con el reciente desarrollo e interés en la tecnologá hiperespectral, es posible anticipar que el procesamiento paralelo se convertirá en un auténtico requerimiento en la mayorı́a de las misiones. Con el principal objetivo de satisfacer esta necesidad, en el presente trabajo damos un primer paso hacia el desarrollo de técnicas de análisis hiperespectral optimizadas para arquitecturas heterogéneas. El trabajo se encuentra estructurado de la siguiente forma: la sección II describe las principales caracterı́sticas de HeteroMPI, la extensión de MPI utilizada en el desarrollo de algoritmos heterogéneos. La sección III desarrolla el algoritmo paralelo basado en HeteroMPI. La sección IV evalúa el rendimiento del algoritmo analizando su fiabilidad y escalabilidad en un cluster heterogéneo de 15 máquinas en University College Dublin. Finalmente, la sección V ofrece un resúmen de las principales aportaciones y futuras lı́neas de trabajo. II. Descripción de HeteroMPI La especificación estándar de MPI ofrece una serie de constructores de comunicaciones y grupos que permiten al programador crear un grupo de procesos elegidos explı́citamente de entre un conjunto ordenado de procesos [7]. Ésta aproximación es posible cuando la aplicación es ejecutada en un sistema homogéneo de memoria distribuida. En cambio, cuando se ejecuta en una red heterogénea, la selección del grupo óptimo deberá tener en cuenta no solo la potencia de cálculo de los procesadores heterogéneos, sino también la velocidad y ancho de banda de los enlaces de comunicación [8]. Ésta carac- 2 XVII JORNADAS DE PARALELISMO—ALBACETE, SEPTIEMBRE 2006 terı́stica es de gran importancia en aplicaciones dominadas por grandes volúmenes de datos, por ejemplo, en análisis hiperespectral, si bien es cierto que se trata de una tarea bastante complicada de conseguir, en particular, desde el punto de vista del programador. El principal objetivo de HeteroMPI es automatizar y optimizar la selección de un grupo de procesos, de forma que puedan ejecutar un algoritmo heterogéneo de la forma más eficiente posible. Para conseguir este objetivo, HeteroMPI ofrece un pequeño lenguaje para la especificación del modelo de rendimiento. Éste lenguaje es un subconjunto de mpC, definido en [9], el cual permite al programador definir explı́citamente una red abstracta y distribuir datos, cálculos y comunicaciones en dicha red. Partiendo de este modelo, HeteroMPI automáticamente adapta (en tiempo de ejecución) la red abstracta a una red real, ajustando dinámicamente el modelo de rendimiento a parámetros especı́ficos de la red, tales como la potencia de cálculo de los procesadores o la capacidad de los enlaces de comunicación. Por medio de un compilador, la descripción del modelo de rendimiento se traduce en un conjunto de funciones especı́ficas. En secciones sucesivas incluimos una breve descripción de las funciones más importantes de HeteroMPI, las cuales han sido utilizadas para implementar el algoritmo paralelo propuesto. Para obtener información más detallada sobre éstas y otras funciones de HeteroMPI, consultar [8]. Una aplicación tı́pica de HeteroMPI comienza con la inicialización del sistema, utilizando la función: HeteroMPI_Init(int argc, char **argv) Ésta rutina debe ser llamada una sola vez por todos los procesos que están ejecutando la aplicación. Tras la inicialización, los programadores pueden invocar cualquiera de las otras rutinas de HeteroMPI. Por ejemplo, la siguiente función se utiliza para crear un grupo de ejecución: HeteroMPI_Group_create(HeteroMPI_Group *gid, const HeteroMPI_Model *perf_model, const void *model_parameters, int param_count) Ésta función devuelve un manejador, gid, para el grupo de procesos MPI. La constante perf model encapsula las caracterı́sticas especf́icas del modelo de rendimiento; model parameters son los parámetros actuales del modelo de rendimiento; y param count es el número total de parámetros. Tras la ejecución de la función, las caracterı́sticas de rendimiento de los distintos procesadores heterogéneos, opt speeds, pueden obtenerse utilizando la siguiente función: HeteroMPI_Group_performances(&gid, opt_speeds) Es importante destacar que la exactitud del modelo de rendimiento depende en gran medida de la exactitud de la estimación de las velocidades actuales de los procesadores. Para realizar dicha tarea, HeteroMPI permite utilizar una función que estima dinámicamente las velocidades de los procesadores en tiempo de ejecución: HeteroMPI_Recon(HeteroMPI_Benchfunction b, const void *input_p, int num_of_parameters, void *output_p) La anterior función permite que todos los procesadores ejecuten una función benchmark, denominada b, en paralelo. Esta es una operación colectiva, y debe ser ejecutada por todos los procesos del grupo asociado con el ”universo de comunicación” definido por la variable HMPI COMM WORLD de HeteroMPI. Para liberar un grupo de computación, se utiliza la función: HeteroMPI_Group_free(HeteroMPI_Group *gid) En esta función, gid es un manejador HeteroMPI para gestionar un grupo de procesos MPI. De nuevo, se trata de una operación colectiva que debe ser ejecutada por todos los miembros del grupo. Para finalizar la de ejecución, se utiliza la función: HeteroMPI_Finalize(int exitcode) III. Algoritmo heterogéneo En esta sección describimos un algoritmo paralelo heterogéneo para el análisis morfológico de imágenes hiperespectrales. La morfologı́a matemática es una técnica estándar de procesamiento de imágenes que ofrece un marco de trabajo incomparable para conseguir la integración de la información espacial y espectral [10]. En primer lugar, describimos el algoritmo morfológico estándar. A continuación, describimos algunos aspectos fundamentales acerca de su implementación paralela, tales como el particionamiento de datos y la comunicación de los mismos. Finalmente, detallamos la implementación HeteroMPI para redes heterogéneas. En la siguiente sección, evaluamos el rendimiento computacional del algoritmo. A. Algoritmo morfológico El análisis morfológico se ha utilizado con éxito en trabajos prévios para analizar imágenes hiperespectrales [10]. El algoritmo morfológico seleccionado en el presente trabajo considera de forma simultánea la información espacial y espectral. Dichas aproximaciones hı́bridas representan la generación más avanzada de algoritmos de análisis hiperespectral. Con vistas a describir matemáticamente la aproximación propuesta, denotamos como f un conjunto de datos hiperespectrales definido en un espacio Ndimensional (N-D), donde N es el número de canales o bandas espectrales. El algoritmo impone una relación de orden en términos de pureza espectral en el conjunto de pı́xels (vectores) incluidos en una ventana de búsqueda espacial, llamada elemento estructural. Este elemento se desplaza por todos los pı́xels de la imagen [11]. Para conseguir la relación de orden citada, debemos primero definir una distancia acumulada entre un pixel particular VALENCIA Y PLAZA 3 f(x, y), donde f(x, y) denota un vector N-D las coordenadas espaciales discretas (x, y)²Z 2 , y todos los vectores incluidos en la vecindad espacial dada por un elemento estructural, que denotamos como B (B-vecindad): XX DB [f(x, y)] = SAM [f(x, y), f(i, j)], (1) donde (i, j) son las coordenadas espaciales en la B -vecindad y SAM es la distancia angular (Spectral Angle Mapper ): SAM (f(x, y), f(i, j)) = cos−1 f(x, y) · f(i, j) (2) k f(x, y) · f(i, j) k Basándonos en la anterior distancia, podemos calcular operaciones morfológicas de erosión y dilatación de la siguiente forma: (f ª B)(x, y) = argmin(i,j) {DB (f(x + i, y + j))} (3) (f ⊕ B)(x, y) = argmax(i,j) {DB (f(x + i, y + j))} (4) Los operadores argmin y argmax seleccionan, respectivamente, el pixel menos puro y el más puro en la B vecindad. Utilizando estos operadores morfológicos básicos, proponemos un nuevo algoritmo automático para la clasificación de imágenes hiperespectrales, que denotaremos como clasificador morfolófico automático (CMA) de aquı́ en adelante: Entradas: Imagen hiperespectral f, elemento estructural B, número de clases c, número de iteraciones, IM AX . Salidas: Clasificación para f(x, y) 1. Inicializar un ı́ndice de excentricidad morfológica M EI(x, y) = 0 para cada pı́xel. 2. Para cada iteración, mover B por todos los pı́xels de f, definiendo un área de búsqueda local alrededor de f(x, y) y calcular el pixel máximo y mı́nimo de cada B -vecindad utilizando dilatación y erosión, respectivamente. Actualizar el M EI en cada pixel utilizando el SAM entre el máximo y el mı́nimo. Repetir este proceso hasta llegar al número máximo de iteraciones. 3. Seleccionar el conjunto de c vectores con un mayor ı́ndice asociado en la imagen M EI resultante y estimar la abundancia a nivel subpixel αi (x, y) de dichos pı́xels utilizando el modelo de mezcla lineal descrito en [1]. 4. Obtener una etiqueta de clasificación para cada pixel f(x, y). La etiqueta se obtiene identificando la clase con mayor abundancia a nivel subpixel. Esto se realiza comparando todas las fracciones de abundancia estimadas {α1 (x, y), α2 (x, y), . . . , αc (x, y)} y localizando aquella con valor máximo, sea αi∗ (x, y), con i∗ = arg{max1≤i≤c {αi (x, y)}}. La complejidad computacional del algoritmo es O(pf × pB × N ) [2], donde pf es el número de pı́xeles en f y pB es el número de pı́xeles en B. En la siguiente subsección, proponemos una implementación paralela para optimizar el algoritmo en sistemas heterogéneos. B. Implementación paralela heterogénea Dada la naturaleza de los datos hiperespectrales y los algoritmos de análisis, pueden aplicarse dos tipos de particionamiento de datos: espacial y espectral [2]. El particionamiento espacial subdivide la imagen en múltiples bloques que contienen pı́xels (vectores) completos, asignando uno o más bloques de pı́xels a cada procesador. El paralelismo espectral subdivide los datos en bloques de bandas espectrales contiguas (sub-volúmenes), repartiendo dichos subvolúmenes entre los diferentes procesadores. En estudios previos, se han descrito ampliamente las ventajas e inconvenientes de cada una de ambas posibilidades, demostrando que el particionamiento espacial resulta más adecuado [2]. Para implementar el algoritmo morfológico utilizando HeteroMPI, el primer paso consiste en definir un modelo de rendimiento capaz de modelar la ejecución incluyendo el particionamiento de datos y el esquema de comunicación adoptado. A continuación se muestra el fragmento principal del código mpC [9] que describe el modelo de rendimiento adoptado en nuestra aplicación concreta. Los parámetros m y n indican el número de pı́xels (columnas por filas) en la imagen de entrada. algorithm hcma_rend(int m, int n, int se_size, int iter, int p, int q, int part_size[p*q]){ coord I = p, J = q; node { I>=0 && J>=0: benchmark*((part_size[I*q+J]*iter); }; parent[0,0]; } Los parámetros se size e iter especifican, respectivamente, el tamaño del elemento estructural y el número de iteraciones ejecutas por el algoritmo. Los parámetros p y q indican las dimensiones de la rejilla de cómputo en columnas y filas, respectivamente, utilizadas para mapear las coordenadas espaciales individuales de cada procesador. Finalmente, part size es un vector que indica el tamaño de la partición local (calculada automáticamente utilizando la potencia de cálculo de los procesadores heterogéneos). Recalcamos que algunas de las definiciones se han eliminado de la siguente descripciõn por simplicidad. Por último, mostramos el núcleo del programa HeteroMPI que implementa el algoritmo de análisis hiperespectral, el cual utiliza las funciones especificadas en la sección II. main(int argc, char *argv[]){ HeteroMPI_Init(&argc,&argv); if(HeteroMPI_Is_member (HMPI_COMM_WORLD_GROUP)){ HeteroMPI_Recon(benchmark_function, dims, 15, &output_p); } HeteroMPI_Group_create(&gid, &MPC_NetType_hpamc_rend,modelp, num_param); if (HeteroMPI_Is_free()){ HeteroMPI_Group_create(&gid, 4 XVII JORNADAS DE PARALELISMO—ALBACETE, SEPTIEMBRE 2006 &MPC_NetType_hpamc_rend, NULL, 0); } if (HeteroMPI_Is_free()){ HeteroMPI_Finalize(0); } if (HeteroMPI_Is_member(&gid)){ HeteroMPI_Group_performances(&gid, speeds); Read_image(name,image,lin,col,bands, data_type,init); for (i=imax; i>1; i=i--){ AMC_algorithm(image,lin,col,bands, sizeofB,res); } if (HeteroMPI_Is_member(&gid)){ free(image); } HeteroMPI_Group_free(&gid); HeteroMPI_Finalize(0); } } IV. Experimentos En esta sección evaluamos el algoritmo paralelo propuesto. En primer lugar, describimos un cluster heterogéneo utilizado en las pruebas. A continuación, describimos brevemente una imagen hiperespectral real utilizada en nuestros experimentos, obtenida por el sensor AVIRIS. La sección finaliza con una evaluación detallada de la fiabilidad y rendimiento computacional del algortimo propuesto. TABLA I Descripción de los procesadores heterogéneos # 0,1 2,3 4,5 6,7 8 9 10 11 12 13 14 Nombre (procesadores) pg1cluster01(2) pg1cluster02(2) pg1cluster03(2) pg1cluster04(2) csultra01(1) csultra02(1) csultra03(1) csultra05(1) csultra06(1) csultra07(1) csultra08(1) Arquitectura Linux 2.4.18-10smp Intel(R) XEON(TM) SunOS 5.8 sun4u sparc SUNW Ultra-5.10 224 bandas espectrales, para un volumen de datos superior a 140 MB. La escena mostrada en la figura 1 representa un problema de clasificación muy complejo. Afortunadamente, se disponse de información verdad-terreno para comprobar la bondad de los resultados. Dicha información viene dada por 30 clases de referencia, las cuales serán utilizadas para validar la precisión de la clasificación obtenida por nuestro algoritmo morfológico paralelo. La escena utilizada es ampliamente reconocida como un benchmark de referencia para la validación de algoritmos de análisis hiperespectral. A. Cluster Heterogéneo Se ha utilizado una red heterogénea de máquinas Linux/SunOs (15 procesadores) localizada en University College Dublin (UCD). La Tabla I muestra las caracterı́sticas de los procesadores heterogéneos. Los sistemas pgcluster poseen dos procesadores, con reloj de 1977 MHz, memoria principal de 1024 MB y memoria caché de 512 KB. Por su parte, los sistemas csultra son monoprocesador, con reloj de 440 MHz, memoria principal del 512 MB y memoria caché de 2048 KB. Dichos procesadores están conectados por medio de una red de comunicación Ethernet de 100 Mbits, con un switch que permite comunicar procesadores entre sı́. A pesar de tratarse de una configuración sencilla, es también bastante tı́pica y realista. Nuestro primer experimento en este cluster consistió en medir las velocidades relativas de los procesadores en la Tabla I con el núcleo de computación del algoritmo (procesamiento de una vecindad de 3×3 pı́xels utilizando operaciones morfológicas de erosión y dilatación). La velocidad relativa de los sistemas pgcluster fue de 70, mientras que la velocidad relativa de los sistemas csultra fue de 30. B. Datos hiperespectrales La figura 1 muestra la banda espectral (correspondiente a la longitud de onda de 587 nm) de una imagen obtenida por el sensor AVIRIS sobre la región Indian Pines en Indiana, Estados Unidos. La imagen contiene 614 × 512 pı́xels y Fig. 1. Banda espectral (587 nm) de una imagen AVIRIS obtenida sobre la región Indian Pines, Indiana. La imagen (junto con su correspondiente información verdad-terreno) puede descargarse online en: http://dynamo.ecn.purdue.edu/ biehl/MultiSpec. VALENCIA Y PLAZA 5 C. Evaluación del algoritmo paralelo El algoritmo paralelo se aplicó a la imagen AVIRIS con un elemento estructural fijo de 3 × 3 pı́xels y siete valores diferentes para el parámetro IM AX , que define el número de iteraciones ejecutadas por el algoritmo (variando su valor desde 1 hasta 7 en los experimentos). La Tabla II muestra la precisión de la clasificación (en porcentaje de pı́xeles clasificados de forma correcta) con diferentes valores de IM AX , junto con los correspondientes tiempos de ejecución (en minutos), medidos en una estación de trabajo Linux con procesador Intel XEON a 2 GHz, 1 GB de memoria RAM y 512 KB de memoria caché. TABLA II Precisión y tiempo de ejecución del algoritmo morfológico IM AX Precisión (%) Tiempo (min) 1 75.23 9.54 3 81.94 27.82 5 87.95 46.91 7 90.02 64.79 Como muestra la Tabla II, el algoritmo morfológico es capáz de conseguir una precisión muy alta en la clasificación, especialmente para IM AX = 7 (por encima de 90 %), pero los tiempos de procesamiento son muy altos y, en general, inaceptables en aplicaciones de teledetección. Para optimizar los tiempos de respuesta, el algoritmo paralelo implementó en el cluster heterogéneo de UCD (ver Tabla I). Antes de mostrar los resultados, recordamos que las velocidades relativas de los procesadores heterogéneos se estimaron para diferentes tamaños del problema (número de iteraciones variando desde IM AX = 1 hasta IM AX = 7) incorporando el núcleo de computación del algoritmo morfológico (erosión, dilatación y cálculo del ı́ndice MEI) al modelo de rendimiento definido en HeteroMPI. Para que dicha estimación fuese lo más precisa posible, tuvimos en cuenta consideraciones relacionadas con la gestión de memoria en la función de benchmark para no obviar aspectos como la paginación de memoria virtual y de la caché. En nuestra implementación particular, hemos utilizado una aproximación conservadora, que asume que cada procesador heterogéneo tiene memoria suficiente como para trabajar localmente con el conjunto de datos hiperespectrales completo. Basándonos en trabajos prévios [2], hemos comprobado que se trata de una suposición razonable en la mayorı́a de casos. Además, este enfoque nos permite modelar eficientemente parámetros relacionados con la jerarquı́a de memoria, simulando un escenario desfavorable en el que cada procesador se ve forzado a utilizar mecanismos de reubicación y paginación debidos a fallos de caché. Teniendo en cuenta las anteriores consideraciones, la Tabla III muestra los tiempos de ejecución (en segundos) del algoritmo morfológico paralelo basado en HeteroMPI en cada uno de los procesadores del cluster heterogéneo. Cómo se puede ver en la Tabla III, el algoritmo fue capáz de adaptarse eficientemente al entorno de computación heterogéneo sobre el que se ejecutó. En particular, se observaron speedups siempre superiores a 11 (en comparación con el algoritmo secuencial equivalente, ejecutado en una estación csultra. También hemos probado experimentalmente que los tiempos de procesamiento promedio de los 8 procesadores pg1cluster son prácticamente idénticos a los tiempos de procesamiento promedio de los 7 nodos csultra, para todos los tamaños de problema considerados. Este hecho revela que las pequeñas diferencias detectadas en los tiempos de ejecución de la Tabla III son debidas a las caracterı́sticas intrı́nsecas del problema paralelo, y no a las heterogeneidad de la plataforma considerada, la cual ha sido modelada correctamente usando HeteroMPI. TABLA III Tiempos de ejecución (en segundos) del algoritmo basado en HeteroMPI en cada procesador heterogéneo para diferentes valores de IM AX IM AX 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 46.86 47.05 47.32 47.09 50.01 50.59 48.32 48.26 48.90 50.48 51.07 46.43 47.12 46.54 46.85 3 140.69 141.49 138.23 134.46 149.55 148.70 139.15 143.86 141.44 152.04 154.39 139.80 141.40 137.60 137.70 5 226.06 228.06 227.75 226.68 237.06 235.17 246.55 246.61 250.61 238.35 238.12 227.03 229.87 231.65 235.26 7 337.49 328.88 325.31 317.73 340.53 345.14 329.67 333.94 322.06 358.36 358.06 321.50 328.16 315.20 326.25 Para medir el balanceo de carga, la Tabla IV muestra el balanceo conseguido por el algoritmo en el cluster heterogéneo considerado. El balanceo se define como D = Rmax /Rmin , donde Rmax y Rmin son el tiempo máximo y mı́nimo de ejecución (considerando todos los procesadores). Por tanto, el balance perfecto se consigue cuando D = 1. Es importante destacar que los valores de balance de carga mostrados en la Tabla IV son superiores a los conseguidos en [2] para algoritmos de análisis hiperespectral estándar ejecutados en sistemas paralelos homogéneos, lo cual demuestra la capacidad del modelo utilizado para balancear la carga en el sistema considerado. Antes de concluir, es importante enfatizar la importancia de modelar las caracterı́sticas del sistema de memoria de los diferentes nodos heterogéneos en la función benchmark (utilizada en el modelo de rendimiento). La Tabla V muestra los valores de Rmax , Rmin y D obtenidos tras ejecutar el algoritmo propuesto en el mismo cluster heterogéneo, pero esta 6 XVII JORNADAS DE PARALELISMO—ALBACETE, SEPTIEMBRE 2006 TABLA IV Balance de carga para el algoritmo paralelo (utilizando diferentes valores de IM AX ) IM AX Rmin Rmax D 1 46.43 51.07 1.09 3 134.46 154.39 1.14 5 226.06 250.61 1.10 7 358.36 315.20 1.13 vez aplicando una función benchmark que no tiene en cuenta el sistema de memoria y únicamente modela la potencia de cálculo de los diferentes procesadores. La Tabla V también muestra los valores obtenidos para el balanceo, D. Como puede apreciarse, despreciar los efectos de la memoria en el modelo de rendimiento de HeteroMPI tiene como resultado la obtención de un balance de carga mucho menos eficiente. TABLA V Balance de carga para el algoritmo paralelo (sin tener en cuenta las caracterı́sticas del sistema de memoria) IM AX Rmin Rmax D 1 31.90 74.58 2.33 3 92.188 213.49 2.31 5 150.36 345.18 2.29 7 217.01 482.73 2.22 V. Conclusiones y lı́neas futuras En el presente trabajo hemos descrito un algoritmo paralelo, basado en HeteroMPI, para la el análisis de imágenes hiperespectrales (obtenidas de forma remota) en sistemas paralelos heterogéneos. En concreto, hemos utilizado como caso de estudio un algoritmo morfológico que integra la información espacial y espectral. Los resultados experimentales obtenidos en este trabajo indican que el algoritmo propuesto es altamente eficiente en términos de clasificación, tiempo de respuesta y distribución de carga. En particular, los resultados en cuanto a balanceo de carga mejoran sensiblemente los valores obtenidos en estudios previos utilizando sistemas paralelos homogéneos. Dentro de las lı́neas futuras de trabajo, destacamos la adaptación de este algoritmo a sistemas masivamente paralelos y de tipo Grid, ası́ como la implementación del algoritmo en arquitecturas hardware especializadas, susceptibles de ser utilizadas en procesamiento a bordo. En este sentido, actualmente experimentamos con hardware gráfico programable y FPGAs. En el futuro, tenemos previsto integrar el algoritmo propuesto en sistemas de monitorización de cambios temporales y seguimiento de otros fenómenos, tales como incendios forestales y agentes contaminantes en aguas y atmósfera. VI. Agradecimientos Los autores agradecen la financiación proporcionada por la Comisión Europea y el Ministerio de Educación y Ciencia, ası́ como el soporte prestado por la Consejerı́a de Infraestructuras y Desarrollo Tecnológico de la Junta de Extremadura a través de una beca de investigación FPI concedida al primer autor. En especial, los autores agradecen la gran colaboración prestada por el Dr. Alexey Lastovetsky (University College Dublin) en el manejo de HeteroMPI y su aplicación a los casos de estudio descritos en este trabajo. Referencias [1] C.-I. Chang, Hyperspectral imaging: Techniques for spectral detection and classification, Kluwer, Academic Publishers, 2003. [2] A. Plaza, D. Valencia, J. Plaza, and P. Martinez, “Commodity cluster-based parallel processing of hyperspectral imagery,” Journal of Parallel and Distributed Computing, vol. 66, no. 3, pp. 345–358, March 2006. [3] J. Dorband, J. Palencia, and U. Ranawake, “Commodity computing clusters at goddard space flight center,” Journal of Space Communication, vol. 1, no. 3, 2003. [4] A. Lastovetsky, Parallel computing on heterogeneous networks, Wiley-Interscience, Hoboken, NJ, 2003. [5] 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, 2006. [6] A. Plaza, “Parallel morphological processing of hyperspectral image data on heterogeneous networks of computers,” in Proc. IEEE International Parallel and Distributed Processing Symposium (IPDPS), 2006, pp. 1121–1131. [7] J. Dongarra, S. Huss-Lederman, S. Otto, M. Snir, and D. Walker, MPI: The complete reference, The MIT Press, Cambridge, MA, 1996. [8] A. Lastovetsky and R. Reddy, “Heterompi: Towards a message-passing library for heterogeneous networks of computers,” Journal of Parallel and Distributed Computing, vol. 66, pp. 197–220, 2006. [9] A. Lastovetsky, “Adaptive parallel computing on heterogeneous networks with mpc,” Parallel Computing, vol. 28, pp. 1369–1407, 2002. [10] A. Plaza, P. Martinez, J. Plaza, and R. Perez, “Dimensionality reduction and classification of hyperspectral image data using sequences of extended morphological transformations,” IEEE Trans. Geoscience and Remote Sensing, vol. 43, no. 3, pp. 466–479, March 2005. [11] P. Soille, Morphological Image Analysis: Principles and Applications 2nd Ed., Springer, Berlin, 2003.