Habría que ver si consume mucha más memoria, si para ser más rápido el código ocupa mucho más y en GPU da más problemas por acceder a más memoria de la natural de un núcleo, o accesos a memoria no ortogonal (algo he leído de GPUs pero no me acuerdo del nombre). En resumen, si no cabe en una unidad de GPU o accede a memoria desordenadamente puede ser más lento.
Por poner dos ejemplos, en la tarjeta gráfica de mi PC (AMD Radeon HD6670) con OpenCL sólo veo 32KB de memoria local, y con el Cell de la PS3, 256KB por cada unidad vectorial ("SPE", CPU especializada en SIMD, poco apta para el propósito general). Dependiendo del número de muestras, si el tamaño de las tablash hash es proporcional al número de muestras, puede ser un hándicap para una implementación "tal cual", aunque seguro que se pueden hacer "apaños" para usar menos memoria, a cambio de penalización en tiempo.
En resumen, si no cabe en una unidad de GPU o accede a memoria desordenadamente puede ser más lento.
Más lento, o incluso directamente inviable. Las tablas hash, dependiendo de la arquitectura ni siquiera se pueden paginar, e.g. si el sistema usa cache y acceso a memoria global, sí, pero si hace la transferencia por DMA (e.g. Cell), no habría solución fácil (habría que repensar el problema, e.g. reemplazando tablas hash por otras de menor orden y resolver las colisiones por búsqueda). Quizá para la búsqueda hayan optado por otros mecanismos, e.g. tablas ordenadas (con índices), árboles (WORM -write once, read many; sin reorganizar nodos-), etc.
Quizá haya alguien que lo haya implementado, tengo ganas de ver algún ejemplo.
Re:Excelente noticia
(Puntos:1)( http://www.voluntariado.net/ | Última bitácora: Domingo, 10 Junio de 2012, 21:48h )
Quizá haya alguien que lo haya implementado, tengo ganas de ver algún ejemplo.