• No results found

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.