CHAPTER 5. METHODOLOGY AND METHODS
5.4 Data Collection Approaches
En bases de datos tradicionales, el procesamiento de una consulta devuelve
resultados que son exactamente iguales a la consulta dada. Pero, con la evoluci´on de
las tecnolog´ıas de informaci´on y comunicaci´on, han emergido nuevos repositorios
de informaci´on con tipos de datos no tradicionales. Tipos de datos, tales como audio,
video o im´agenes, que no pueden ser estructurados de una forma tradicional bajo
tuplas o llaves, pero actualmente hay un creciente inter´es por realizar b´usquedas
modelos para b´usqueda en repositorios no estructurados, y donde la b´usqueda de
resultados exactamente iguales a la consulta carece de sentido.
El primer concepto a tener en cuenta para poder encontrar una soluci´on, es el
de b´usqueda por similitud [60], es decir, b´usqueda de los elementos de la base de
datos que son similares o cercanos a la consulta dada. La similitud es medida con
una funci´on de distancia que satisface la propiedad de desigualdad triangular y el
conjunto de objetos es llamado espacio m´etrico.
Una t´ecnica muy difundida en los ´ultimos a˜nos para indexar y buscar eficien-
temente objetos complejos son los llamados ´ındices para espacios m´etricos. Se
han propuesto numerosas estructuras de datos para computaci´on secuencial basada
en esta t´ecnica, que pueden alcanzar buena eficiencia comparado con b´usquedas
en espacios multi-dimensionales que contienen gran n´umero de objetos. No ob-
stante, el dise˜no de estos ´ındices ha sido orientado a la optimizaci´on de consultas
individuales en computaci´on secuencial, resolviendo los dos principales tipos de
consulta por similitud: consultas por rango y consultas kNN. Una consulta por
rango, representada como(q, r), es la operaci´on que recupera de la base de datos el conjunto de objetos cuya distancia a la consulta q no es mayor que r. Una consulta
kNN (k nearest neighbors), representada como kNN(q) recupera de la base de datos
los k elementos m´as cercanos a q.
Debido a que el problema ha aparecido en diversas ´areas, las soluciones han
provenido de campos tales como estad´ısticas, geometr´ıa computacional, inteligen-
cia artificial, bases de datos, bio-inform´atica, reconocimiento de patrones, miner´ıa
de datos, la Web. Actualmente los buscadores para la Web indexan docenas de
billones de documentos y cientos de millones de otros tipos de objetos complejos
buscador comercial (Google Goggles [2]), que permite entregar una imagen como
consulta, y aunque s´olo presenta buen funcionamiento con ciertos objetos, es el
principio de este tipo de aplicaciones.
Las cargas de trabajo en los grandes buscadores se caracterizan por la existencia
de una gran cantidad de consultas siendo procesadas en todo momento sobre un
conjunto muy grande de objetos (cientos de millones). En estos sistemas la m´etri-
ca de inter´es a ser optimizada es el throughput, que se define como la cantidad
de consultas completamente resueltas por unidad de tiempo. Para alcanzar altas
tasas de respuesta sobre cientos de millones de objetos con miles de consultas
por segundo, es necesario utilizar t´ecnicas de computaci´on paralela. En este caso
la paralelizaci´on se realiza sobre decenas o cientos de nodos (procesadores) sobre
los cuales se distribuyen uniformemente los objetos e ´ındices, y donde cada nodo
puede contener varios CPU-cores y GPUs. La contribuci´on principal de esta tesis
est´a enfocada en la b´usqueda eficiente en espacios m´etricos sobre uno de los nodos
antes mencionados, utilizando un entorno de memoria compartida.
Para el presente trabajo se utilizaron como base ´ındices m´etricos que ya exist´ıan
en la literatura, que son capaces de utilizar algoritmos secuenciales para resolver
consultas en espacios m´etricos de forma eficiente. Como se mencion´o anterior-
mente, estos ´ındices han sido optimizados para resolver consultas individuales, y
no para la resoluci´on de un conjunto de ellas en paralelo, ni para paralelizar la
resoluci´on de una de ellas. La primera parte de esta tesis propone estrategias de
distribuci´on y b´usqueda para resolver consultas por similitud en espacios m´etricos,
utilizando un servidor multi-core bajo un sistema de memoria compartida.
Durante los ´ultimos a˜nos, ha aparecido una alternativa muy prometedora para
denominadas GPU (Graphics Processing Units). Las consultas por rango y kNN
proveen diferentes niveles de paralelismo: se puede procesar un conjunto de consul-
tas en paralelo, un conjunto de evaluaciones de distancia en paralelo para una con-
sulta dada, o incluso explotar paralelismo en la operaci´on de distancia misma. Este
esquema se adapta muy bien a la arquitectura de la GPU, la que implementa una
organizaci´on de los hilos a varios niveles. Estas arquitecturas poseen una compleja
jerarqu´ıa de memoria, en donde algunas de ellas pueden ser controladas mediante
software. Estudios emp´ıricos muestran que esto ´ultimo es crucial para explotar
eficientemente este sistema de memoria, y para lograr una mejora significativa
cuando se utiliza una GPU para la aceleraci´on de aplicaciones [48]. En la segunda
parte de la presente tesis, se proponen estrategias para mapear y acelerar el proceso
de b´usqueda utilizando una tarjeta gr´afica GPU, y en la tercera parte de esta tesis se
extienden los algoritmos previos a una plataforma h´ıbrida multi-core y multi-GPU.
Tambi´en se estudi´o el caso de las bases de datos suficientemente grandes para
no caber en la memoria de la GPU. M´as espec´ıficamente, se implement´o un al-
goritmo h´ıbrido que hace uso de los cores en CPU GPU. Tambi´en se presenta un
nuevo ´ındice denominado Lista de Superclusters (LSC), que presenta propiedades
convenientes para la transferencia de memoria en GPU.