CompileIQ es un framework de auto-tuning impulsado por IA que viene integrado en CUDA 13.3 y usa algoritmos evolutivos y genéticos para optimizar los parámetros internos del compilador GPU sobre workloads específicos, superando las heurísticas por defecto en el ajuste de rendimiento.

La herramienta apunta a los kernels más críticos en cargas como la inferencia de modelos de lenguaje, donde unas pocas secciones de código dominan el cómputo total. Eso permite que ganancias fraccionales en esos puntos se traduzcan en mejoras importantes de throughput.

CompileIQ soporta optimización multi-objetivo, balanceando tiempo de ejecución, tiempo de compilación y consumo de energía. El resultado son configuraciones de compilador Pareto-óptimas, reproducibles y portables para uso en producción en entornos de IA y HPC.

¿Qué problema resuelve CompileIQ?

Considere un equipo que ya invirtió semanas optimizando un pipeline de inferencia LLM en GPU: ajustó batch sizes, cuantizó a FP8, adoptó flash attention y fusionó todos los kernels posibles. El profiler dice que no queda nada que exprimir.

¿Y si el propio compilador pudiera convertirse en un parámetro tuneable? Ahora se puede. El lanzamiento de NVIDIA CUDA 13.3 incluye CompileIQ, un framework de auto-tuning que aplica algoritmos evolutivos y genéticos para optimizar los compiladores GPU de propósito general de NVIDIA según cada workload individual.

Los compiladores GPU aplican las mismas heurísticas por defecto (estrategias de asignación de registros, decisiones de scheduling de instrucciones, umbrales de loop unrolling, etc.) a cada kernel que compilan. Esas heurísticas están diseñadas para entregar buenos resultados en un rango enorme de cargas. Pero "bueno en general" y "óptimo para tu workload" son dos cosas muy distintas.

El panorama competitivo en infraestructura de IA hace imposible ignorar esa brecha. Equipos que construyen kernels custom en CUDA, Triton y Helion pelean por cada punto porcentual de throughput. Hasta ahora no había forma de ajustar la generación de código para una carga específica.

El problema del 90%

Para entender por qué la optimización a nivel de compilador importa tanto, conviene mirar dónde se va realmente el cómputo GPU en la inferencia LLM moderna.

En los kernels de attention, las GEMMs de las capas lineales de los bloques FFN/MLP más las proyecciones Q, K, V y de salida concentran aproximadamente el 70% del total de FLOPs. El scaled dot-product attention, junto con las variantes fused y flash, agrega otro 25%. Juntas, esas dos familias de kernels representan más del 90% del cómputo end-to-end de inferencia.

Este patrón no es exclusivo de la inferencia IA. En muchas aplicaciones, una gran porción del tiempo de cómputo se concentra en porciones relativamente pequeñas del código. Por eso, mejorar el rendimiento en esos puntos, aunque sea por fracciones de punto porcentual, tiene un efecto desproporcionado sobre el rendimiento total.

Cómo funciona la búsqueda

CompileIQ explora un espacio rico de parámetros internos del compilador que no están expuestos por ninguna flag pública: estrategias de asignación de registros, políticas de scheduling de instrucciones, transformaciones de loops y más. La salida es un advanced controls file (ACF) que el compilador consume con la flag --apply-controls, produciendo un binario del kernel optimizado específicamente para ese workload.

El compilador ya tiene la capacidad de generar mejor código para un kernel determinado. Lo que no sabe es qué combinación de configuraciones internas lo logra. La búsqueda evolutiva de CompileIQ encuentra esa combinación automáticamente.

¿Cómo empezar en cuatro pasos?

CompileIQ se instala con pip en cualquier entorno Python:

Código
pip install compileiq

Trae los search spaces para PTXAS y NVCC, que se obtienen automáticamente vía APIs. No hay descargas ni configuración manual.

El trabajo del desarrollador es definir la función objetivo: un callable Python que toma una configuración candidata, compila el kernel con esa configuración, mide el resultado y devuelve un score. Si se puede medir el kernel, se puede usar CompileIQ.

La configuración de búsqueda por defecto usa pool_size=32, cull_size=24, generations=20 y mutate_rate=0.1. CompileIQ inicializa una población de configuraciones, evalúa cada una contra la función objetivo, selecciona las mejores, aplica mutación y crossover para generar nuevas candidatas y converge hacia un ACF óptimo a lo largo de las generaciones.

¿Vale la pena para producción?

NVIDIA afirma que laboratorios líderes en IA ya lo están usando en producción para sus workloads más críticos en rendimiento. La librería corre bajo licencia abierta en GitHub y entrega configuraciones reproducibles, portables y seguras para entornos de IA y HPC.

Para equipos que ya golpearon contra la pared después de agotar cada palanca de optimización conocida, CompileIQ aparece como una palanca nueva: el propio compilador.