Tesis - Dirección General de Servicios Telemáticos

Anuncio
UNIVERSIDAD DE COLIMA
FACULTAD DE TELEMÁTICA
PARALELIZACIÓN DE FILTROS DE
CORRELACIÓN PARA DETECCIÓN DE
OBJETOS CON MATLAB
TESIS
QUE PARA OBTENER EL GRADO DE
MAESTRO EN COMPUTACIÓN
Presenta
ING. MARTIN SARABIA AQUINO
Asesores:
Dra. Erika M. Ramos Michel
Dr. Juan Manuel Ramírez Alcaraz.
Colima, Col., Enero de 2012
Colima, Col., Enero de 2012
M. en C. Ricardo Acosta Díaz
Director de la Facultad de Telemática
PRESENTE
Por medio de este conducto informo que le trabajo de tesis para obtener el grado de
Maestría en Computación del C. MARTIN SARABIA AQUINO, ha sido revisado y
aprobado por sus servidores y puede continuar con los trámites de titulación que
estén estipulados.
El título de la tesis es: “Paralelización de Filtros de Correlación para Detección de
Objetos con MatLab”, cuyo contenido ha sido examinado y encontrado adecuado a la
finalidad que se propone conseguir y ha quedado desarrollado bajo los siguientes
puntos:
Capítulo I.-Introducción
Capítulo II.-Antecedentes del cómputo paralelo
Capítulo III.-Cómputo paralelo en MatLab.
Capítulo IV.-Procesamiento de imágenes
Capítulo V.-Desarrollo de la paralelización
Capítulo VI.-Análisis experimental
Bibliografía
Sin otro particular, reciba un cordial saludo.
Atte.
______________________________
D. en C. Erika M. Ramos Michel
Profesor e Investigador
Universidad de Colima
Asesora de la Tesis
______________________________
D. en C. Juan M. Ramírez Alcaraz
Profesor e Investigador
Universidad de Colima
Coasesor de la Tesis
iii
Resumen
El presente trabajo está dirigido a resolver el reconocimiento de objetos a través de filtros
correlacionados en imágenes utilizando procesamiento en paralelo. Cuando las imágenes son a
color, se requiere mayor procesamiento de cómputo para llevar a cabo el reconocimiento de
objetos, para lo cual, en este trabajo se presenta una solución para llevar a cabo esta tarea a
través de un ambiente de procesamiento paralelo con la finalidad de mejorar los tiempos de
procesamiento y reconocimiento, proponer un ambiente de procesamiento en paralelo y los
algoritmos para realizar el reconocimiento de objetos con filtros de correlación en imágenes de
forma confiable y rápida. Se presentan resultados del uso del procesamiento paralelo en la
aplicación de filtros de correlación comparando la velocidad de procesamiento para realizar el
reconocimiento de objetos con filtros de correlación en imágenes cuando se implementan en
un ambiente paralelo y en un ambiente secuencial.
iv
Abstract
The aim of this research is to create an efficient system of object recognition and identification
with correlated filters in images by using parallel processing. When images are in color, it
requires more computer processing time to perform object recognition. This paper presents a
method to improve processing times and recognition via the implementation of a parallel
processing environment. It outlines a practical parallel environment and the algorithms needed
in order to perform object recognition quickly and reliably by utilizing correlated filters in
images. This study documents how processing speed is improved through the use of a parallel
processing environment with correlation filters in comparison to the traditional use of a
sequential environment.
v
Agradecimientos
La presente Tesis es un esfuerzo conjunto de la participación directa o indirectamente de
varias personas, que revisando, corrigiendo, escuchando y dando ánimo en los momentos de
crisis y de felicidad.
Mi más sincero agradecimiento:
A mí querida esposa por su amor y apoyo incondicional.
A la Dra. Erika M. Ramos Michel por su gran apoyo, dedicación y compresión como directora
de tesis.
D. en C. Juan M. Ramírez Alcaraz por su dedicación y consejos.
A mis sinodales M.C. Maria Andrade Arechiga y M.C. José Moctezuma Hernández por el
apoyo brindado.
A todas las personas que he tenido la oportunidad de conocer y que de alguna manera
contribuyeron a este trabajo.
vi
Dedicatorias
A dios por brindarme la fuerza con la que vivo siempre.
A mis padres por una infinidad de cosas.
A mi querida Familia por que en los momentos más difíciles
sigue a mi lado,
A mis dos pequeños hijos Jesús Marti y Celeste Madahi.
vii
Tabla de Contenido
Página
Resumen ................................................................................................................... iii
Resumen en Inglés ................................................................................................... iv
Agradecimientos ....................................................................................................... v
Dedicatorias .............................................................................................................. vi
Lista de figuras .......................................................................................................... x
Lista de tablas ......................................................................................................... xii
Capítulo I.- Introducción ........................................................................................... 1
I.1 Motivaciones del trabajo ..................................................................................... 2
I.2 Objetivo............................................................................................................... 3
I.3 Objetivos Específicos.......................................................................................... 3
I.4 Justificación ........................................................................................................ 3
I.5 Limitaciones y Suposiciones ............................................................................... 4
Capítulo II.- Antecedentes del cómputo paralelo ................................................... 6
II.1 Procesamiento paralelo y distribuido. ................................................................ 6
II.1.1 Multiprocesamiento ...................................................................................... 7
II.1.1.1 Sistemas multiprocesamiento ................................................................. 8
II.1.1.2 Confiabilidad. .......................................................................................... 9
II.1.1.3 Paralelismo en computación ................................................................. 10
II.1.1.4 Arquitecturas paralelas y Aplicaciones................................................. 10
II.1.1.5 Modelos multiprocesadores de Von Neumann ..................................... 12
II.1.1.6 Taxonomía de Flynn ............................................................................. 12
II.1.1.6.1 Flujo único de instrucciones, flujo único de datos (SISD) ................. 13
II.1.1.6.2 Flujo único de instrucciones, flujo múltiples de datos (SIMD) ........... 14
II.1.1.6.3 Flujo múltiple de instrucciones, flujo único de datos (MISD) ............. 15
II.1.1.6.4 Flujo múltiple de instrucciones, flujo múltiple de datos (MIMD)......... 15
II.1.2 Multinúcleo ................................................................................................. 17
II.1.2.1 Aprovechamiento de la Tecnología Multithreading y (Multitarea). ........ 18
II.1.2.2 Optimización de las Aplicaciones de Software ...................................... 18
II.1.2.3 Potencial de escalabilidad de los procesadores multinúcleo ................ 18
II.1.2.4 Tecnologia Hyper-Threading® (HT). ..................................................... 22
II.1.3 Cluster Computing (Computación en Cluster)............................................ 23
II.1.3.1 Componentes........................................................................................ 23
viii
Tabla de Contenido (continuación)
Página
II.1.3.2 Cluster Beowulf ..................................................................................... 24
II.1.3.3 MPI (Message Passing Interface) ......................................................... 25
II.1.3.4 PVM (Parallel Virtual Machine) ............................................................. 26
II.1.3.5 Cluster Mosix ........................................................................................ 26
II.1.4 Grid Computing (Computación en Grid) .................................................... 27
II.1.4.1 Características de Grid Computing ....................................................... 29
II.1.4.2 Arquitectura........................................................................................... 29
II.1.4.3 Nivel Infraestructura .............................................................................. 29
II.1.4.4 Nivel Conectividad ................................................................................ 29
II.1.4.5 Nivel Recurso........................................................................................ 30
II.1.4.6 Nivel Recursos ...................................................................................... 30
II.1.4.7 Nivel Aplicaciones ................................................................................. 30
II.1.4.8 Desventajas .......................................................................................... 30
Capítulo III.- Cómputo paralelo en MatLab. ........................................................... 32
III.1 Ciclos .............................................................................................................. 34
III.2 Principios para cambiar un código simple a paralelo. ..................................... 36
Capítulo IV.- Procesamiento de imágenes ............................................................ 39
IV.1 ¿Qué es una imagen? .................................................................................... 39
IV.2 Procesamiento de imágenes .......................................................................... 40
IV.3 Ruido. ............................................................................................................. 40
IV.4 Filtros gráficos de reconocimiento basados en correlación ............................ 41
IV.5 Capacidad de Discriminación (DC) ................................................................ 42
IV.6 Error de Localización. ..................................................................................... 42
IV.6.1 Filtro Espacial de Correspondencia (MSF) ............................................... 43
IV.6.2 Filtro Inverso (IF) ...................................................................................... 43
IV.6.3 Filtro de Sólo Fase (POF) ......................................................................... 44
IV.6.4 Filtro óptimo (OF)...................................................................................... 44
IV.6.5 Implementación de los filtros de correlación ............................................. 45
Capítulo V.- Desarrollo de la paralelización .......................................................... 47
V.1 Características de aplicaciones paralelas ....................................................... 47
V.2 Aceleración (SpeedUp) ................................................................................... 48
V.3 Eficiencia. ........................................................................................................ 49
V.4 Herramientas de Hardware ............................................................................. 49
V.4.1 Servidor DELL ........................................................................................... 50
V.4.2 Equipo Personal ........................................................................................ 50
V.5 Herramientas de Software. .............................................................................. 50
V.6 Algoritmo Secuencial. ...................................................................................... 51
ix
Tabla de Contenido (continuación)
Página
V.7 Configuración del Entorno ............................................................................... 53
V.7.1 MatLab Parallel Computing Toolbox .......................................................... 53
V.7.2 MatLab Distributed Computing Server, ...................................................... 53
V.7.3 Administrador de trabajos (Scheduler) ...................................................... 54
V.7.4 Implementación del Cluster. ...................................................................... 56
V.7.4.1 Creación del Administrador de Trabajos (Scheduler) ........................... 57
V.7.4.2 Creación de las sesiones de trabajo. .................................................... 58
V.8 Configuración de MatLab ................................................................................ 60
V.9 Algoritmo Paralelo. .......................................................................................... 60
Capítulo VI.- Análisis experimental ........................................................................ 63
VI.1 Características del Experimento ..................................................................... 63
VI.2 Análisis de Resultados ................................................................................... 63
Conclusiones ........................................................................................................... 70
x
Lista de figuras
Página
Figura 1: a) multiprocesador con 16 cpu que comparten una misma memoria; b)
imagen dividida en 16 secciones, cada una de las cuales se analiza con una cpu
distinta. ........................................................................................................................ 9
Figura 2: estructura de un procesador multinúcleo ................................................... 11
Figura 3: a) modelo original de un procesador, b) modelo multiprocesador ............. 12
Figura 4: modelo sisd ................................................................................................ 13
Figura 5: modelo simd ............................................................................................... 14
Figura 6: modelo misd ............................................................................................... 15
Figura 7: modelo mimd .............................................................................................. 16
Figura 8: número de núcleos x procesador ............................................................... 20
Figura 9: desempeño efectivo de dos procesadores mono núcleo a 3.6 ghz de
velocidad ................................................................................................................... 21
Figura 10: desempeño efectivo de dos procesadores multi núcleo a 2.8 ghz de
velocidad ................................................................................................................... 21
Figura 11: representación gráfica de un cluster beowulf ........................................... 25
Figura 12: representación gráfica de un cluster mosix .............................................. 27
Figura 13: representación gráfica de un grid (tomada de www.gridcafe.org) ............ 28
Figura 14: ejecución de código en forma paralela por el parfor................................. 36
Figura 15: (a) estructura de una imagen digital; (b) imagen digital con tres espectros
.................................................................................................................................. 40
Figura 16:(a) ruido; (b) imagen adquirida; (c) imagen con ruido................................ 41
Figura 17: (a) objeto a localizar; (b) escena que contiene el objeto .......................... 45
Figura 18: plano de correlación obtenido entre el objetivo y la escena de la figura
17(a): (a) en tres dimensiones; (b) en dos dimensiones ........................................... 46
Figura 19: diagrama de estados de la aplicación de los filtros de correlación ........... 51
Figura 20: tiempos requeridos por el programa secuencial para procesar 30
imágenes ................................................................................................................... 52
Figura 21: diagrama de bloques de workers locales ................................................. 54
Figura 22: configuración del planificador de trabajos del cluster ............................... 55
Figura 23: ruta de trabajo para inicializar el cluster ................................................... 56
Figura 24: instalación e inicialización del mdce ......................................................... 56
Figura 25: resultado de nodestatus ........................................................................... 57
Figura 26: inicialización del administrador de trabajos jbcluster ................................ 58
Figura 27: creación de un worker y la asignación al administrador de trabajos
jmcluster .................................................................................................................... 59
Figura 28: información retornada por el comando nodestatus .................................. 59
Figura 29: configuración interna del matlab del nuevo planificador ........................... 60
Figura 30: uso del nuevo administrador de trabajos desde matlab ........................... 60
Figura 31: representación de una ejecución paralela ................................................ 62
Figura 32: comparativo de los tiempos de procesamiento secuencial vs paralelo .... 65
xi
Lista de figuras (continuación)
Página
Figura 33: comparativo general de los tiempos de procesamiento hasta 4
procesadores............................................................................................................. 66
Figura 34: promedio en horro de tiempo con procesamiento paralelo ...................... 67
Figura 35: porcentaje promedio de ahorro en tiempo................................................ 67
Figura 36: speedup real vs ideal ............................................................................... 68
Figura 37: medición de la eficiencia del algoritmo paralelo hasta con 10 procesadores
.................................................................................................................................. 69
xii
Lista de tablas
Página
Tabla I: Taxonomía de Flynn ..................................................................................... 13
Tabla II: Uso de procesadores con tecnología X86 en la lista top500.org ................. 19
Tabla III: Instrucciones for y parfor ............................................................................ 34
Tabla IV: a) ciclo secuencial; b) Ciclo paralelo con variables dependientes ............. 35
Tabla V: Tiempos de procesamiento del algoritmo de filtros de correlación de uno a
cinco núcleos............................................................................................................. 64
Tabla VI: Tiempos de procesamiento del algoritmo de filtros de correlación de seis a
diez núcleos .............................................................................................................. 64
Capítulo I.- Introducción
Cuando apareció la computadora, se comenzó una era de progresos significativos en todas las
áreas sociales. La computación ha sido una herramienta indispensable para el progreso de la
sociedad, está involucrada desde los ambientes estudiantiles hasta la conquista del espacio. Por
tal motivo, el uso del procesamiento computacional ha ido en crecimiento, llevado de la mano
con los avances en la tecnología de hardware, los cuales permiten construir microprocesadores
capaces de procesar en un menor tiempo y, que junto con el desarrollo de algoritmos
específicos se hace posible el procesamiento de información en tiempo real.
El cómputo paralelo ha sido el resultado de los avances en hardware, integrando más de un
procesador en un sistema logrando avances significativos en el poder de cálculo, con la
finalidad de poder satisfacer las demandas de poder computacional para tareas que requieren
un alto grado de procesamiento, como lo es el reconocimiento de imágenes, la decodificación
de señales discretas, problemas de inteligencia artificial, predicción meteorológica, reacciones
químicas entre otras.
Los filtro gráficos son un proceso matemático que nos permite discriminar o resaltar
características específicas en una imagen, y con el término correlación se indica la
correspondencia o la relación recíproca que se da entre dos o más objetos. De lo anterior, se
tiene que los filtros de correlación permiten reconocer la posición de un objeto dentro de una
imagen que lo contenga, donde previamente se proporciona la imagen del objeto como
referencia y se realiza el proceso de localización a través de la aplicación del filtro. En el
resultado se resaltan las posiciones donde existe un alto grado de correspondencia con la
imagen del objeto de referencia. En este documento se presenta la solución del reconocimiento
de objetos a través de filtros correlacionados en imágenes a través del procesamiento en
paralelo.
2
I.1 Motivaciones del trabajo
Dado que el reconocimiento de objetos en imágenes a color requiere mucha carga de
procesamiento y tiempo para realizarse, se encuentra un área de oportunidad para realizar un
trabajo de investigación que resuelva dicha tarea a partir de filtros de correlación aplicando
procesamiento paralelo como motivación de este trabajo.
A pesar de los avances tecnológicos y del gran poder computacional alcanzado, el trabajar con
imágenes representa un problema debido a la resolución y a la gran cantidad de información
que contienen las imágenes a color, en sus espectros RGB(de sus siglas en inglés rojo, verde y
azul) ya que la cantidad de operaciones crece drásticamente afectando de manera proporcional
los tiempos requeridos para la finalización de la tarea (Greenberg y Greenberg, 1995).
El reconocimiento de patrones por correlación es un subconjunto del reconocimiento de
patrones estadístico y se basa en seleccionar o crear una señal de referencia para determinar
qué tanto se le parece el objeto a examinar. Cuando se trabaja con imágenes aplicando filtros
de correlación para la detección de objetos, los algoritmos pueden requerir tiempos elevados
de procesamiento (B. V. K. Vijaya, Abhijit, y Richard, 2005).
Los métodos basados en correlación son una de las técnicas más usadas en robótica, visión e
inteligencia artificial. Entre algunas de las ventajas que presentan estos métodos se pueden
mencionar las siguientes: tienen buen fundamento matemático, pueden implementarse de
manera óptica y/o digital, son invariantes a desplazamientos y no requieren de la segmentación.
Sin embargo, también es sabido que son muy sensibles a degradaciones que modifican los
niveles de intensidad de la imagen y a distorsiones geométricas presentes en el objeto a
identificar (Ramos Michel, 2008).
Cuando las imágenes son a color, se requiere mayor procesamiento de cómputo para llevar a
cabo el reconocimiento de objetos, en este trabajo, se presenta una solución para llevar a cabo
3
esta tarea a través de un ambiente de procesamiento paralelo con la finalidad de mejorar los
tiempos de procesamiento y reconocimiento.
Con base a lo anterior, en esta investigación se aborda el problema a través de los objetivos
que a continuación se presentan.
I.2 Objetivo
Implementar un ambiente de procesamiento en paralelo y los algoritmos para realizar el
reconocimiento de objetos con filtros de correlación en imágenes a color en forma confiable y
rápida.
En función del objetivo general planteado, se establecen los siguientes objetivos específicos:
I.3 Objetivos Específicos

Analizar las técnicas de programación en ambientes paralelos aplicables al
reconocimiento de objetos en imágenes a color.

Describir las técnicas convencionales de reconocimiento de objetos basadas en
correlación, utilizando como medidas de optimización, la capacidad de discriminación
y el error de localización del objeto.

Comparar la velocidad de procesamiento para realizar el reconocimiento de objetos
con filtros de correlación en imágenes de color cuando se implementan en un ambiente
paralelo y en un ambiente secuencial.
I.4 Justificación
Debido al incremento de la resolución en las imágenes actuales, el reconocimiento de objetos
requiere mayor procesamiento, en cuyo caso, el poder de múltiples procesadores o de
múltiples núcleos puede disminuir en gran medida el tiempo de ejecución, que en el caso de la
4
programación secuencial tradicional no puede lograrse. Con el poder del procesamiento
paralelo muchos procesos pueden alimentarse en distintas unidades de procesamiento,
obteniéndose una mejora sustancial en los tiempos de ejecución, por ello, se vislumbra como
una solución para obtener el mejor desempeño de los algoritmos que requieren un gran poder
computacional.
Actualmente los equipos personales cuentan con procesadores potentes que integran más de un
núcleo de procesamiento, pero que no se utilizan de forma óptima. A pesar de que el sistema
operativo realiza las tareas administrativas sobre los programas a ejecutar, los programas que
en ese momento se ejecutan podrían estar construidos con lenguajes tradicionales que los
limitan a ejecutarse en una sola unidad de procesamiento, ignorando las demás. Este escenario
se presenta en la mayoría de los casos y en diferentes sistemas operativos.
El trabajo que se presenta en este documento tiene como objetivo presentar una solución de
programación paralela para llevar a cabo el reconocimiento de objetos con
filtros
correlacionados en imágenes a color, y mostrar las ventajas y desventajas del ambiente
paralelo en cuestión.
I.5 Limitaciones y Suposiciones
Esta investigación aborda el tema del reconocimiento de objetos en imágenes utilizando filtros
de correlación, aplicando técnicas de Paralelización. Los filtros considerados son: Filtro
Espacial de Correspondencia (MSF) filtro que se deriva de la maximización de la razón señalruido (SNR), Filtro Inverso (IF) se obtiene maximizando el criterio definido por la razón entre
pico y energía de correlación, Filtro de Solo Fase (POF) maximiza la eficiencia de luz y el
Filtro Optimo (OF) que minimiza la posibilidad de errores anómalos en la localización del
objeto.
Las técnicas de paralelismo analizadas se basan en las herramientas ofrecidas por MatLab
2008b, esencialmente el parfor. No se aborda la programación con la interfaz de paso de
5
mensajes (MPI). Debido a que la artquitectura utilizada para la implementación no es
adecuada para este tipo de programación
La infraestructura para realizar las pruebas considero un equipo DELL con las siguientes
características: dos procesadores Xeon de seis núcleos corriendo a una velocidad de reloj de
2.3 GHz, un bus frontal de 1066 MHz, memoria de 24 GB ECC y un disco duro de 500 GB.
El sistema operativo que ejecuta es Windows 7 a 32 bits.
El presente documento está organizado de la siguiente forma. En el capítulo II, se hace una
breve descripción de multiprocesamiento, multinúcleo, computación en Cluster, y
computación en Grid. En el capítulo III se describen los ciclos de Matlab y los principios para
cambiar un código secuencial a un código que se ejecute en paralelo en MatLab. La definición
de imagen, su procesamiento, así como los diferentes filtros gráficos de reconocimiento
basado en correlación aplicados a las imágenes, para determinar el error de localización o la
capacidad de discriminación en el reconocimiento del objeto se especifican en el Capítulo IV.
En el capítulo V, se detallan las herramientas hardware y software se utilizan para crear el
entorno de pruebas, su configuración y optimización. En el capítulo VI se analizan los
resultados de los ejercicios realizados con los filtros gráficos de reconocimiento basado en
correlación en ambiente paralelo y secuencial. Los resultados se comparan para determinar si
son los mismos. Y finalmente se resumen las conclusiones de este trabajo.
6
Capítulo II.- Antecedentes del cómputo paralelo
En este capítulo se presentan los conceptos que tienen que ver básicamente con el antecedente
del cómputo paralelo, así como las características y conceptos de las infraestructuras de
multiprocesamiento, multinúcleo, Cluster Computing y Grid Computing.
II.1 Procesamiento paralelo y distribuido.
El principal propósito del procesamiento paralelo es la de hacer los cálculos más rápidos
usando varios procesadores de manera concurrente. La búsqueda de este objetivo tenía una
tremenda influencia en todas las actividades relacionadas con la informática. La necesidad de
soluciones más rápidas y para la solución de problemas de tamaño más grandes se presenta en
una amplia variedad de aplicaciones, incluyendo los sistemas dinámicos de fluidos, la
predicción del clima, modelado simulación de grandes sistemas, extracción y procesamiento
de información, procesamiento de imágenes, inteligencia artificial y automatización de la
manufactura (JáJá, 1992).
Tres factores contribuyeron principalmente a la fuerte tendencia a favor de la computación
paralela, primero el costo del hardware ha disminuido constantemente, por lo que ahora es
posible construir sistemas con varios procesadores a un costo razonable. Segundo, la
integración a muy grande escala (VLSI) en los circuitos electrónicos ha avanzado al punto que
es posible diseñar sistemas complejos que tienen millones de transistores en un solo chip.
Tercero, las velocidades de los ciclos de reloj de los procesadores de tipo Von Neummann
parece estar llegando a los límites físicos; además de el alto rendimiento obtenido de los
procesadores secuenciales, está asociado a un incremento en los costos de forma dramática.
Todos estos factores han impulsado las investigaciones en la exploración del paralelismo y su
uso potencial en importantes aplicaciones.
La computadora paralela es una simple colección de procesadores, generalmente del mismo
tipo, interconectados en cierto modo para permitir coordinación de sus actividades y el
7
intercambio de datos. Se supone que los procesadores se encuentran a una pequeña distancia
unos de otros, y se utilizan principalmente para solucionar problemas en forma conjunta.
Contrario a esto, en las computadoras con sistemas distribuidos, pueden tener diferentes tipos
de procesadores, y estar distribuidos sobre una gran área geográfica, donde su principal
objetivo es el de usar los recursos distribuidos disponibles, recolectar información y
transmitirlo sobre la red que los interconecta (JáJá, 1992).
Las computadoras paralelas pueden ser clasificadas de acuerdo a las características de la
arquitectura y los modos de operación. En particular, estos criterios incluyen los tipos y
números de procesadores, la interconexión entre los procesadores y el correspondiente
esquema de comunicación, el total control de la sincronización, y las operaciones de
entrada/salida.
En los recientes años, la computación distribuida y el cómputo paralelo han evolucionado en
tal forma que prometen ser la solución para las necesidades de cómputo en el futuro. Los
avances significativos en los algoritmos paralelos y en las arquitecturas computacionales han
demostrado tener el potencial para aplicar la computación concurrente en una gran variedad de
problemas. Los ejemplos más representativos de la computación distribuida son: el Cluster y
el Grid.
Las tecnologías de Cluster y Grid representan diferentes maneras de resolver problemas de
forma eficiente. Aunque difieren en su estructura, las diferentes características y beneficios
son complementos de los dos, por ejemplo, un Cluster puede contribuir con recursos a un Grid.
II.1.1 Multiprocesamiento
Una tendencia significativa en el campo de la computación, es atacar problemas que requieren
mayor poder computacional minimizando tiempos en la solución de un problema determinado,
esta necesidad ha llevado a la construcción de computadoras que contienen más de un
procesador trabajando conjuntamente. El multiprocesamiento se ha utilizado en los sistemas
8
durante varias décadas, pero está siendo de nuevo objeto de interés debido a los bajos costos
que representan los procesadores actuales. En lugar de incrementarse la frecuencia del reloj
para obtenerse velocidades cercanas a 0.0001ns, es más factible incrementar la cantidad de
procesadores y construir una computadora con 1000 procesadores con velocidades de 1ns.
Aunque el segundo sistema es más lento comparado con el primero, en teoría el poder de
cómputo es el mismo (Andrew S. Tanenbaum y Goodman, 2000).
El multiproceso para tareas generales es, a menudo, difícil de conseguir, debido a que pueden
existir varios programas manejando datos internos a la vez, conocido como estado o contexto
(Huerta Pellitero, 2009). Los programas típicamente se escriben asumiendo que sus datos son
incorruptibles. Sin embargo, si otra copia del programa se ejecuta en otro procesador, las dos
copias pueden interferir entre sí intentando ambas leer o escribir su estado al mismo tiempo.
Para evitar este problema se usa una variedad de técnicas de programación incluyendo
semáforos, algunas comprobaciones y bloqueos que permiten a una sola copia del programa
cambiar de forma exclusiva ciertos valores (Andrew S. Tanenbaum, 2003).
II.1.1.1 Sistemas multiprocesamiento
Tradicionalmente el multiprocesamiento es conocido como la ejecución de múltiples procesos
de forma simultánea, asignándole a cada proceso un CPU y realizando las tareas de forma
más rápida. Múltiples procesadores pueden ser utilizados para ejecutar múltiples instrucciones
de software dentro de un proceso único.
Cuando se habla de múltiples procesadores, se hace referencia a una computadora que
contiene más de un procesador central, y que cada uno puede ejecutar al menos una tarea
diferente de forma independiente. Con la aparición del multiprocesamiento, el procesador deja
de ser el recurso más valioso del sistema, y toman su lugar los temas de confiabilidad,
paralelismo en computación, esquemas óptimos de conexión y contención entre procesadores
que intentan acceder los mismo recursos (Deitel, 1985).
9
II.1.1.2 Confiabilidad.
Uno de los atractivos de los sistemas de multiprocesamiento es que si un procesador falla, los
procesadores que siguen funcionando continúan operando, claro que esto no es automático y
requiere de un diseño cuidadoso. Cuando un procesador falla es importante que los demás
sean notificados, el sistema operativo debe ser sensible y detectar el fallo del procesador
reajustando sus parámetros de asignación de recursos y tomar así una acción de balance entre
los procesadores activos evitando la sobrecarga del sistema (Hennessy y Patterson, 1993).
El modelo de multiprocesador se extiende al software, ya que todos los procesos que se están
ejecutando pueden compartir un solo espacio virtual de direcciones mapeado en la memoria
común, y cualquier proceso puede leer o escribir en la memoria, no se necesita más, los dos
procesos se pueden comunicar haciendo que uno de ellos escriba y que el otro los lea después.
Esta capacidad de comunicar los dos procesos es la razón de que los sistemas
multiprocesadores sean tan populares (Andrew S. Tanenbaum y Goodman, 2000) y es un
modelo fácil de entender y que puede aplicarse a una gran gama de problemas. Como ejemplo
sería un programa que examina una imagen y enumera todos los objetos que contiene, y donde
cada procesador puede analizar una sección de la imagen, sin embargo, todos los procesos
tiene acceso a la imagen completa, debido a que un objeto puede ocupar varias secciones
como se puede observar en la Figura 1 (Andrew S. Tanenbaum y Goodman, 2000).
Figura 1: a) Multiprocesador con 16 CPU que comparten una misma memoria; b) imagen dividida
en 16 secciones, cada una de las cuales se analiza con una CPU distinta.
10
II.1.1.3 Paralelismo en computación
Se mencionan dos clasificaciones para el paralelismo:
a) Paralelismo Funcional, se aprovecha cuando las funciones, bloques, instrucciones, entre
otras, bien iguales o distintas que intervienen en la aplicación, se ejecutan en paralelo.
Ejemplos de estos sistemas son: MIMD, MISD (véase Sección II.1.1.6).
b) Paralelismo de Datos, el cual se consigue mediante el uso de estructuras de datos que
permiten operaciones paralelas sobre sus elementos, se explotan cuando una misma función o
instrucción se ejecuta repetidas veces en paralelo con diferentes datos. Ejemplos de estos
sistemas son: SIMD, MIMD-SPMD ( véase Sección II.1.1.6 ).
II.1.1.4 Arquitecturas paralelas y Aplicaciones
Como se menciona anteriormente, en la aparición de las computadoras los procesadores eran
muy lentos comparados con los actuales, el poder de cómputo era limitado, pero en su época
las soluciones que brindaron fueron increíbles. La computación comenzó a diversificarse y
orientarse a distintas áreas de aplicación, siendo las áreas de investigación las que más poder
computacional demandaban. El tratamiento de datos es un ejemplo, así como los procesos de
predicción del clima y los procesos de reconocimiento de patrones en imágenes.
Los procesadores funcionaban a velocidades muy bajas comparadas con las velocidades
logradas en la actualidad, los buses de datos que intercomunicaban los periféricos de
entrada/salida eran principales cuellos de botella. Actualmente los procesadores han alcanzado
velocidades de hasta 3.6 GHz y algunos osados, han modificado las frecuencias de reloj por
encima de las velocidades especificadas (overclock) del procesador, con la finalidad de
obtener ganancias en velocidad a pesar de comprometer la integridad del mismo procesador.
Además los buses de datos han sido optimizados para proporcionar mayores velocidades de
transferencia.
11
El poder de procesamiento que se ha logrado en los nuevos diseños de procesadores es
sorprendente, sin embargo, es insuficiente para áreas de investigación, videojuegos o
tratamiento de imágenes y video, llevando a la industria a buscar alternativas para incrementar
el poder de cómputo y atacar estas necesidades. Las marcas líderes en el mercado de
componentes de hardware y en exclusiva de procesadores, integraron en sistemas de cómputo
varios procesadores trabajando de manera simultánea en diferentes arreglos para poder ofrecer
una solución en particular. Como ejemplos pueden mencionarse las Workstation, Servidores
de red, o los equipos de la empresa Silicon Graphics International (SGI) orientadas a video,
imagen y modelado 3D (Figueria, 1996).
Los fabricantes de procesadores en busca de este poder de cómputo, integraron más de un
núcleo de procesamiento en un solo encapsulado, dando origen a los procesadores multinúcleo
también conocidos como multicore. Todas las arquitecturas multinúcleo están basadas en los
mismos principios establecidos para los sistemas multiprocesadores, teniendo una memoria
principal que es compartida y pueden contener memoria caché de niveles L1, L2, L3 donde se
guardan una serie de datos para su rápido acceso. El cache L1 es conocido como caché interno
más cercano a la CPU con la misma velocidad del núcleo y de tamaño reducido; memoria
cache L2 interna es de mayor tamaño, con una velocidad menor al núcleo y, memoria cache
L3 que es de mayor tamaño a las anteriores y que se accede de forma compartida. En la Figura
2 se muestra la estructura de un procesador multinúcleo (Tian y Shih, 2009). El tema del
multinúcleo es abordado en la Sección II.1.2.
Figura 2: Estructura de un procesador multinúcleo
12
II.1.1.5 Modelos multiprocesadores de Von Neumann
El matemático John Von Neumann, definió una arquitectura de multiprocesadores a partir de
su modelo de un procesador. En la Figura 3 se observa cómo puede incrementarse el número
de procesadores compartiendo una única memoria.
El modelo en la Figura 3(a), funciona de la siguiente manera: la memoria es utilizada para
almacenar el programa como los datos que necesita para ejecutarse y el programa son datos
conocidos como instrucciones codificados que indican al procesador qué tarea va a realizar.
Los datos del programa son información que utiliza el programa, el procesador obtiene las
instrucciones y los datos de la memoria para ejecutarlos de forma secuencial. El objetivo
principal de un sistema multiprocesador, es
acelerar la ejecución de aplicaciones
(Supercomputación) y ejecutar más aplicaciones por unidad de tiempo, que es el caso de la
Figura 3(b) (Hennessy y Patterson, 1993).
MEMORIA
MEMORIA
E/S
E/S
PROCESADOR 1
PROCESADOR
PROCESADOR 2
PROCESADOR 3
PROCESADORN
(a)
(b)
Figura 3: a) Modelo original de un procesador, b) Modelo multiprocesador
II.1.1.6 Taxonomía de Flynn
Flynn en 1966, observando los flujos de las instrucciones y datos exigidos por las
instrucciones, propuso un modelo sencillo para clasificar las computadoras en cuatro
categorías (Hennessy y Patterson, 1993):
13

SISD (Single Instruction, Single Data – Flujo único de instrucciones, flujo único de datos).

SIMD (Single Instruction, Multiple Data – Flujo único de instrucciones, flujo múltiples de
datos).

MISD (Multiple Instruction single Data – Flujo múltiple de instrucciones, flujo único de
datos) .

MIMD (Multiple Instruction Multiple Data – Flujo múltiple de instrucciones, flujo
múltiples de datos ) .
En la Tabla I se organizan las categorías propuestas por Flynn de acuerdo a las instrucciones y
datos que atienden.
Tabla I: Taxonomía de Flynn
Instrucciones
Una Instrucción
Datos
Múltiples
Instrucciones
Un dato
SISD
MISD
Mútiples Datos
SIMD
MIMD
II.1.1.6.1 Flujo único de instrucciones, flujo único de datos (SISD)
Este modelo no explota el paralelismo en la ejecución de las instrucciones, ni en el flujo de
datos, en la Figura 4 se puede observar que el único procesador atiende una instrucción y un
solo flujo de datos obteniendo un solo resultado al final de la secuencia de instrucciones. En
este modelo se clasifican las máquinas con un solo procesador como las PC.
Instrucción
Datos
CPU
Leer A
Leer B
C=A+B
A=B*2
Resultado
Figura 4: Modelo SISD
Ejecución
Tiempo
14
II.1.1.6.2 Flujo único de instrucciones, flujo múltiples de datos
(SIMD)
Este modelo explota varios datos dentro de un único flujo de instrucciones para realizar las
operaciones que se pueden ejecutar al mismo tiempo. Un ejemplo puede ser que un equipo
SIMD, podría tener 64 flujos de datos simultáneamente hacia 64 Unidades Aritméticas
Lógicas (ALU) para formar 64 sumas de manera simultánea, en un ciclo de reloj.
La característica principal de SIMD es que todas las unidades de ejecución paralela están
sincronizadas y responden a una instrucción (véase Figura 5). Las instrucciones SIMD se
difunden a todas las unidades de ejecución, donde cada una mantiene su propio conjunto de
registros. Las máquinas SIMD masivamente paralelas cuentan con redes de interconexión
para intercambiar datos entre los elementos de procesamiento.
Instrucción
CPU
CPU
CPU
CPU(n)
Datos
Datos
Datos
Datos
Leer A(1)
Leer B(1)
C(1)=A(1)+B(1)
Procesador 1
Leer A(2)
Leer B(2)
C(1)=A(2)+B(2)
Procesador 2
Leer A(3)
Leer B(3)
C(1)=A(3)+B(3)
Procesador 3
Resultado
Resultado
Resultado
Resultado
Leer A(n)
Leer B(n)
C(1)=A(n)+B(n)
Procesador n
Ejecución
Tiempo
Figura 5: Modelo SIMD
La arquitectura SIMD es adecuada para las instrucciones vectoriales, como son los
tratamientos de arreglos en ciclos for, por consiguiente, tener oportunidad de paralelismo
masivo, también requiere cantidades masivas de datos o paralelismo en datos. Esta
arquitectura presenta una gran debilidad en instrucciones “case”, debido a que cada unidad de
procesamiento debe realizar una operación diferente sobre su dato, dependiendo del dato que
15
tenga. Aquellas unidades que tengan un dato erróneo inhabilitan para permitir que el resto
puedan continuar. Estas situaciones, esencialmente se ejecutan a 1/n del rendimiento, donde n
es el número de cases (Hennessy y Patterson, 1993).
II.1.1.6.3 Flujo múltiple de instrucciones, flujo único de datos (MISD)
Este modelo no es tan común en la actualidad debido a que múltiples instrucciones
generalmente tratan a múltiples flujos de datos, por lo que se utiliza donde se requiere tener
varios sistemas de respaldo previendo fallos en sistemas críticos. No se ha llegado a producir
en forma masiva (Hennessy y Patterson, 1993; Quinn, 2004).
Es difícil imaginar este modelo sin la Figura 6. Un flujo múltiple de instrucciones con un flujo
múltiple de datos es más fácil de imaginar que múltiples instrucciones con un flujo único de
datos.
Instrucciones
Instrucciones
Instrucciones
Instrucciones
CPU
CPU
CPU
CPU(n)
Datos
Leer A(1)
C(1)=A(1)*1
Store C(1)
Procesador 1
Leer A(1)
C(2)=A(1)*2
Store C(2)
Procesador 2
Resultado
Resultado
Resultado
Leer A(1)
C(3)=A(1)*3
Store C(3)
Procesador 3
Resultado
Leer A(n)
C(n)=A(n) *n
Store C(n)
Procesador n
Ejecución
Tiempo
Figura 6: Modelo MISD
II.1.1.6.4 Flujo múltiple de instrucciones, flujo múltiple de datos
(MIMD).
En la Figura 7 se observan
varios procesadores autónomos que ejecutan instrucciones
diferentes, sobre datos distintos. Los sistemas distribuidos suelen incluirse en esta
16
clasificación, donde la construcción de una computadora potente se conecta a otras
computadoras más pequeñas por parte del usuario, es decir, se agregan tantas CPUs como
puedan comprarse para obtenerse un rendimiento proporcional. Otra ventaja de MIMD puede
ser, un alto rendimiento absoluto, más rapidez que si se tuviera un procesador más grande, y la
más alta fiabilidad y disponibilidad debido a la redundancia.
Hacia los años 80’s se hace una definición del concepto de Multis como una nueva clase de
computadoras basadas en múltiples microprocesadores. El pequeño tamaño, el bajo costo y
alto rendimiento de los microprocesadores permiten el diseño y construcción de estructuras de
computadoras que ofrecen ventajas significativas en fabricación, relación precio-rendimiento,
y fiabilidad sobre las familias de computadoras tradicionales (Bell, 1985).
Instrucciones
Instrucciones
Instrucciones
Instrucciones
Leer A(1)
Leer B(1)
C(1)=A(1)+B(1)
Store C(1)
Procesador 1
Resultado
Resultado
Resultado
Resultado
CPU
CPU
CPU
CPU(n)
Datos
Datos
Datos
Datos
Call funA
X=Z*A
Store X
Leer F(1)
G=F(1)*F(1)
Store G
Procesador 2
Procesador 3
Y= 1
For I= 1 to 10
Y = Y*I
Store Y
Procesador n
Ejecución
Tiempo
Figura 7: Modelo MIMD
Los Sistemas MIMD se clasifican en tres categorías de acuerdo a la forma como los
procesadores utilizan la memoria para gestionar datos:
a) Memoria Compartida: Los procesos tienen acceso a la misma localidad de memoria
física. Los procesos pueden ejecutarse en un solo procesador. Además, los procesos
también pueden ejecutarse en procesadores distintos y acceden a la misma localidad
17
de memoria física, en este supuesto se debe tener especial cuidado con la consistencia
de datos, por tal motivo se usan mecanismos como semáforos, barreras entre otros para
lograr esta consistencia.
b) Memoria Distribuida: Cada procesador tiene su memoria exclusiva, si un procesador
necesita un dato que se encuentra en una localidad de memoria remota, debe solicitarlo
para poder accederlo. Dentro de esta clasificación se tienen a las definiciones UMA
(Uniform Access Memory), NUMA (Non Uniform Access Memory), COMA (Cache
Only Memory Access) (Dandamudi, 2003; Figueria, 1996)
c) Memoria Compartida Distribuida: En este modelo existe una capa de software que crea
un espacio de memoria virtual compartida, cada procesador aporta un espacio de
memoria para su creación.
II.1.2 Multinúcleo
La necesidad de lograr un mayor rendimiento sin aumentar el consumo de energía y el calor,
se ha convertido en una gran preocupación crítica para muchas compañías de Tecnologías de
Información. La solución propuesta ha sido diseñar nuevas arquitecturas de procesadores que
integran dos o más núcleos de procesamiento en un procesador único que prometen mejorar el
rendimiento y minimizar la generación calor, pues cuando a un procesador se le exige mayor
velocidad se demanda mayor energía (Ortega Lopera, 2009), lo que incrementa la cantidad de
calor disipado.
Históricamente las manufacturas de los procesadores han respondido a la solicitud de mayor
potencia, principalmente para lograr mayores velocidades se han incrementado las frecuencias
del reloj, sin embargo, el tema de la temperatura y refrigeración han sido pivotes principales
para revaluar el diseño de los procesadores.
18
La otra forma para lograr un mayor rendimiento en los procesadores es reducir la velocidad
del reloj e incrementar la cantidad de unidades de procesamiento (agregar más núcleos de
procesamiento), en consecuencia se obtiene menor cantidad de calor y mayor eficiencia,
afectando positivamente a la vida útil de los componentes electrónicos de los sistemas.
II.1.2.1 Aprovechamiento de la Tecnología Multithreading y
(Multitarea).
El estándar de la industria en servidores que utilizan múltiples procesadores desde hace varios
años hace uso del Multithreading, que permite que las aplicaciones en red tomen ventaja de los
procesadores adicionales, múltiples hilos de ejecución de software. Estas capacidades han
permitido a las organizaciones obtener aplicaciones con un gran desempeño (Fruehe, 2005).
A diferencia de la multitarea, que es la capacidad de poder ejecutar varios programas
diferentes al mismo tiempo en un procesador o sobre varios.
II.1.2.2 Optimización de las Aplicaciones de Software
La optimización de software puede ser un eficiente camino para obtener un mejor desempeño
sin incrementar el consumo energético y la disipación de calor. Existen herramientas
(Compiladores Intel) para compilación que permiten optimizar de forma considerable el
rendimiento del software, obteniendo ventaja sobre el software que no las utilizan. Estos
rendimientos están limitados a la configuración de un sistema específico y el entorno de la
aplicación (Fruehe, 2005).
II.1.2.3 Potencial de escalabilidad de los procesadores multinúcleo
Anteriormente cuando un sistema de cómputo contaba con equipos que contenían un solo
socket para un procesador, sólo proveían acceso a un núcleo de procesamiento, sin embargo,
este enfoque cambió en los últimos años, donde sistemas con un socket para un procesador,
19
permiten tener acceso a dos, cuatro o más núcleos de procesamiento, tendencia que se seguirá
en un futuro donde un procesador físico va a contener cada vez más núcleos de procesamiento
(Hernández Barragán y Jorba Esteve, 2010).
Las soluciones que hacen de uso de procesadores con tecnología X86 (AMD-x86, Intel
EM64T, Intel Core) según la lista Top500.org (2011) al mes de junio suma 89.4% del total
(véaseTabla II), mostrando claramente la tendencia hacia el uso de procesadores con esta
arquitectura.
Tabla II: Uso de procesadores con tecnología X86 en la lista top500.org
Familia de procesador
Power
NEC
Sparc
Intel IA-64
Intel EM64T
AMD x86_64
Intel Core
Totales
Conteo
45
1
2
5
380
66
1
500
Porcentaje %
9.00 %
0.20 %
0.40 %
1.00 %
76.00 %
13.20 %
0.20 %
100%
En la Figura 8 se observa la tendencia hacia el uso de sistemas multinúcleo de más de 4
núcleos en forma masiva, lo que lleva a tomar en cuenta nuevos elementos al momento de
realizar evaluaciones de desempeño, los nuevos aplicativos, especialmente a los que afectan de
manera directa el trabajo de procesos en paralelo, la distribución de cargas y la sincronización
de datos entre los diferentes núcleos (Hernández Barragán y Jorba Esteve, 2010).
Las estructuras multinúcleo deben siempre incluir módulos de caché. Los desarrollos actuales
de los procesadores multinúcleo pueden variar de acuerdo al fabricante, ya que pueden incluir
módulos de cache independiente o compartida, implementaciones de bus y adicionalmente
capacidades de manejar hilos (threats en inglés) como la tecnología Hyper-Threading (HT)
Technology de Intel.
20
Figura 8: Número de núcleos x Procesador
Como se ha mencionado anteriormente, el incremento de núcleos dentro de un encapsulado de
un solo procesador permite obtener un excelente rendimiento mientras se logra reducir el
consumo energético reduciendo las velocidades de reloj en cada uno de los núcleos.
Fruehe (2005) compara dos configuraciones de servidor, en una se utilizan dos procesadores
independientes con frecuencias de reloj a 3.6 GHz (véase Figura 9 ), mientras que en la otra
configuración se utilizan dos procesador multinúcleo con frecuencias de reloj a 2.8 GHz. En
ésta última, se visualiza un mayor rendimiento a diferencia de los procesadores de alta
velocidad (véase Figura 10). Estas estimaciones se basaron solamente con modelos técnicos y
es una muestra del porqué la industria comienza a migrar de sistemas basados en un solo
procesador a sistemas multi-núcleo.
21
Figura 9: Desempeño efectivo de dos procesadores mono núcleo a 3.6 GHz de velocidad
Figura 10: Desempeño efectivo de dos procesadores multi núcleo a 2.8 GHz de velocidad
Existen varios factores que pueden influir en el rendimiento real y la escalabilidad del
procesador, y estos, generalmente están ligados a una gran cantidad de variables de la
plataforma y el medio ambiente de la aplicación. Entre los factores que pueden afectar la
ampliación interna de múltiples núcleos están: el compilador, consideraciones arquitectónicas,
la memoria, los periféricos de I/O, bus frontal, entre otras (Fruehe, 2005).
22
II.1.2.4 Tecnologia Hyper-Threading® (HT).
Para mejorar el rendimiento del procesador, en el pasado se crearon los subprocesos en los
programas, dividiendo las instrucciones en varias transferencias para que varios procesadores
pudieran actuar sobre ellas. La tecnología Hyper-Threading®, proporciona un paralelismo a
nivel de subprocesos en cada procesador, lo que da como resultado un uso más eficaz de los
recursos, mayor capacidad de procesamiento y rendimiento mejorado en el software con
subprocesos múltiples (Intel Corporation 2011).
Para explotar la tecnología Hyper-Threading® de Intel es necesario contar con un procesador
Intel® con esta tecnología y un chipset que la soporte. El sistema operativo juega un papel
importante, debido a que debe de incluir optimizaciones para dar soporte a la tecnología
Hyper-Threading® y una BIOS compatible para poder brindar la flexibilidad y rendimiento
del sistema incrementados.
A pesar que esta tecnología fue creada por Intel para los procesadores Pentium 4, el HyperThreading® (HT) está disponible en procesadores multinúcleo, permitiendo a cada núcleo
funcionar como si se tratara de dos procesadores. Con la tecnología HT, las aplicaciones de
software para servidor con subprocesos múltiples pueden ejecutar subprocesos en paralelo con
cada núcleo en una plataforma de servidor.
Las ventajas que ofrece esta tecnología son (Intel Corporation 2011):

Permite más soporte de usuario, mejorando la productividad empresarial.

Ofrece tiempos de respuesta más rápidos para Internet y aplicaciones de comercio
electrónico, mejorando las experiencias de los clientes.

Aumenta el número de transacciones que se pueden procesar.

Permite compatibilidad con sistemas operativos y aplicaciones IA-32 existentes.

Gestiona mayores volúmenes de trabajo.
23
II.1.3 Cluster Computing (Computación en Cluster)
Este término pertenece a los sistemas denominados de computación distribuida, y
específicamente a los que corresponden a servicios de una red local. Desde la aparición de los
Cluster, se han ido sustituyendo las supercomputadoras, hasta conformarse como sistemas con
un alto poder procesamiento que no implica costos elevados (Sánchez Enriquez, 2007).
Los sistemas de Cluster se han popularizado a tal grado, que en la actualidad se pueden
encontrar en centros de investigación, escuelas y en algunas empresas del área privada.
Pérez (2007) define un Cluster como la capacidad de varias máquinas para realizar una tarea
como si se tratara de una única máquina. Sánchez Enriquez (2007) lo define como: un
conjunto de computadoras interconectadas con dispositivos de alta velocidad que actúan en
conjunto usando el poder cómputo de varios CPUs en combinación para resolver ciertos
problemas dados.
Como se puede observar, los conceptos establecen que son un conjunto de computadoras
interconectadas conocidos como nodos, que trabajan en la resolución de un problema dado,
proporcionando para esta tarea los recursos con los cuales cada nodo cuenta para lograr el
objetivo.
II.1.3.1 Componentes
Se utiliza un Cluster para la construcción de una supercomputadora que funciona como un
servidor en una arquitectura de Cliente – Servidor, con el cual se reducen los costos de
inversión.
La construcción de los Cluster es fácil, además, no representa un alto costo en su integración,
debido a la flexibilidad de los componentes, estos pueden ser hardware y software heterogéneo,
hardware y software homogéneo o una combinación de ambos (Sánchez Enriquez, 2007).
24
Los componentes de un Cluster son:
a) Nodos: los nodos se consideran a los puntos terminales, que pueden ser computadoras,
Workstation o Estaciones de trabajo o computadoras de múltiples procesadores.
b) Sistema Operativo: Es todo sistema base con soporte para multiprocesamiento o
multiusuario que facilite el trabajo de comunicación y acceso eficaz de los recursos.
Entre los sistemas operativos más usados en estos sistemas figuran Linux con Open
Mosix, Rocks una distribución especializada en Clustering, Unix con Solaris, HP-Ux y
Aix. Microsoft Windows con Windows NT/2000/2003 Server. Apple con su sistema
operativo OS X y algunos sistemas operativos construidos especialmente para un
Cluster específico.
c) Conexiones de Red: El Cluster se construye sobre una red de área local y el protocolo
Ethernet para comunicar las computadoras personales que forman el Cluster.
d) Middleware: Capa de software que se encuentra entre los sistemas operativos y el
usuario.
e) Protocolos de Comunicación y Servicios: Entre los protocolos de comunicación más
utilizados en los Cluster es el TCP/IP y UDP pero pueden ser utilizado algunos más.
f) Aplicaciones: Son las aplicaciones que dan soporte al Middleware o se ejecutan sobre
él, las aplicaciones de usuario.
II.1.3.2 Cluster Beowulf
Donald Becker y Thomas Sterling en 1994 construyeron el primer Cluster con fines de
investigación basado en Linux (Plaza Nieto, 2003), al cual denominaron Beowulf. El Cluster
Beowulf no es más que una colección de computadoras personales (PC’s) sin componentes
especiales, conectadas por medio de una red privada de alta velocidad. En la Figura 11, se
puede apreciar la configuración. El servidor Beowulf es el que administra los trabajos en el
Cluster. Las aplicaciones que se ejecutan dentro de Cluster deben implementar características
25
que permitan su control y ejecución utilizando librerías de paso de mensajes como la MPI1 o
PVM2.
Figura 11: Representación gráfica de un Cluster Beowulf
II.1.3.3 MPI (Message Passing Interface)
MPI es un estándar portable para la programación paralela principalmente en sistemas
distribuidos. MPI usa el paradigma del paso de mensajes y está bien adaptado para trabajar en
máquinas con memoria distribuida y por supuesto, el paso de mensajes puede ser usado en
memoria compartida por múltiples procesadores. El estándar MPI define la sintaxis y
semántica de más de 125 funciones para facilitar que las aplicaciones con pase de mensajes
sea portable (MPI-Forum, 2009).
1
2
Message Passing Interface – Interface de Pase de Mensajes
Parallel Virtual Machine – Máquina Virtual Paralela
26
MPI permite dividir las tareas fácilmente en grupos para realizar esas partes de procesamiento,
contiene también recursos para realizar la comunicación de uno a muchos o de muchos a
muchos, esto da la posibilidad al programador de ordenar las tareas en una topología virtual.
II.1.3.4 PVM (Parallel Virtual Machine)
PVM es un paquete de software que permite a una red de computadoras, compartir los
recursos como la memoria y el procesador, como una única máquina de forma virtual, este
paquete consta de dos partes (Universidad de Talca, 2007): un proceso o demonio que
cualquier usuario puede instalar en la máquina, y una librería que contiene las rutinas para
inicializar tareas en otras máquinas que ejecutan el proceso, comunicación entre tareas y
cambios de configuración.
Las bibliotecas y funciones del PVM (Dandamudi, 2003) ofrecen un completo repertorio de
primitivas, entre ellas, funciones para enviar y recibir mensajes, iniciar procesos, coordinar
tareas y modificar la máquina virtual.
II.1.3.5 Cluster Mosix
El Cluster Mosix básicamente actúa más a nivel del sistema operativo, que a nivel de la
aplicación, en otras palabras son parte del kernel. Finalmente las aplicaciones se montan sobre
esta capa y se ejecutan de manera distribuida sobre una gran cantidad de equipos sin necesidad
de hacer cambios en las aplicaciones, Figura 12, con MOSIX se obtiene una capa adicional
sobre la cual los procesos corren en diversas computadoras, cada proceso es atendido por una
computadora, se hace un balance de carga derivando cada proceso nuevo a la computadora con
menos carga.
El núcleo de MOSIX está formado por algoritmos que monitorean y dan repuesta a las
actividades requeridas del Cluster mediante migración automática de los procesos a los nodos
mejor capacitados.
27
La utilización de cada uno de estos dos tipos de clusters va de acuerdo al problema a resolver,
por ejemplo, si el problema implica muchos procesos pequeños, entonces sería más sencillo
resolverlo con un Cluster tipo MOSIX, pero si al contrario, se trata de un solo proceso que
necesita una gran cantidad de poder de cómputo, lo indicado sería la utilización de un Cluster
Beowulf, lo que implica el desarrollo de la aplicación respectiva utilizando librerías de MPI o
PVM.
Figura 12: Representación gráfica de un Cluster MOSIX
II.1.4 Grid Computing (Computación en Grid)
El Grid Computing surge con la necesidad de ampliar la potencialidad de las computadoras de
todo el mundo sin necesidad de aumentar la capacidad de procesamiento, integrar las
estaciones de trabajo local para formar una sólida y potente Grid mundial y procesar tareas
con el más alto poder computacional, la Figura 13 representa un Grid mundial. Los Grid se
fundamentan en teorías sólidas que actualmente siguen en investigación. Muchas de estas
teorías son producto de estudios de los problemas asociados a los clusters de computadoras, y
otras a la extensión del Internet a su más alta capacidad de aprovechamiento de los nodos
conectados a la red (Avila George, 2010; Cabrillo Bartolome, 2008).
28
La evolución de Grid Computing se refleja en el avance de la estandarización de esta
tecnología (el estándar de Globus Project es el estándar de facto) donde se encuentra definida
la arquitectura del Grid, los niveles de acceso, los requisitos, los servicios, entre otros.
Figura 13: Representación gráfica de un Grid (Tomada de www.gridcafe.org)
El Grid Computing al igual que el clustering, se enmarca dentro de las tecnologías de
computación distribuida, englobando conceptos de sistemas distribuidos, programación
multiprocesador, redes de computadoras, seguridad, base de datos, entre otros.
Grid computing es una tecnología que permite de compartir la potencia computacional,
aprovechando los ciclos de procesamiento no utilizados de cada nodo que pertenecen al Grid.
Con esto se busca enfrentar problemas que antes sólo eran enfrentados por grandes
supercomputadoras de entidades gubernamentales, universidades o grandes empresas
multinacionales; y aun más, la idea es tener una variedad de nodos en todo el mundo donde se
podrían resolver tareas que demande un gran poder de cómputo y/o almacenamiento (Sánchez
Enriquez, 2007).
29
II.1.4.1 Características de Grid Computing
El Grid computing cuenta con las siguientes características:

Balanceo de Sistemas: No hay necesidad de calcular la capacidad de los sistemas en
función de los picos de trabajo, debido a esto, la capacidad puede reasignarse desde la
granja de recursos donde se necesite.

Alta Disponibilidad: Si un nodo falla, los servicios son reasignados entre los demás
nodos restantes.

Reducción de Costos: Los recursos se gestionan por granjas de recursos, y no por
grandes servidores, esto hace que se usen componentes de bajo costo.
II.1.4.2 Arquitectura
La arquitectura del Grid es abierta y se basa en un estándar que facilita la extensibilidad,
interoperabilidad y portabilidad. El Grid es una arquitectura de protocolos, debido a que se
definen los mecanismos que permiten a los usuarios y recursos negociar, establecer, gestionar
y explotar los recursos compartidos, dando posibilidad de utilizar los recursos de
procesamiento propios sin tener que adquirir capacidad extra de procesamiento.
La arquitectura del Grid presenta 5 niveles, el de infraestructura, conectividad, recurso,
recursos, y aplicaciones (Cabrillo Bartolome, 2008; Sánchez Enriquez, 2007).
II.1.4.3 Nivel Infraestructura
Aquí se localizan los recursos computaciones como son: computadoras, clusters,
supercomputadoras, almacenamiento, red, entre otras.
II.1.4.4 Nivel Conectividad
30
Este nivel incluye los protocolos de comunicación: TCP/IP, SSL, etc. Así como los nuevos
protocolos en fase de desarrollo para mejorar la velocidad y seguridad en la red.
II.1.4.5 Nivel Recurso
Se toma el recurso general y que permite tener la información y control sobre el mismo,
tomando en cuenta características técnicas, la carga actual y los protocolos para controlar el
recurso, el acceso, arranque del proceso la gestión.
II.1.4.6 Nivel Recursos
Se engloban en este nivel todos los servicios que van a permitir gestionar un conjunto de
recursos: servicios de directorios, manejadores distribuidos, monitorización, el diagnóstico de
la ejecución de las tareas y acceso a datos distribuidos.
II.1.4.7 Nivel Aplicaciones
Este nivel se concentra en la definición de los protocolos que permiten a las aplicaciones
acceder al Grid a través de los distintos niveles e infraestructura.
II.1.4.8 Desventajas
- El Grid aún no ha alcanzado su máximo desarrollo, debido a la deficiencia en seguridad y
escalabilidad que siguen mostrando los proyectos de Grid Computing.
- No toda aplicación es conveniente, algunos tipos de aplicación no pueden ser puestos en
forma paralela o distribuida, el problema es cómo decidir cual si y cual no.
- La configuración de un Grid puede que afecte la calidad, la fiabilidad, y seguridad de una
infraestructura de organización de un Grid.
31
32
Capítulo III.- Cómputo paralelo en MatLab.
MatLab (MATrix LABoratory) es un software matemático que ofrece un lenguaje de
computación técnico de alto nivel denominado M, y un entorno de desarrollo (IDE) con
ambiente interactivo para desarrollo de algoritmos, análisis de datos y computación numérica.
Con este software se pueden resolver problemas de computación de forma más rápida que la
programación tradicional en lenguajes tradicionales como C, C++ o Fortran (MathWorks,
2011c).
MatLab se puede utilizar en gran variedad de áreas, incluyendo comunicaciones, control,
análisis y modelos financieros, algoritmos genéticos, señales, procesamiento de imágenes,
cómputo en paralelo, entre otras. Debido a que contiene una gran colección de funciones con
propósitos específicos, organizadas y separadas en cajas de herramientas o ToolBoxes. De
acuerdo al área de aplicación, permite el desarrollo de programas con más rapidez, además de
contener una serie de características para documentación, el código se puede integrar con otros
lenguajes como C y Fortran.
MatLab cuenta con las siguientes características (MathWorks, 2011c):

Lenguaje de computación de alto nivel.

Ambiente de desarrollo para manejo de código, archivos y datos.

Herramientas para la exploración interactiva , diseño y depuración

Funciones matemáticas para algebra lineal, estadística, análisis de Fourier, filtros,
optimización e integración numérica.
Las opciones para la programación en paralelo con sesiones interactivas ofrecidas por MatLab
se pueden ejecutar de dos maneras:
Pmode: dispone de una interfaz grafica de usuario (GUI) y solo es para sesiones interactivas.
33
Matlabpool: Permite sesiones interactivas y trabajo de proceso por lotes (Batch)
Los paradigmas paralelos utilizados para la programación en paralelo con MatLab se
clasifican en (MathWorks, 2011a):
Spmd (programa simple, múltiple datos): Es el equivalente a pmode, pero sin la ventana
individual para cada sesión de trabajo, cada tarea asignada a cada procesador es numerada con
un índice.
Drange: Debe ser usado con pmode ó matlabpool + spmd. La distribución de tareas es
controlada por el indice del bucle. Las variables o vectores predefinidas en el cliente son
accesibles como locales en las sesiones de trabajo.
parfor: Es similar a drange en cuanto a que las tareas son distribuidas según el índice del bucle.
Existen algunas diferencias, parfor no trabaja en el entorno de spmd, parfor permite
operaciones de reducción, como las sumas que requieren comunicación entre las sesiones de
trabajo.
34
Por tal motivo parfor se considera una operación de datos paralelos, mientras que drange es
una operación de tareas paralelas, parfor permite más opciones de paralelización, por tal
motivo es el utilizado en este trabajo.
III.1 Ciclos
Todo lenguaje de computación requiere en un momento ejecutar una serie de instrucciones
que son repetitivas, los ciclos permiten al programador especificar qué segmento de código es
el que debe de repetirse secuencialmente n cantidad de veces (iteraciones), esto ayuda a
reducir la cantidad de líneas escritas y hacer más entendible el código.
MatLab cuenta con instrucciones que permiten usar ciclos, estas son: while y for. Para el
desarrollo del trabajo presentado en este documento, es importante centrarse en el ciclo “for”,
debido a que tiene una variante en Matlab, que es el parfor y que permite ejecutar el segmento
de código que se repetirá de forma concurrente, es decir, en más de un procesador o núcleo, si
es que se cuenta con más de uno (García de Jalón, Rodríguez, y Vidal, 2005).
El los ejemplos de la Tabla III, el for y parfor realizan el mismo cálculo y obtienen el mismo
resultado, la diferencia radica en que el segundo utiliza todos los procesadores disponibles de
forma concurrente, donde resultado de cada índice es arbitrario y no se garantiza una
secuencia, es decir, el valor A(500) puede ser calculado antes o después de A(120).
Tabla III: Instrucciones for y parfor
Ciclo Secuencial
for i=1:1024
A(i) = sin(i*2*pi/1024);
Ciclo Paralelo
parfor i=1:1024
A(i) = sin(i*2*pi/1024);
end
end
plot(A)
plot(A)
35
Los valores del arreglo A estarán disponibles después de que todos los datos sean regresados y
el ciclo termine (véase Figura 14). La única restricción que se tiene para usar los ciclos en
paralelo es no tener iteraciones con variables dependientes de otras iteraciones (MathWorks,
2011c). La tabla IV muestra el código de un ciclo for que contiene código secuencial donde el
valor de la variable A no depende de la variable i. Aunque el valor de los elementos de A sea
igual, el valor de d no es el mismo.
Tabla IV: a) ciclo secuencial; b) Ciclo paralelo con variables dependientes
(a) Código Secuencial
clear A
d = 0; i = 0;
for i = 1:4
d = i*2;
A(i) = d;
end
A
d
i
(b) Código paralelo
clear A
d = 0; i = 0;
parfor i = 1:4
d = i*2;
A(i) = d;
end
A
d
i
En el ejemplo de la tabla IV se está usando una variable A, donde los valores dependen de la
variable i, Aunque el valor de los elementos de A son iguales, el valor de d no es el mismo. En
el código secuencial, las iteraciones se ejecutan una tras otras, de modo que después d tiene el
valor que tenía en la última iteración del ciclo. En el código paralelo donde está el bucle
parfor, las iteraciones se ejecutan en paralelo, no en secuencia, de modo que sería imposible
asignar un valor a d después de finalizar este ciclo. Esto también se aplica a la variable i. Por
lo tanto, el comportamiento del bucle parfor se define de modo que no afecte a los valores de
d e i fuera del ciclo y sus valores seguirán siendo los mismos antes y después del ciclo. Así, un
código donde resida un parfor requiere que cada iteración de este ciclo sea independiente de
las otras iteraciones y que todo el código que sigue al ciclo parfor no dependa de la secuencia
de iteración del ciclo.
La caja de herramientas de Computación Paralela que se ofrece en MATLAB, mejora el
rendimiento de ejecución para cada ciclo, ya que permite la programación para que se ejecuten
36
iteraciones de ciclos de forma simultánea. Por ejemplo, un ciclo de 100 iteraciones podría
ejecutarse en un Cluster de 20 equipos con MATLAB, por lo que cada uno ejecutaría sólo 5
iteraciones del ciclo. No se reduciría en 20 veces la velocidad, debido a la sobrecarga de las
comunicaciones y el tráfico de red pero se obtendría un incremento en la velocidad de forma
significativa. Cuando se ejecutan los programas que contienen ciclos parfor en la máquina
local, se podría tener una mejora significativa en el desempeño, siempre y cuando el
procesador del equipo incluya más de un núcleo de procesamiento (Kepner, 2009).
Figura 14: Ejecución de código en forma paralela por el parfor
III.2 Principios para cambiar un código simple a paralelo.
Se puede modificar un simple ciclo “For”, de tal manera que se ejecute en paralelo. Con el
siguiente ejemplo que no contiene muchas instrucciones puede verse que no se requiere
mucho tiempo para su ejecución, sin embargo, se pueden aplicar los mismos principios para
ciclos con más instrucciones.
Ejemplo: Se considera el siguiente ciclo para generar los puntos de una onda Senoidal para
después graficarla (MathWorks, 2011a):
37
for i=1:1024
A(i) = sin(i*2*pi/1024);
end
plot(A)
Proceso a seguir:
Paso 1.- Para interactuar con el código que contiene un ciclo paralelo, primero debe abrirse el
administrador de trabajos paralelos conocido como MatLab pool, de esta forma se tiene acceso
a las sesiones de trabajo también conocidas como Workers o laboratorios, para la ejecución de
las iteraciones del ciclo. El MatLab pool prepara el entorno para utilizar todos los núcleos o
procesadores disponibles y se asignan a una sesión de trabajo.
matlabpool open
Paso 2.- Se reemplaza la sentencia for por un parfor, con esto se indica al administrador de
trabajos que el código entre la sentencia parfor-end deberá de ejecutarla en las diferentes
sesiones de trabajo disponibles habilitadas en el paso 1.
parfor i=1:1024
A(i) = sin(i*2*pi/1024);
end
plot(A)
La diferencia en este ciclo es la sentencia parfor en lugar del for, sin embargo, los resultados
obtenidos no difieren en ambos ciclos.
3.- Cuando ha terminado de ejecutarse el código, hay que cerrar el administrador de
laboratorios para liberar los recursos asignados a cada sesión de trabajo.
matlabpool close
38
En este ejemplo se trabajaron con todos los procesadores disponibles, sin embargo, puede
indicársele al MatLab la cantidad de sesiones de trabajo que se necesitan para su ejecución, ya
sean remotos o locales. Los segmentos de código secuencial “for-end” y “parfor-end” se
ilustran con la finalidad de resaltar que los resultados son los mismos utilizando el cómputo
paralelo, la diferencia radica que las sentencias que se encuentran entre el parfor-end se
ejecutan en varios procesadores y en diferente secuencia, viéndose reflejado la mejora en el
tiempo de cálculo con ciclos con más iteraciones.
39
Capítulo IV.- Procesamiento de imágenes
Los métodos y técnicas modernas de procesamiento de imágenes permiten la extracción de
información en su representación digital de las propiedades, fenómenos naturales y artificiales.
Por otra parte las facilidades de nuestra época que nos permiten adquirir, almacenar, transmitir
y compartir imágenes en formatos digitales, hacen que su uso sea cada vez mayor. Es por lo
anterior, que es importante abrir una brecha en el área de generación del conocimiento en los
conceptos y aplicaciones fundamentales del procesamiento digital de imágenes.
IV.1 ¿Qué es una imagen?
En Gonzalez y Woods (2002) se define una imagen como una función de dos dimensiones I(x,
y), donde (x, y) son espaciales y definen las coordenadas de un plano. La amplitud de I, para
cualquier par (x, y), es llamada intensidad o nivel de gris de la imagen en ese punto. Cuando (x,
y) y la intensidad tienden al infinito se toman valores discretos, y a esto se llama imagen o
imagen digital. A cada elemento identificado por el grupo (x, y) se le da el nombre de pixel y
corresponde a la unidad mínima que integra a la imagen. A cada pixel se le asocia un número
que representan el valor del brillo promedio, un número pequeño representa luminosidad baja
y un número elevado, una luminosidad alta (Gonzalez y Woods, 2002).
En la actualidad se ha logrado integrar más detalles en las imágenes, de tal forma que una
imagen puede contener más de un espectro. La Figura 15 muestra los 3 espectros que integran
una imagen a color en RGB. Para cada pixel se registran los niveles correspondientes a la
intensidad lumínica de cada color: rojo, verde y azul (que son los que definen el espectro RGB
por sus siglas en inglés).
40
Origen
(0,0)
Pixel(x, y)
68
18
35
70
74
71
76
65
77
11
9
57
15
5
86
13
94
77
71
41
47
48
76
32
69
(a)
Espectro
s
(b)
Figura 15: (a) Estructura de una imagen digital; (b) Imagen digital con tres espectros
IV.2 Procesamiento de imágenes
El procesamiento de imágenes corresponde a todas las operaciones que se pueden realizar
sobre una imagen digital, estos procesos nos permiten adquirir información específica sobre el
total o parte de la imagen, rotarla, crecerla o reducirla, cambiar contraste, modificar colores,
detectar bordes, detectar objetos, entre otras.
En esta tesis no se abordan todas las operaciones debido a que son muy extensas, sólo se
incluyen aquellas que nos permiten reconocer un objeto dentro de una imagen digital de
manera confiable, y que reciben el nombre de filtros gráficos.
IV.3 Ruido.
El ruido es considerado como señales parásitas o de interferencia, que deforman a la señal.
Una de las características de una imagen con ruido, es que un pixel con que ha sido afectado
por ruido tiene una intensidad muy diferente a la de los pixeles adyacentes (véase Figura 16 ).
41
Hay varios factores que pueden generar ruido en una imagen:

El medio que la rodea cuando se le adquiere

La calidad del sensor

La calidad de la muestra
Figura 16:(a) Ruido; (b) Imagen adquirida; (c) Imagen con ruido
IV.4 Filtros gráficos de reconocimiento basados en correlación
Existen varios tipos de filtros de correlación3 que permiten reconocer la posición de un objeto
en una imagen dado un objeto de referencia. Las operaciones que se requieren sobre las
imágenes son llevadas al dominio de la frecuencia debido a que el resultado de aplicar el filtro
es más rápido, y la función matemática que permite hacer este proceso es la transformada de
Fourier (Ramos Michel, 2008).
Para determinar cuantitativamente las capacidades de detección de los filtros de correlación se
utilizan diversos criterios como son: razón señal-ruido, capacidad de discriminación (DC),
razón pico-energía de salida, entre otros (B. V. K. Vijaya, et al., 2005). De estos criterios, los
que se utilizaron en el trabajo que aquí se presenta son la capacidad de discriminación y el
error de localización, mismos que a continuación se describen brevemente.
3
El término correlación se utiliza generalmente para indicar la correspondencia o la relación recíproca que se da entre dos o
más cosas, ideas, personas, entre otras.
42
IV.5 Capacidad de Discriminación (DC)
La DC (Yaroslavsky, 1993) es formalmente definida como la habilidad de un filtro para
distinguir un objetivo de otros objetos diferentes. Si un objetivo está incrustado en un fondo
que contiene objetos falsos, entonces la capacidad de discriminación puede expresarse como
sigue:
|
|
|
|
(1)
Donde CB es el máximo en el plano de correlación sobre el área del fondo a ser rechazada y,
CT es el máximo en el plano de correlación sobre el área de la posición del objetivo. El área de
posición del objetivo se determina en la vecindad cercana a la localización real del objetivo, en
tanto que el área del fondo es complementaria al área del objetivo. En las simulaciones por
computadora que se realizaron en este trabajo de investigación, el área de la posición del
objetivo se selecciona como el área del objetivo. Valores negativos de DC indican que el filtro
falla en reconocer al objetivo.
IV.6 Error de Localización.
La localización exacta del objetivo puede ser caracterizada por medio del error de localización
(LE) el cual se define como:
√
Donde
̃
̃
̃
̃
(2)
son las coordenadas de la posición exacta del objetivo y las
coordenadas del pico de correlación que se toman como la estimación de la posición del
objetivo, respectivamente.
43
IV.6.1 Filtro Espacial de Correspondencia (MSF)
El filtro espacial de correspondencia MSF4 (VanderLugt, 1964) se diseña considerando que el
ruido de entrada se traslapa con el objetivo. Las limitaciones son: un pico de correlación
amplio y sensibilidad a distorsiones, presenta un funcionamiento inadecuado para las
imágenes que contienen objetivo espacialmente separado del fondo (Javidi y Horner, 1994).
En la ecuación (3) se tiene la función de transferencia H(u) del filtro lineal invariante, donde
N(u) representa la densidad espectral definida en el dominio de la frecuencia espacial y T*(u)
representa el conjugado de la transformada de Fourier del objetivo.
(3)
IV.6.2 Filtro Inverso (IF)
Este filtro se obtiene maximizando el criterio definido por la razón entre pico y energía de
correlación, de ahí que produzca picos muy definidos en su salida. Sin embargo, es poco
atractivo debido a su sensibilidad al ruido de entrada (Javidi y Horner, 1994).
En la Ecuación (4) se tiene la función de transferencia H(u) que corresponde al filtro inverso
(IF5).
es el conjugado complejo de la transformada de Fourier de la escena. Debido a
que la mayoría de las imágenes tienen más energía en las frecuencias bajas que en las altas,
este filtro suprime las bajas frecuencias más que las altas (B. V. K. Vijaya, et al., 2005).
|
4
MSF - Matched Spatial Filter
IF - Inverse Filter
5
|
(4)
44
IV.6.3 Filtro de Sólo Fase (POF)
El filtro de sólo fase (POF6) maximiza la eficiencia de luz, por lo que es capaz de reconocer
objetos en escenas con diferentes grados de luminosidad (Horner y Gianino, 1984).
|
|
(5)
En la Ecuación (5) H(u) es la función de transferencia del Filtro de solo fase; S(u) es la
transformada de Fourier de la escena, S*(u) es el conjugado de la escena.
IV.6.4 Filtro óptimo (OF)
El Filtro óptimo (OF7), minimiza la posibilidad de errores anómalos en la localización del
objeto. Una característica importante es su adaptabilidad a la escena debido a que considera la
energía de objetos no deseados. La desventaja de este filtro es la baja eficiencia de luz en la
implementación óptica (Yaroslavsky, 1993).
H(u) en la ecuación (6) es la función de transferencia del filtro óptimo, T(u) corresponde a la
transformada de Fourier del objetivo y T*(u) a sus respectivo conjugado. S(u) representa la
transformada de Fourier de la escena.
|
6
POF - Phase only filter
OF - Optimum Filter
7
|
|
|
(6)
45
IV.6.5 Implementación de los filtros de correlación
Hasta el momento se han presentado las fórmulas y características principales de los filtros,
ahora falta aclarar la forma en que se aplican los filtros en una escena y así lograr la detección
y localización del objeto. Para esto se define un plano de correlación c(x) definido en (Ramos
Michel, 2008) como:
{
}
(7)
Donde S(u) es la transformada de Fourier de la escena y H(u) es la función de transferencia del
filtro a aplicar. La multiplicación entre S y H se realiza de elemento a elemento, también
conocido como producto punto. Una vez obtenido c(x), se busca el valor más alto obtenido en
el plano de correlación, pues es donde se supone que se ha determino la ubicación del objeto
en la escena. En la Figura 17(a) se tiene la imagen objetivo a localizar. La Figura 17(b) es la
escena
que contiene la imagen objetivo que será localizada. Los planos de correlación
obtenidos al aplicar el filtro generalizado Óptimo en tres dimensiones y dos dimensiones, ver
figuras 18(a) y 18(b) respectivamente. En este caso, la localización del objetivo se realizó de
manera exacta.
Figura 17: (a) objeto a localizar; (b) escena que contiene el objeto
46
Figura 18: Plano de correlación obtenido entre el objetivo y la escena de la Figura 17(a): (a) en tres
dimensiones; (b) en dos dimensiones
47
Capítulo V.- Desarrollo de la paralelización
La programación en paralelo permite hacer uso de todas las unidades de procesamiento
disponibles en la ejecución de una tarea, esto puede representar un mayor desempeño en el
proceso, con mejoras sobre todo en tiempo de procesamiento y obtención de resultados. Un
algoritmo que pueda explotar todo el poder computacional de los procesadores puede ser una
herramienta muy útil, sin embargo, un algoritmo que resulte óptimo para una aplicación,
puede no serlo para otra, esto es debido a que el programador de los algoritmos de ejecución
paralela, debe de considerar algunos factores importantes al momento de su programación.
La tarea de conversión de un algoritmo secuencial a un algoritmo de procesamiento en
paralelo no es fácil de escribir, debido a una larga lista de factores que se deben considerar
más allá de la simple corrección funcional básica del programa. Los factores a tener en
consideración son:

Rendimiento: Latencia y beneficio,

Eficiencia: Procesamiento, ancho de Banda y memoria,

Costo de Software: Tamaño del código y la portabilidad,

Costo de Hardware: El tamaño y poder del hardware.
V.1 Características de aplicaciones paralelas
Los algoritmos paralelos pueden tener diferentes características, y algunas impactan
directamente su diseño. Algunas características a considerar en el momento de realizar la
programación de un algoritmo para ejecución en paralelo son las siguientes (Kepner, 2009):

Estructura de datos: Los arreglos en cada etapa del programa consumen una cantidad
considerable de memoria, y es en donde muchos de los cálculos se realizan.
48

Complejidad Computacional: El total de operaciones realizadas y cómo dependen de
los parámetros de los algoritmos.

Operaciones por cada dato: El número de operaciones realizadas en cada elemento de
datos.

Grado de paralelismo: Es el número de procesadores a usar en los algoritmos y cómo
están relacionados con las estructuras de datos.

Complejidad de comunicación: Es el total de número de datos que fluyen al momento
de ejecutar el algoritmo paralelo.

Proporción entre los cálculos y la Comunicación: Es la cantidad de cálculos realizados
por el flujo de los elementos de datos.
V.2 Aceleración (SpeedUp)
La medición de rendimiento en ambientes paralelos da a conocer cuál es el beneficio obtenido
cuando se usa paralelismo y cuál es la aceleración que resulta por el uso de dicho paralelismo.
El SpeedUp (véase Ec. 8) para p procesadores Sp, es el cociente entre el tiempo de ejecución de
un programa secuencial Ts, y el tiempo de ejecución de la versión paralela del mismo
programa ejecutado en p procesadores Tp, quedando su fórmula como se muestra en la
ecuación (8) (Trujillo Rasúa, 2009).
(8)
Por ejemplo si Sp, es igual a 2, esto indica que al ejecutar el programa en varios procesadores
se ha reducido el tiempo a la mitad. En el caso ideal, el tiempo de ejecución de un programa
en paralelo con p procesadores será p veces inferior a la de su ejecución con un solo
procesador, teniendo todos los procesadores igual potencia de cálculo. Por tal motivo la mayor
49
velocidad (SpeedUp) que puede alcanzar Sp es p, pero esto generalmente no sucederá debido a
que existe tiempos extras necesarios para la sincronización del trabajo en todos los
procesadores (Figueria, 1996; Huerta Pellitero, 2009; Trujillo Rasúa, 2009).
V.3 Eficiencia.
La eficiencia muestra el grado de aprovechamiento de los procesadores que se utilizan para la
resolución del problema, comparado con el esfuerzo desperdiciado en comunicación y
sincronización entre ellos. El valor máximo que puede resultar es 1, que significa el 100% de
aprovechamiento. La eficiencia es el resultado del cociente entre el SpeedUp y el número de
procesadores. véase ecuación (9) (Trujillo Rasúa, 2009).
(9)
Los algoritmos con un Speedup lineal (Sp = p) y los algoritmos que corren en un solo
procesador tienen una eficiencia de 1, mientras que los demás algoritmos tiene eficiencia que
se aproxima a cero conforme se incrementa el número de procesadores.
Una vez definidas las características y la forma de evaluar el rendimiento de los algoritmos a
emplear, se procedió a analizar el algoritmo correspondiente al reconocimiento de objetos en
las imágenes a partir de los filtros de correlación que inicialmente se programaron bajo el
esquema secuencial y que se modificaron para que se ejecutaran en el ambiente paralelo de
MatLab.
V.4 Herramientas de Hardware
En este trabajo se utilizó un servidor para llevar a cabo el procesamiento en paralelo, y dos
equipos personales de desarrollo con características generales para la evaluación y
50
comparación de resultados. A continuación se desglosan las características técnicas de cada
uno:
V.4.1 Servidor DELL
El servidor DELL cuenta con: dos procesadores Xeon de seis núcleos corriendo a una
velocidad de reloj de 2.3 GHz, un bus frontal de 1066 MHz, memoria de 24 GB ECC y un
disco duro de 500 GB. El sistema operativo que ejecuta es Windows 7 a 32 bits.
V.4.2 Equipo Personal
Se utilizaron dos equipos personales con las siguientes características:

Equipo Personal 1, Computadora Intel Core 2 Duo (6420) con dos núcleos corriendo a
2.13 GHz, con bus frontal de 1066 MHZ, memoria DDR 3 de 2 GB y un disco duro de
500GB. El sistema operativo que ejecuta es Windows 7 a 32 bits.

Equipo Personal 2, Portátil MacBook Pro, con procesador Intel Core 2 Duo a 2.2 GHz,
con una velocidad de bus de 800 MHz, memoria DDR2 de 4 GB y Disco Duro de 320
GB. El sistema operativo es OSX 10.7 a 64 Bits,
V.5 Herramientas de Software.
Las herramientas de software se componen del lenguaje de programación, las librerías
secuenciales y paralelas. En el desarrollo del ambiente paralelo propuesto en este documento,
se empleó el lenguaje M y las librerías de computación paralela (Parallel Computing ToolBox)
que están integradas en el IDE de MatLab.
51
V.6 Algoritmo Secuencial.
En la Figura 19 se observan los estados del algoritmo secuencial durante el proceso de
reconocimiento del objeto
T
I
+
+
Tc
Ic
I
Ic
+
LE
+
R
Figura 19: Diagrama de estados de la aplicación de los filtros de correlación
El proceso se describe a continuación:
1. El algoritmo requiere una imagen de entrada identificada como Escena (I). Se carga en
una matriz de 256 x 256 x 3 elementos, cada una de las matrices de 256 x 256
corresponde a un espectro RGB, del cual sólo tomaremos el primero para realizar las
operaciones, y que representa una imagen en escala de grises.
2. De la misma forma, carga la imagen que contiene el objeto Target (T) a localizar en
una matriz 256 x 256 x 3 (RGB), tomando la primera matriz para los cálculos.
3. El Target es combinado con la escena en coordenadas conocidas (Tc) para proceder a
realizar el reconocimiento. Es importante conocer las coordenadas del Target en la
escena, pues a partir de ellas y de la ubicación obtenida por el filtro, se determina el
error de localización.
4. A la escena (I) combinada con el Target (T) se agrega ruido (R), con la finalidad de
evaluar la inmunidad del filtro a las distorsiones, degradaciones o ruido aditivo.
5. Las matrices resultantes para cada filtro (If), definen el plano de correlación, sobre el
cual, se realiza un proceso de búsqueda (L) del valor más alto dentro de la región del
objetivo y fuera de éste, con el propósito de localizar al objeto y obtener el valor de la
capacidad de discriminación del filtro en cuestión.
52
6. Para cada filtro de correlación, se hace el cálculo del error de localización (LE) y de la
capacidad de discriminación, esto es con el objeto de determinar qué filtros tienen un
mejor desempeño para llevar a cabo el reconocimiento del objeto en la imagen.
Para los experimentos realizados, se utilizaron 30 imágenes de escena donde la ubicación del
objetivo variaba. Los tiempos requeridos para llevar a cabo las simulaciones de las 30
imágenes de escena diferentes en las que debe reconocerse el objetivo por parte de cada uno
de los cuatro filtros de correlación (MSF, IF, POF, OF) se grafican en la Figura 20. En dicha
figura se observa el crecimiento constante y lineal del tiempo necesario para el cálculo de los
filtros para cada una de las imágenes mediante el algoritmo original que se ejecuta de manera
secuencial.
Figura 20: Tiempos requeridos por el programa secuencial para procesar 30 imágenes
53
En la secciones posteriores se presenta cómo se pasó el programa secuencial de simulación
para el reconocimiento de objetos a un programa en ambiente en paralelo y la configuración
del entorno de ejecución.
V.7 Configuración del Entorno
La herramienta de paralelización de MatLab permite distribuir el trabajo entre diferentes
sesiones Workers o laboratorios mediante MatLab Distributed Computing Server (MDCS)
optimizando el procesamiento de la información. Para crear un Cluster con MatLab, es
importante seguir una serie de pasos para habilitar estas características y tener instalado:
MatLab Parallel Computing Toolbox, MatLab Distributed Computing Server, Administrador
de trabajos ( Scheduler).
V.7.1 MatLab Parallel Computing Toolbox
Parallel Computing Toolbox, proporciona las herramientas y el lenguaje necesario para la
programación de aplicaciones paralelas, así como los mecanismos de envío de trabajos para su
ejecución.
Parallel Computing Toolbox se instaló en el cliente del Cluster, debido a que es necesario
para poder iniciar el trabajo.
V.7.2 MatLab Distributed Computing Server,
El Distributed Computing Server (MDCS) se instala en todos las máquinas que forman parte
del Cluster, esta herramienta permite que los ejecutables generados por Parallel Computing
Toolbox se procesen en coordinación mediante un administrador de trabajos. Con MatLab
2008b se pueden crear hasta 4 Workers localmente (véase Figura 21).
54
Figura 21: Diagrama de bloques de Workers Locales
V.7.3 Administrador de trabajos (Scheduler)
El Administrador de trabajos (Scheduler) es el encargado de la iteración de los diferentes
componentes del Cluster. MatLab identifica a los administradores de trabajo en tres rubros
(MathWorks, 2011b):
Administrador Local: En conjunto de Parallel Computing Toolbox, la creación y prueba de los
trabajos en forma paralela sin hacer uso de recursos externos al equipo. El Administrador local no
puede interactuar con otros planificadores.
MathWorks Job Manager: Permite administrar los trabajos que serán procesados en el
Cluster, su función es la de localizar los trabajadores disponibles y distribuir el proceso entre
los diferentes nodos o máquinas. Los datos de este administrador no se eliminan ni las tareas
se detienen, de tal manera que se pueden obtener los resultados en una sesión posterior. Este
55
administrador provee mecanismos para compartir datos y acceder a los archivos necesarios
para evaluar las tareas en las diferentes máquinas mediante una ruta de acceso común entre
los nodos.
Administrador de Terceros: MatLab permite hacer uso de planificadores previamente
configurados en la red que interconecta las máquinas que forman el Cluster. Los
administradores compatibles son: LSF (Load Sharing Facility), Microsoft Windows HPC
Server, PBS Pro y TORQUE. MatLab puede integrar otros planificadores mediante un API
genérico.
La implementación del Cluster para nuestro propósito usa el administrador de trabajos de
MatLab (MathWorks Job Manager) (véase Figura 22)
Figura 22: Configuración del planificador de trabajos del Cluster
56
V.7.4 Implementación del Cluster.
Una vez instalado MatLab y sus librerías necesitamos registrar y ejecutar el MDCE (MatLab
Distributed Computing Engine). Para este paso y lo sucesivo se trabaja en una interfaz de
comandos
MS-DOS
desplazándonos
a
la
ruta
C:\Program
Files\MATLAB\R2008a\toolbox\distcomp\bin. Ver Figura 23.
Figura 23: Ruta de trabajo para inicializar el Cluster
Una vez ahí, se ejecuta el comando mdce install; y lo iniciamos con el comando mdce start
(véase Figura 24)
Figura 24: Instalación e inicialización del MDCE
Podemos revisar el estado de nuestros MDCE, Administradores de Trabajos y Workers con el
comando nodestatus (Figura 25).
57
Figura 25: Resultado de nodestatus
Teniendo inicializado el MatLab Distributed Computing Engine, procedemos a crear el
administrador de trabajos y Workers en nuestro equipo.
V.7.4.1 Creación del Administrador de Trabajos (Scheduler)
Como primer paso es necesario definir el Administrador de trabajos mediante las librerías de
MDCS. El directorio de instalación de las librerías en nuestra configuración de Windows 7
está localizado en la ruta:
C:\Program Files\MATLAB\R2008a\toolbox\distcomp\bin
La Figura 26, muestra la creación del administrador de trabajos de forma local usando el
archivo de procesamiento por lotes startjobmanager.bat.
startjobmanager.bat -name jmCluster –v
58
Donde el parámetro -name jmCluster, nombra al administrador de trabajos en su creación; –v
es el parámetro que nos permite visualizar el estatus de la tarea durante el proceso de creación.
Figura 26: Inicialización del Administrador de Trabajos jbCluster
V.7.4.2 Creación de las sesiones de trabajo.
De la misma forma se procede a crear los las sesiones de trabajo en el equipo local (véase
Figura 27). Asignamos un sesión de trabajo a cada núcleo de nuestro equipo, que en total
suman 24, y que para efecto de nuestro trabajo se configuran 10 núcleos, por tal motivo se
ejecuta el comando 10 veces asignando el nombre de cada sesión de trabajo.
startworker.bat -jobmanagerhost Martin-Pc -jobmanager jmCluster -name nodo1
startworker.bat -jobmanagerhost Martin-Pc -jobmanager jmCluster -name nodo2
.
.
.
startworker.bat -jobmanagerhost Martin-Pc -jobmanager jmCluster -name nodo10
59
Figura 27: Creación de un Worker y la asignación al administrador de trabajos jmCluster
El parámetro -jobmanagerhost Martin-Pc le dice al Worker dónde se localiza el
administrador de trabajos, dónde se subordina; -jobmanager jmCluster proporciona el
nombre del planificador que previamente se registró y -name nodo1 asigna el nombre al
Worker que se va a inicializar, se puede verificar que todos los worker se asignaron sin
problemas mediante el comando nodestatus –infolevel 2 (Figura 28).
Figura 28: Información retornada por el comando nodestatus
60
V.8 Configuración de MatLab
Una vez creado el planificador y haber ligado los Workers a este, es necesario configurar el
MatLab para que pueda hacer uso del nuevo planificador (véase Figura 29), en el campo
“Configuration Name” escribimos el nombre con el cual MatLab lo reconocerá en su entorno
de ejecución.
Una vez configurado, guardamos los cambios y hacemos uso del nuevo administrador de
trabajos desde la ventana de comandos de MatLab con el comando matlabpool open jmNuevo
(véase Figura 30 ).
Figura 29: Configuración interna del MatLab del nuevo planificador
Figura 30: Uso del nuevo Administrador de trabajos desde MatLab
V.9 Algoritmo Paralelo.
61
El algoritmo paralelo es el producto de identificar en el algoritmo original las sentencias que
se ejecutan estrictamente en forma secuencial y las sentencias que pueden ser ejecutadas en
forma paralela. Dado a que se opto por usar el parfor-end las sentencias factibles de
paralelizar son las correspondientes a los ciclos for del algoritmo secuencial. Por lo tanto se
procedió a ubicar los ciclos for dentro del algoritmo y optimizar el código eliminando ciclos e
instrucciones innecesarias, posteriormente se procedió a solucionar problemas ocasionados por
el uso de variables dependientes dentro del ciclo principal. Una de las acciones referentes a la
optimización de código, fue la extracción de instrucciones que solo se ejecutaba una vez
dentro del ciclo principal, lo cual nos permitió también evitar dependencia de variables.
El algoritmo secuencial original presenta segmentos de código que se incluyen dentro de
cuerpo principal del ciclo, y que se ejecutan en un espacio de nombres distinto definido por las
funciones creadas por el programador. Las variables que se generan dentro del cuerpo del
parfor-end pertenecen a un espacio de nombres, cuando se accede a variables con espacio de
nombres distinto MatLab no permite paralelizarlo provocando un error de ejecución al
momento de compilar. La solución de este caso fue la inclusión del código de las funciones
dentro del ciclo parfor-end que permite homologar el espacio de nombres de todas las
variables.
Los ciclos presentes en el algoritmo secuencial representan en primera instancia el posible
código paralelo. La sentencia parfor de MatLab resuelve muchos de los problemas para la
ejecución paralela, más sin embargo, es importante tomar en cuenta que no sólo con utilizar
esta sentencia nos lleva a la solución. Los problemas más frecuentes son los relacionados a las
variables dependientes, que condicionan su valor a ciclos anteriores, y que de alguna forma
complican la programación en paralelo. La Figura 31 es la representación gráfica de una
ejecución del ciclo paralelo parfor y como el administrador de trabajos (job Manager)
administra la paralelización del algoritmo en diferentes bifurcaciones de ejecución dentro del
entorno paralelo previamente configurado.
62
Archivo Principal
Filtrop.m
Ubicación del jobmanager
Creación del trabajo y tareas
Utilización del
MDCE
Filtrop.m
Colocación del trabajo en
cola de ejecución
Job Manager
jmCluster
Distribución de tareas
Ejecución
Filtrop.m
Recopilación
de resultados
Sesiones de trabajo
Ejecución
Filtrop.m
Ejecución
Filtrop.m
Sesiones de trabajo
Figura 31: Representación de una ejecución paralela
A pesar de las grandes ventajas que provee la programación paralela, existen algunas
desventajas que pueden dificultar el desarrollo de las aplicaciones, por ejemplo, no es posible
realizar el seguimiento de errores en el código (debug) cuando se utiliza el paralelismo, debido
a que las intrucciones y variables se dividen en diferentes sesiones de trabajo, dificultando la
localización y corrección de los errores. Otro ejemplo es el acceso a los archivos para escritura,
ya que los archivos son abiertos de forma exclusiva provocando un error cuando una sesion de
trabajo intenta escribir en un archivo que se encuentra actualmente en uso.
MatLab proporciona herramientas que permiten explotar el poder computacional y que
facilitan la programación en paralelo. La infraestructura computacional con la que se cuenta
determina la configuración del entorno paralelo, las sesiones de trabajo que se pueden activar
y cual estará asignada a cada nodo o procesador disponible. El administrador de trabajos que
se encarga de administrar las tareas es definido de acuerdo a esta infraestructura y a las
necesidades del algoritmo que hace uso de este entorno paralelo.
63
Capítulo VI.- Análisis experimental
En este capítulo se presentan los resultados obtenidos de la simulación de los filtros
mencionados para detección de objetos en un ambiente secuencial y en un ambiente paralelo.
VI.1 Características del Experimento
Para los experimentos llevados a cabo se utilizaron 30 imágenes de escena, donde la
localización del objetivo varía y en las cuales se aplicaron los fitlros de correlación MSF, IF,
POF, IOF. Dado que la finalidad es observar el comportamiento y resultado del algoritmo en
el ambiente paralelo, evaluando los parámetros de aceleración y eficiencia obtenidos en las
simulaciones que se realizan, se ejecuta el experimento con el algoritmo secuencial y con el
algoritmo paralelo. Al final se realiza el cotejo de los resultados de ambos algoritmos para
determinar la mejora obtenida. Cabe mencionar que el resultado de los filtros aplicados en
cuanto a los parámetros evaluados (error de localización y capacidad de discriminación)
concuerdan exactamente en los dos algoritmos.
En una primera etapa, se ejecutó treinta veces el programa secuencial y el paralelo con un
procesador, desde una a treinta imágenes, es decir en la primera ejecución se utilizó una
imagen y la última treinta imágenes. Se almacenaron los tiempos de cada ejecución en los dos
ambientes. Posteriormente se ejecutó solamente el algoritmo paralelo variando la cantidad de
procesadores y la cantidad de imágenes en cada uno (Ver Tabla V y Tabla VI).
VI.2 Análisis de Resultados
La Tabla V y la Tabla VI muestran los tiempos de ejecución del algoritmo original y los
tiempos obtenidos de la ejecución paralela y diferente cantidad de núcleos. Se puede observar
que a la tarea realizada por un núcleo en ambiente paralelo le tomó más tiempo en terminarla.
Lo anterior es debido a los mensajes de sincronización y notificación enviados para el control
en el ambiente paralelo necesarios para procesar la tarea.
64
Tabla V: Tiempos de procesamiento del algoritmo de filtros de correlación de uno a cinco núcleos
Imágenes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Secuencial
32.71321234
41.26103858
50.79098967
62.74135817
76.09171166
88.92843397
102.3725047
111.6989912
124.6993381
135.9086768
145.4892525
158.5378658
168.8290466
171.6294682
182.3922419
193.297324
204.8934986
216.213544
227.4003153
238.0326995
250.3050066
261.1185402
272.3265842
283.3647386
294.8000516
305.456958
316.4590738
327.3155402
338.601243
348.8548843
Tiempo de procesamiento en ambiente paralelo expresado en segundos
1 núcleo
2 núcleos
3 núcleos
4 núcleos
5 núcleos
31.80172769
29.02996745
34.65520839
30.17839431
28.74771057
46.82326264
28.76613177
29.12093999
29.48953938
29.10620261
64.84032398
42.30127132
34.46899027
29.55002454
29.43657974
66.75249039
42.46361241
50.6984569
29.76261416
29.88564169
81.54428039
53.53715674
59.72513603
40.4680742
29.96750735
95.94013785
57.18736144
60.93491936
41.23119535
41.73830723
107.4936988
67.5088165
58.43276764
40.89199117
41.38812332
123.282393
69.29145951
72.91762435
41.82930483
42.58553525
133.1960854
78.28798488
70.70999294
52.30612177
41.44530901
135.7804511
81.745227
75.73837051
52.53333667
42.10562749
145.6099677
92.67828047
88.24410658
52.83274172
53.94956413
166.2004077
94.2466781
93.97197967
53.15061853
54.55898787
164.6559937
109.5505502
88.2918845
64.53736178
55.02347774
177.6745233
112.6738065
90.56400911
63.86374074
54.63628448
188.8171164
112.728777
96.52073134
65.0710834
55.14109701
209.9252846
119.3770996
124.4857483
65.43976949
65.17669357
239.5339851
124.7236693
110.0971396
75.73055459
65.98981405
239.8519436
128.6627524
123.975815
76.63658936
66.8111495
269.9575029
135.8927514
129.7140562
76.34828839
65.13372509
262.7040884
142.0442205
139.8447533
76.37458632
66.26454915
253.2316401
145.6730227
151.4405288
87.36116326
79.39417676
267.3791222
150.5720328
131.809197
87.58176383
77.99829079
277.235743
162.2005247
135.0412175
88.24392394
79.43038039
289.2842785
164.1023019
135.0942501
89.28619526
80.16944714
299.0670659
178.4343791
131.0241423
100.0273623
80.18619815
310.8114872
173.9190021
144.5283558
100.554092
90.58834467
339.9623954
213.4498375
142.2636979
100.5255178
89.17867109
428.7688142
211.1228313
138.9151437
100.3331677
91.40903878
409.5913123
209.0587169
144.0431484
111.0866591
92.26269135
418.1939704
242.2943633
151.4943151
110.9570577
90.87797913
Tabla VI: Tiempos de procesamiento del algoritmo de filtros de correlación de seis a diez núcleos
Imágenes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Secuencial
32.71321234
41.26103858
50.79098967
62.74135817
76.09171166
88.92843397
102.3725047
111.6989912
124.6993381
135.9086768
145.4892525
158.5378658
168.8290466
171.6294682
182.3922419
193.297324
204.8934986
216.213544
227.4003153
238.0326995
250.3050066
261.1185402
272.3265842
283.3647386
294.8000516
305.456958
316.4590738
327.3155402
338.601243
348.8548843
Tiempo de procesamiento en ambiente paralelo expresado en segundos
6 núcleos
7 núcleos
8 núcleos
9 núcleos
10 núcleos
28.70959697
28.67148337
28.72748225
28.82639994
28.85767613
29.22131852
29.33643442
28.9824864
29.27438633
29.00751666
29.30753091
29.17848208
29.09454728
29.80922664
29.47613211
30.13214812
30.37865454
29.47627685
29.49331927
29.86653091
29.74404231
29.52057728
30.34105659
30.47290579
32.29917677
37.06740225
32.39649728
32.93843196
32.65098443
35.95739762
37.12088717
32.85365103
53.63305469
33.47547614
37.31786411
43.81449843
45.04346161
49.79402663
43.07135518
40.63984455
43.91331411
46.38131921
59.7178541
45.04131624
48.68758726
43.19791796
44.29020843
60.56404659
55.29337239
57.2754184
52.16998993
50.39041573
69.72017577
61.1370003
72.1490891
52.16042915
49.76187043
59.70793453
66.27101527
67.2080044
50.42021022
45.81694271
65.99720945
67.55663194
74.57719324
59.4566252
64.27696593
60.6926071
68.42343154
69.72777212
59.93141092
64.72172484
61.97138309
84.67735358
61.01239637
67.84514291
70.51359224
70.54373704
60.26623141
63.82293726
64.77828864
63.56676323
77.06643467
82.55536081
80.45564395
61.90954269
57.00793588
83.22938721
78.26312365
67.68331078
68.0301652
70.92660532
77.81197793
84.45926908
63.4309278
64.03057749
61.79660584
82.65545185
89.81025409
92.70079628
80.20662626
81.01907576
67.07056679
110.4444706
86.1699345
80.72339247
83.44849415
78.64007745
81.24797599
100.8255261
77.03232346
74.63426653
83.84051438
107.285599
118.7602478
80.92495693
81.68046672
68.18322551
107.6375787
104.1508599
83.71825022
87.25030229
84.7716133
118.1116528
108.169374
82.95435338
75.32036209
80.66905622
101.7961258
96.98117215
82.86254737
76.54642366
87.54749653
121.3206574
99.3959441
100.310553
109.2120672
90.18180618
96.6927326
109.932223
86.73739103
81.21209072
91.88894154
111.7424394
126.1473433
94.72365616
98.5693332
96.74874841
130.2090946
109.8078974
65
En la Figura 32 se muestra la comparativa de los tiempos del programa secuencial vs los
tiempos del programa paralelo listados en la Tabla V, tomando los valores de los primeros
cuatro procesadores y comparándolas con los tiempos del algoritmo secuencial, esto se hace
para efecto de mostrar de la tendencia sobre la reducción de tiempo. El total de la muestra
comprende 10 núcleos. El tiempo que tarda el programa secuencial en procesar la tarea, se
incrementa proporcionalmente respecto a la cantidad de imágenes. La Figura 32(a), muestra
claramente que es más eficiente el programa secuencial vs un procesador como se menciona
anteriormente. Conforme se incrementan los procesadores, se observa en las Figura 32(b),
Figura 32(c) y Figura 32(d) que los tiempos en procesar el total de las 30 imágenes se reducen
en un 35.8%, 41.68% y 59.80% respectivamente.
Figura 32: Comparativo de los tiempos de procesamiento secuencial vs Paralelo
Idealmente es de esperar que al incrementar la cantidad de procesadores asignados a una tarea,
ésta reduzca sus tiempos de manera proporcional, sin embargo, el asignar más procesadores,
66
incrementa la cantidad de mensajes de control, de tal forma que el tiempo que generan los
mensajes puede ser mayor al generado por la tarea misma.
Gráfico comparativo general de los tiempo de procesamiento
Secuencial
Tiempo en Segundos
1 procesador
2 procesadores
3 procesadores
4 procesadores
5 procesadores
6 procesadores
7 procesadores
8 procesadores
9 procesadores
Imágenes
10 procesadores
Figura 33: Comparativo general de los tiempos de procesamiento hasta 4 procesadores
Comparando los tiempos de los diez procesadores usados en un sola grafica general (véase
Figura 33), se pone de manifiesto que el incremento de procesadores no garantiza la reducción
de tiempo en el mismo porcentaje. La Figura 34 y Figura 35Figura 35 demuestra que la
asignación de 5, 6 y 7 procesadores proporciona el mejor ahorro de tiempo en la ejecución del
algoritmo paralelo para el reconocimiento de objetos.
Tiempo en Segundos
67
Tiempo Secuencial
Ahorro
Procesadores Asignados
Figura 34: Promedio en horro de tiempo con procesamiento paralelo
Porcentaje de ahorro en tiempo
1
2
3
4
5
6
7
8
9
10
Ahorro -8.23% 35.80% 41.68% 59.80% 63.40% 63.64% 63.87% 60.63% 58.45% 58.76%
Figura 35: Porcentaje promedio de ahorro en tiempo
68
La Figura 36 se grafica el Speedup “ideal” del algoritmo paralelo alcanzado con los diez
procesadores y que nos sirve de referencia. La serie “Real” es el Speedup obtenido en la
evaluación del algoritmo paralelo de los filtros correlacionados, claramente se logra observar
que la gráfica comienza a estabilizase en un aproximado de 2.5 de Speedup. Demostrando que
el algoritmo paralelo presenta una estabilidad de la aceleración (SpeedUp) a medida que se
anexan más procesadores a la tarea, no beneficiando en gran medida al ahorro de tiempo en
procesamiento.
SpeedUp máximo ideal
gráfico SpeedUp Ideal vs Real
Ideal
Real
Número de Procesadores
Figura 36: SpeedUp real vs ideal
En la sección V.3 se presenta la definición de eficiencia como la métrica para evaluar el uso de
los recursos de cómputo en la ejecución del algoritmo paralelo. Los valores graficados
corresponden a los diez procesadores configurados y se presentan en la Figura 37, donde se
muestra que la eficiencia del uso de los recursos computacionales decrece a medida que se
incluyen procesadores a la ejecución del algoritmo paralelo, la información que nos
proporciona la ecuación (9) de eficiencia en conjunto con el resultado de la aceleración de la
69
ecuación (8), deja ver claramente que a mayor cantidad de procesadores los beneficios se
reducen y los costos por uso de poder computacional se incrementan.
Título del gráfico
Eficiencia, 1, 0.929187256
Porcentaje de aprovechamiento
Eficiencia, 2, 0.78640977
Eficiencia, 4, 0.663371582
Eficiencia, 3, 0.595983152
Eficiencia, 5, 0.593621724
Eficiencia, 6, 0.49929002
Eficiencia, 7, 0.431910231
Eficiencia, 8, 0.346891591
Eficiencia, 9, 0.281677379
Eficiencia, 10, 0.256843937
Número de procesadores
Figura 37: Medición de la eficiencia del algoritmo paralelo hasta con 10 procesadores
70
Conclusiones
En este trabajo se muestra que la programación paralela no es una tarea sencilla, incluso
personas capacitadas pueden tener problemas. Esto debido a la dificultad de identificar el
código secuencial que puede programarse en paralelo, y a las variables dependientes que
pueden limitar la ejecución en múltiples procesadores. La gran diversidad de problemas
requiere algoritmos paralelos específicos para el problema y arquitectura donde se ejecuta. La
asignación total de los recursos que se disponen en donde se ejecuta el algoritmo paralelo, no
garantiza que el algoritmo se desempeñe de forma eficiente, en ocasiones repercute de forma
negativa en su desempeño, incluso, puede generar costos monetarios por usar unidades de
procesamiento que no necesita.
El algoritmo de filtros de correlación, permite detectar un objeto en particular dentro de una
imagen, sin embargo, es necesario que ofrezca confiabilidad en la detección y localización. Al
aplicar la programación en paralelo al algoritmo se lograron reducir los tiempos necesarios
para completar estas tareas hasta en un 63.87% asignado recursos de forma óptima, de esta
forma los tiempos de espera de resultados se reducen considerablemente. Se observó que el
asignar más de 7 procesadores al algoritmo paralelo decreció el ahorro en tiempo y con claras
tendencias a ser menos eficiente, además de usar más energía y unidades de procesamiento. El
cálculo de la eficiencia mediante la ecuación (9) confirma claramente que el uso de los
recursos disminuye conforme se incrementan los procesadores asignados.
Los resultados de las simulaciones por computadora que se realizaron y que se presentan en
este trabajo, muestran el desempeño alcanzado por los filtros ejecutados en un ambiente
paralelo con respecto a la programación secuencial tradicional. Sobre los resultados obtenidos,
es importante señalar que dada la cantidad de experimentos realizados en cada simulación, la
información que se obtiene es lo suficientemente confiable para hacer las conclusiones
presentes.
71
Cabe señalar que los resultados obtenidos con la programación secuencial fueron los mismos
a los obtenidos en ambiente paralelo, con la diferencia de ahorro en tiempo. Esto beneficia en
gran medida a quienes requieren llevar a cabo tareas de reconocimiento de objetos. De tal
manera la programación paralela muestra ser una solución viable sin la necesidad de mucha
inversión en infraestructura, pudiendo integrar equipos de económicos de bajo poder
computacional al ambiente paralelo y distribuir pequeños procesos para su solución en cada
equipo integrado, obteniendo ahorros en tiempo y un incremento en el poder de procesamiento
de manera significativa.
72
Bibliografía
Avila George, H. (2010). Verificación de Covering Arrays utilizando Supercomputación y
Computación Grid. Master, UNIVERSIDAD POLITÉCNICA DE VALENCIA.
B. V. K. Vijaya, K., Abhijit, M., y Richard, J. (2005). Correlation Pattern Recognition:
Cambridge University Press.
Bell, C. G. (1985). Multis: A new Class of multiprocessors computers. Science 228, 463.
Cabrillo Bartolome, I. (2008). Operación y desarrollo de Herramientas para la gestión de
datos en un entorno de GRID. Universidad de Cantabria.
Dandamudi, S. (2003). Hierarchical Scheduling in Parallel and Cluster System: Kluwer
Academic / Plenum Publishers.
Deitel, H. M. (1985). Introducción a los sistemas operativos: Addison Wesley Iberoamericana.
Figueria, C. (1996). Arquitecturas Paralelas. 63.
Fruehe, J. (2005, Mayo 2005). Planning Considerations for Multicore Processor Technology.
Dell Power Solutions, 120.
García de Jalón, J., Rodríguez, J. I., y Vidal, J. (2005). Aprenda Matlab 7.0 como si estuviera
en primero E. T. S. d. I. Industriales (Ed.) (pp. 136).
Gonzalez, R. C., y Woods, R. E. (2002). Digital Image Processing: Prentice Hall.
Greenberg, A. D., y Greenberg, s. (1995). Digital images a practical guide: McGraw-Hill.
Hennessy, J. L., y Patterson, D. A. (1993). Arquitectura de Computadores. Un enfoque
cuantitativo: McGraw-Hill/Interamericana de España, S.A.
Hernández Barragán, E., y Jorba Esteve, J. (2010). Análisis de rendimiento de aplicaciones en
sistema multicore
6to Congreso Colombiano de Computación, 6.
Horner, J. L., y Gianino, P. D. (1984). Phase-only matched filtering: Appl. Opt.
73
Bibliografía (continuación)
Huerta Pellitero, P. (2009). Sistemas de multiprocesamiento simétrico sobre FPGA. Dr.,
Universidad Rey Juan Carlos, Mayo de 2009.
Intel
Corporation
(2011).
Tecnología
Hyper-Threading,
2011,
from
http://www.intel.com/cd/corporate/techtrends/emea/spa/platform-technology/hyperthreading/310512.htm
JáJá, J. (1992). An introduction to Parallel Algorithms: Addison Wesley.
Javidi, B., y Horner, J. L. (1994). Real-time optical information processing: Academic Press.
Kepner, J. (2009). Parallel MATLAB for Multicore and Multinode Computers J. J. Dongarra
(Ed.) (pp. 252).
MathWorks. (2011a). Introduction to Parallel Solutions Retrieved 13 Nov 2011, 2011, from
http://www.mathworks.es/help/toolbox/distcomp/brjw1e5-1.html
MathWorks. (2011b). MATLAB Distributed Computing Server 5.0 Retrieved 13 Nov 2011,
2011, from http://www.mathworks.com/products/datasheets/pdf/matlab-distributedcomputing-server.pdf
MathWorks. (2011c). Product Overview
Retrieved 13 Nov 2011, 2011, from
http://www.mathworks.es/help/techdoc/learn_matlab/f0-14059.html
MPI-Forum. (2009). MPI: A Message-Passing Interface Standard Introduction to MPI (pp.
647).
Ortega Lopera, J. (2009). Entre la profecía de Moore y la ley de Amdahl.
Pérez, J. A. d. B. (2007). utilizacion y administracion avanzadas de sistemas GNU/Linux y
aplicaciones software libre para estudiantes universitarios clustering y Alta
disponibilidad en GNU/Linux
Plaza Nieto, E. J. (2003). [Cluster Heterogéneo De Computadoras].
Quinn, M. J. (2004). Parallel Programming in C with MPI and OpenMP. Boston: McGraw
Hill.
74
Ramos Michel, E. M. (2008). Reconocimiento confiable de objetos degradados. Doctor en
Ciencias, CICESE, Ensenada.
Sánchez Enriquez, H. Y. (2007). Clustering y Grid Computing. 16. Retrieved from
Tanenbaum, A. S. (2003). Sistemas Operativos Modernos: Prentice Hall.
Tanenbaum, A. S., y Goodman, J. R. (2000). Organización de Computadoras un enfoque
estructurado (R. C. Chávez, Trans.). Mexico: Prentice Hall.
Tian, T., y Shih, C.-P. (2009). Software Techniques for Shared-Cache Multi-Core Systems
Retrieved 9 Nov 2011, 2011, from http://software.intel.com/en-us/articles/softwaretechniques-for-shared-cache-multi-core-systems/
Top500.org.
(2011).
TOP500
http://www.top500.org/charts/list/38/procfam
Statistics,
2011,
from
Trujillo Rasúa, R. A. (2009). Algoritmos paralelos para la solución de problemas de
optimización discretos aplicados a la decodificación de señales. Dr. Doctoral,
Universidad Politécnica de Valencia.
Universidad de Talca, F. d. I. (2007). Computación paralela y distribuida PVM: Parallel
Virtual Machine (pp. 4).
VanderLugt, A. B. (1964). Signal detection by complex filtering. IEEE Trans. Inf. Theory.
Yaroslavsky, L. P. (1993). The theory of optimal methods for localization of objects in
pictures. E. Wolf (ed.). Progress in Optics XXXII . Elsevier Science, Amsterdam, 145200.
Descargar