• No se han encontrado resultados

Índice local centros locales (LL)

Índices sobre memoria distribuida

4.1 Algoritmos de búsqueda

4.1.1 Índice local centros locales (LL)

Este algoritmo corresponde a la estrategia de particionado intuitiva, indexación local, donde se distribuye la colección de objetos unifor- memente entre el conjunto de P procesadores, y luego cada procesador construye su propio índice de lista de clusters localmente. Un proble- ma que surge al utilizar esta estrategia, es que los centros de los clus- ters son seleccionados considerando únicamente los objetos locales en cada procesador, y estos centros pueden no ser los mejores objetos representativos de la colección.

Para resolver una consulta sobre el índice LC, el procesador ranker que recibe la consulta desde la máquina broker, realiza un broadcast de la misma para enviársela al resto de los procesadores. Cuando cada procesador recibe la nueva consulta obtiene el “plan de la consulta”, detectando los clusters que tienen intersección con la esfera de la con- sulta. A partir del siguiente superstep, cada procesador visita un clus- ter por superstep, determinando los objetos similares a la consulta. Cuando los procesadores terminan de procesar la consulta le envían los resultados obtenidos al procesador ranker.

Si el tamaño de los clusters en el índice secuencial LC es K, al utilizar la estrategia de particionado LL, cada procesador construye su índice con clusters de tamaño fijo K/P. Además, cada procesador envía sus mejores k/P resultados al procesador ranker, mientras que las estrate- gias que utilizan un particionado global a ser descritas posteriormente, envían k/v resultados donde v, con 1<= v<= P, es el número de proce- sadores visitados por cada consulta y k es el número de resultados a ser entregados al usuario. Estas definiciones son necesarias para reali- zar una comparación justa entre las distintas alternativas de paraleliza- ción del LC-SSS.

Esta misma estrategia se aplica al índice LC-SSS que utiliza una tabla de distancias de todos los objetos almacenados en un cluster a los pivotes seleccionados por la técnica LC+SSS-LC presentada en el capítulo anterior. El algoritmo aplicado sobre este índice se denomina LL-T. La figura 4.1 muestra el LC-SSS construido utilizando esta estrategia de particionado LL-T. La figura 4.2 muestra la tabla de dis- tancia construida para un cluster en el cual el centro c es el primer pivote de la tabla SSS, y cómo se puede utilizar la distancia pre- calculada utilizando la desigualdad triangular.

Por otro lado, el overhead OT=ST/(ST+SC) de almacenar la tabla de distancias de tamaño ST en disco con respecto al tamaño de cada clus- ter SC depende particularmente de la colección y del tamaño del clus- ter. Para las implementaciones realizadas en este trabajo se obtuvo OT

≈ 0.098 para las colecciones UK y la English, mientras que para la colección NASA y NASA-2 se obtuvo OT ≈0.0082. Por lo tanto, el overhead a pagar por tener mayor información y reducir el número de evaluaciones de distancias durante la búsqueda de consultas no es significativo.

Las consultas del tipo k-NN, es decir k vecinos más cercanos, pueden ser resueltas permitiendo que cada procesador obtenga los k objetos más cercanos (similares) a la consulta y luego se los envíe al procesa- dor ranker para que éste seleccione los mejores k. Considerando que los objetos están distribuidos uniformemente y que cada procesador tiene la misma probabilidad de poseer objetos similares a cualquier consulta, esta técnica puede ser optimizada si cada procesador envía los primeros k/P objetos locales más similares a la consulta. Si los primeros k/P objetos por procesador no es suficiente, los procesadores realizan el envío de los siguientes k/P y así sucesivamente hasta com- pletar P envíos en el peor caso.

La principal ventaja de esta estrategia es que las operaciones de cons- trucción y actualización son libres del costo de comunicación. Cuando llega un nuevo objeto a la colección de datos, este objeto se almacena en un procesador cualquiera y solo se actualiza el índice local sin ne- cesidad de comunicar al resto de los procesadores que ha arribado un nuevo objeto.

Sin embargo, esta técnica presenta inconvenientes. El primero de ellos es que no es escalable, debido a que cada consulta hace uso de todos los

recursos disponibles en el sistema. Es decir que cuando llega una nueva consulta, esta es procesada por todos los procesadores al mismo tiempo. Esto implica que una única consulta puede utilizar todas las CPUs y dis- cos disponibles en el cluster, lo cual incrementa el overhead en lo que se refiere a la planificación de threads y accesos a disco.

Por otro lado, el tipo de particionado como índice local es otra desven- taja que presenta esta estrategia, debido a que la operación durante la cual se obtiene el plan de las consultas debe ser calculada en cada procesador, esto porque cada procesador debe determinar los clusters locales que intersectan la esfera de la consulta. Los centros en cada procesador son diferentes, son centros locales, y por esa razón esta estrategia se denomina LL (indexación local con centros locales). Otro inconveniente está relacionado con la selección misma de los centros locales. Como se mostró en [22] la mejor heurística para se- leccionar los centros de los clusters, es la que selecciona como centro aquel objeto que maximiza la suma de distancias a los centros anterio- res. Los centros son objetos “especiales” que permiten discriminar mejor los objetos de la colección. Si estos centros son seleccionados sobre un subconjunto de la colección, es evidente que se pierden estos objetos especiales lo cual puede producir una degradación en el des- empeño del algoritmo de búsqueda requiriendo visitar más clusters de los necesarios. Esto porque en este caso los mejores centros de la co- lección estarán repartidos en los P procesadores y los restantes en cada procesador serán reemplazados por otros de inferior calidad. Como se muestra en la sección de experimentos de este capítulo, esto puede tener un efecto bastante negativo en el throughput alcanzado por el sistema.