Estoy tratando de averiguar si un cierto problema es un buen candidato para usar CUDA para poner el problema en una GPU.¿Las GPU son buenas para el filtrado de imágenes basado en casos?
Básicamente estoy haciendo un filtro de caja que cambia en función de la detección de algunos bordes. Así que hay básicamente 8 casos que se prueban para cada píxel, y luego ocurre el resto de las operaciones: cálculos medios típicos y demás. ¿La presencia de estas instrucciones de conmutación en mi ciclo hará que este problema sea un mal candidato para ir a la GPU?
No estoy seguro de cómo evitar las instrucciones de cambio, porque esta detección de borde tiene que ocurrir en cada píxel. Supongo que toda la imagen podría tener la parte de detección de bordes separada del algoritmo de procesamiento, y podría almacenar un búfer correspondiente a cada filtro para cada píxel, pero parece que agregaría mucho preprocesamiento al algoritmo .
Editar: Para dar un poco de contexto, este algoritmo ya está escrito, y OpenMP se ha utilizado con bastante buen efecto para acelerarlo. Sin embargo, los 8 núcleos en mi caja de desarrollo palidecen en comparación con los 512 en la GPU.
si te refieres a "palitos" en números brutos, esto no es necesariamente cierto, ya que muchos de los comentaristas en este hilo han explicado que la programación para la GPU requiere un tipo diferente de pensamiento. esto se debe a que, aunque es un caballo de batalla, solo es apto para ciertas tareas. :) –
si tiene acceso a una tarjeta basada en Fermi de nVidia, pruébela y transmita la parte del código donde tiene hotspots. Es posible que también desee analizar el perfil de su código si aún no lo ha hecho, para ver cuál es el verdadero cuello de botella. de lo contrario, la mejor opción es volver a escribirlo para que no se bifurque. –