1 minuto(s) de lectura

Mi trabajo sobre el algoritmo Suppose me llevó a investigar a fondo las herramientas disponibles en la GPU. En general, en la GPU es preferible realizar cálculos antes que utilizar una LUT (Lookup Table), salvo ciertos casos.

Mapeo de texturas

Un nuevo requerimiento de PySuppose limitó la posiblidad de hacer cálculos, obligandome a buscar una solución por el camino de la LUT. Encontré entonces un poderoso recurso de la GPU: la Unidad de Mapeo de Texturas. Una pieza de hardware incorporado en la GPU con la capacidad de acceder de forma eficiente y cacheada a la memoria, interpolar valores y devolver resultados.

Convolución por expresión Convolución por LUT Ventajas de la convolución LUT Caracterización de errores Caracterización de errores Caracterización de errores
Presentación al equipo de desarrollo

Decidí armar un paquete externo a PySuppose para explorar esta herramienta y validar los resultados obtenidos (por ejemplo caracterizar el error cometido). Durante el desarrollo cambié la forma en que me comunicaba con la GPU, facilitando el multithreading posterior y con ello el uso de múltiples tarjetas.

PySuppose y su librería significó para el algoritmo Suppose una reducción de tiempos en un factor 80. CaTMU redujo esos nuevos tiempos 10 veces más.

Tiempos en CPU Tiempos en GPU Tiempos en GPU + TMU
Presentación de reducción de tiempos en la RAFA 2020

Para mi agrado, este nuevo paquete externo a PySuppose sirvió para propósitos que no esperaba. CaTMU fue combinado con técnicas de deep learning, Suppose y Compressed Sensing en un nuevo trabajo a cargo de Axel Lacapmesure, cuya publicación ya pasó el peer review y se encuentra en post-producción.