BookinglyTech News
Software

OpenVDB 13.1 estrena un framework SIMD y acelera sus algoritmos hasta 4 veces

La librería de volúmenes dispersos de la Academy Software Foundation añade vectorización explícita para x86 con AVX-512 y NanoVDB mejora la gestión de recursos CUDA.

2 min de lecturaPhoronix0 vistas

OpenVDB 13.1 ya está disponible. La versión que publica la Academy Software Foundation introduce un framework SIMD para vectorización explícita en x86 y, en las operaciones que ya lo aprovechan, el rendimiento se multiplica entre dos y cuatro veces sobre CPU x86_64 con AVX-512.

Para quien no se haya cruzado con ella: OpenVDB es una estructura de datos y una librería de herramientas para volúmenes dispersos, muy metida en el pipeline de efectos. La usan Houdini, RenderMan, Cinema 4D y Blender, entre otros, y su desarrollo se llevó un Óscar a los logros técnicos. Es decir, no es una dependencia exótica: está debajo de bastante de lo que se renderiza en producción.

La vectorización es opt-in

El framework da soporte a intrínsecos en x86 y de arranque se apoya en la VectorClass Library de Agner Fog, con capacidades ISA que llegan hasta AVX-512. Lo importante para quien compila es que esto no se activa solo: hay que construir la librería con la opción USE_VCL=ON. Cuando se hace, las ganancias aparecen.

La cobertura inicial es limitada. Los primeros algoritmos adaptados son los de transferencia de puntos, que son justo los que se llevan ese factor de dos a cuatro sobre CPUs modernas con AVX-512. El detalle técnico está en el pull request, y la idea es que las versiones siguientes vayan extendiendo el soporte a más operaciones.

El resto de la versión no gira solo en torno a SIMD. NanoVDB, el subconjunto pensado para GPU, recibe mejoras en la gestión de recursos CUDA y kernels más rápidos. También hay trabajo en vdb_tool, la utilidad de línea de comandos. Todo el detalle está en las notas de la versión.

Que una librería con quince años de recorrido empiece a explotar AVX-512 de forma explícita dice bastante de dónde está el cuello de botella en el tratamiento de volúmenes: las operaciones por punto se comen el tiempo, y ahí el ancho del vector manda. Si tienes OpenVDB en tu pipeline y compilas desde fuente, probar el flag es barato, aunque conviene medir el caso concreto antes de tocar la build de producción: el alcance actual se limita a las rutinas de transferencia de puntos y no a todo el catálogo.