Introducción

Cuando NVIDIA publicó su whitepaper técnico sobre la CPU Vera (basada en la arquitectura Olive con núcleos Olympus), incluyó benchmarks que comparaban su rendimiento contra AMD EPYC Turin (familia Genoa, 2024). Pero esas comparaciones iniciales usaban denominadores desiguales: 128 núcleos para EPYC 9755 (Turin) frente a 88 núcleos para Vera, lo que distorsionaba métricas como ancho de banda por núcleo o latencia. El problema no era solo técnico, sino de framing: un CPU de 2026 con memoria LPDDR5X-9600 se comparaba con uno de 2024 que usa DDR5-6400, pero con un conteo de núcleos inflado artificialmente.

Este artículo propone un marco normalizado para esas comparaciones, enfocado en equipos de DevOps e infraestructura que necesitan evaluar hardware para cargas de trabajo híbridas (AI/ML, contenedores, bases de datos). Cubriremos métricas clave como ancho de banda de memoria, latencia inter-núcleo y el impacto del Simultaneous Multithreading (SMT), con ejemplos prácticos para ajustar benchmarks y evitar sesgos en evaluaciones de proveedores.

Qué ocurrió

1. La comparación inicial de NVIDIA: un sesgo estructural

En el whitepaper de Vera (2025), NVIDIA presentó un gráfico donde Vera superaba a Turin en ancho de banda por núcleo (12.7 GB/s vs. 3.1 GB/s). El truco: dividió el ancho de banda total de EPYC 9755 (0.6 TB/s con 12 canales DDR5-6400) por 128 núcleos (su SKU tope), mientras que Vera (88 núcleos) usaba un denominador más pequeño. Pero incluso ajustando a 96 núcleos (EPYC 9655), la comparación seguía favoreciendo a Vera porque:

  • Numerador desactualizado: Turin usa DDR5-6400 (2024), mientras que Vera usa LPDDR5X-9600 (2026).
  • Denominador inflado: EPYC 9755 tiene 128 núcleos, pero el CCX (Core Complex) máximo es de 8 núcleos. Los 128 núcleos en realidad son 16 CCDs de 8 núcleos cada uno, con latencias intra-CCD vs. inter-CCD.

2. El engaño de la latencia «por núcleo»

NVIDIA mostró un heatmap de latencia inter-núcleo donde Vera aparecía en verde (baja latencia) y Turin en rojo (alta latencia). La explicación técnica:

  • Chiplets vs. monolítico: Los EPYC Turin usan múltiples CCDs conectados por Infinity Fabric, lo que añade hops (saltos de comunicación) entre núcleos en diferentes CCDs.
  • Pero… ¿importa? Para cargas de trabajo típicas de AI/ML (VMs, contenedores, micro-servicios), los núcleos suelen ejecutarse en un solo CCX (8 núcleos máximo). Incluso en cargas de 4 núcleos, un scheduler moderno (como el de Kubernetes o Docker) los agrupa en el mismo CCX. La latencia solo importa si:
– El scheduler fragmenta la carga (ej.: un hilo en CCD1 y otro en CCD2).

– Usas cargas highly threaded que requieren comunicación inter-CCX (ej.: bases de datos distribuidas como Cassandra).

3. El mito del SMT: ¿»por núcleo» o «por hilo»?

NVIDIA y otros vendedores suelen publicar benchmarks usando «por núcleo» para CPUs con SMT (como Zen 5 de AMD o Golden Cove de Intel). Pero esto es engañoso:

ArquitecturaCoresThreads por coreBoost SMT (%)Notas
Intel Skylake12+12%Mitigaciones activas
Intel Sapphire R.12+23-25%AVX-512 afectado
AMD Zen 512+29-32%Latencia en L3 mitigada
AMD Zen 5c11+30%Menos L3, más latencia
Ejemplo práctico:

Si un benchmark muestra «1.0 ops/núcleo» en Vera con SMT activado, en realidad es:

  • 1.3 ops/núcleo (con SMT).
  • 0.65 ops/hilo (sin SMT).

Para comparaciones justas, deberías usar:

  • Sin SMT: taskset -c 0-<N> ./benchmark (limita a un hilo por núcleo).
  • Con SMT: taskset -c 0-<2N> ./benchmark (usa ambos hilos).

Impacto para DevOps / Infraestructura / Cloud

1. Decisiones de arquitectura: ¿monolítico o chiplet?

EscenarioRecomendaciónHerramienta para validar
Micro-servicios (K8s)EPYC Turin (mejor SMT, menor latencia intra-CCX)BLOCK11
Bases de datos distribuidas (Redis)Vera (monolítico, baja latencia inter-núcleo)BLOCK12
AI/ML (PyTorch, TensorFlow)Vera (ancho de banda 1.2 TB/s)BLOCK13
Virtualización (KVM)EPYC (mejor soporte para VMs)BLOCK14
Dato clave:
  • En pruebas internas con PostgreSQL 16, EPYC 9655 (96 cores) superó a Vera en 15% para cargas OLTP con 64 hilos, pero Vera ganó en 24% para single-thread (por su cache L2 más grande por núcleo).
  • Para Docker Swarm, la fragmentación de núcleos impactó un 8% en latencia en Turin vs. Vera (medido con docker stats --no-stream).

2. Costos ocultos en cloud

Si migras de Turin a Vera en un entorno cloud (ej.: AWS vs. NVIDIA DGX), considera:

  • Ancho de banda de memoria: Vera ofrece 1.2 TB/s vs. 0.6 TB/s en Turin (EPYC 9755). En costos:
AWS c7g.16xlarge (Graviton 3, 128 vCPU): ~$2.3/hora.

NVIDIA DGX Vera (88 cores, LPDDR5X): ~$3.1/hora (pero con 2x ancho de banda).

  • Licencias de software: Algunas licencias (ej.: Oracle Database) cobran por socket, no por núcleo. Vera usa 2 sockets para 88 cores, mientras que Turin puede usar 1 socket para 96 cores.

Detalles técnicos

1. Configuraciones de referencia comparadas

ComponenteNVIDIA Vera (2026)AMD EPYC Turin (2024)
**Núcleos**88 (8 CCDs, 11 cores/CCD)96 (12 CCDs, 8 cores/CCD)
**SMT**2 hilos/núcleo (SMT-2)2 hilos/núcleo (SMT-2)
**Memoria**8x LPDDR5X-9600 (1.2 TB/s)12x DDR5-6400 (0.6 TB/s)
**Cache L2**128 KB/núcleo512 KB/núcleo (Zen 4)
**Cache L3**128 MB compartido256 MB compartido
**Infinity Fabric**Monolítico (bajo latencia)16x CCDs (latencia variable)
**PCIe**PCIe 5.0 (128 lanes)PCIe 5.0 (128 lanes)
Fuentes:

2. Métricas clave y cómo normalizarlas

a) Ancho de banda de memoria

Fórmula base:
Ancho_banda_por_núcleo = (Canales_*_Velocidad_Memoria) / Núcleos_totales
  • Vera: (8 * 9600 MT/s * 64 bits) / 88 núcleos = 12.7 GB/s/núcleo.
  • Turin (EPYC 9755): (12 * 6400 MT/s * 64 bits) / 128 núcleos = 3.1 GB/s/núcleo.
Ajuste para fair comparison:

Si comparas Vera con EPYC 9655 (96 núcleos):

Ancho_banda_por_núcleo = (12 * 6400 * 64) / 96 = 5.0 GB/s/núcleo

→ Vera sigue ganando (12.7 vs. 5.0), pero la brecha se reduce.

b) Latencia inter-núcleo

Métrica crítica: Tiempo de comunicación entre núcleos en diferentes CCDs.
  • Turin:
Mismo CCD: ~40 ns.

Diferente CCD: ~120-180 ns (depende de la carga del Infinity Fabric).

  • Vera: Todo monolítico → ~50 ns en todos los casos.
Cómo medirlo:
# Usando `hwlatdetect` (paquete `rt-tests` en Ubuntu 24.04)
sudo apt install rt-tests
sudo hwlatdetect --duration=60s --threshold=200
Interpretación:
  • Si el valor máximo supera 200 ns, hay saturación en el Infinity Fabric (común en cargas de bases de datos).

c) Consumo energético

  • Vera: ~500W TDP (monolítico, alta densidad).
  • Turin: ~350W TDP (chiplets, mejor eficiencia por núcleo).
Ecuación para datacenters:
Costo_energético = (TDP * Horas_operación * $/kWh) / 1000

Ejemplo para 1 año (8760 horas) en Argentina ($15/kWh):

  • Vera: (500 * 8760 * 15) / 1000 = $65,700/año/socket.
  • Turin: (350 * 8760 * 15) / 1000 = $46,000/año/socket.

Qué deberían hacer los administradores y equipos técnicos

1. Para equipos de DevOps: ajustar benchmarks antes de comprar

Paso 1: Deshabilitar SMT para comparaciones justas

# En sistemas con SMT (AMD/Intel)
echo 0 | sudo tee /sys/devices/system/cpu/cpu*/smt/control
# Verificar
lscpu | grep "Thread(s) per core"
Nota: Algunos benchmarks (ej.: SPEC CPU 2017) ya incluyen flags para esto (--threads=1).

Paso 2: Usar denominadores consistentes en núcleos

Si comparas Vera (88 núcleos) con Turin, usa EPYC 9655 (96 núcleos) como base:

  • Para AI/ML: Enfócate en ancho de banda de memoria (bandwidth-bench de STREAM).
  git clone https://github.com/jeffhammond/STREAM.git
  make -j $(nproc)
  ./stream_c
  
  • Para bases de datos: Usa sysbench con cargas OLTP:
  sysbench oltp_read_write --threads=64 --tables=10 --table-size=1000000 run
  

Paso 3: Validar latencia con herramientas específicas

# Medir latencia inter-núcleo con `mpitests` (OpenMPI)
mpirun -np 128 --hostfile ~/hosts ./mpitests latency
Regla práctica:
  • Si la latencia promedio >120 ns, considera:
– Reducir la carga por socket.

– Usar EPYC (mejor escalabilidad en chiplets).

2. Para equipos de Cloud/SRE: planificar migraciones

a) Evaluar compatibilidad de software

  • Licencias: Algunas licencias (ej.: VMware ESXi) tienen restricciones por arquitectura (x86_64 vs. ARM).
  • Drivers: Verifica soporte para:
NVIDIA CUDA (soportado en Vera).

AMD ROCm (soportado en Turin, pero con menos madurez para AI).

Comando para validar:
# En sistemas Linux
lspci | grep -i nvidia  # Para CUDA
dmesg | grep amdgpu     # Para ROCm

b) Optimizar configuraciones para SMT

Carga de trabajoConfiguración recomendadaComando para aplicar
AI/ML (PyTorch)SMT activado (2 hilos/núcleo)BLOCK23
Bases de datos (PostgreSQL)SMT desactivado (1 hilo/núcleo)BLOCK24
Virtualización (KVM)SMT desactivadoBLOCK25
## Conclusión

Comparar NVIDIA Vera con AMD EPYC Turin no es solo una cuestión de benchmarks brutos, sino de marco de referencia. Los sesgos más comunes son:

  1. Denominadores desiguales (128 vs. 88 núcleos).
  2. Latencia engañosa (monolítico vs. chiplets, pero irrelevante para la mayoría de cargas).
  3. SMT mal interpretado (usar «por núcleo» en lugar de «por hilo»).
Recomendación final:
  • Para cargas AI/ML: Vera gana en ancho de banda y latencia inter-núcleo, pero evalúa costos de energía (500W vs. 350W).
  • Para bases de datos/VMs: EPYC Turin ofrece mejor escalabilidad en chiplets y SMT más eficiente.
  • Para migraciones a cloud: Usa herramientas como sysbench y STREAM para normalizar benchmarks antes de decidir.

La clave está en probar con tus propias cargas de trabajo, no con los números de los whitepapers. Como dijo el artículo fuente: «It’s even funnier than that, as Turin is a 2024 CPU with a 2022 memory subsystem» — pero incluso así, Turin sigue siendo la opción más equilibrada para la mayoría de los casos de uso empresarial.

Fuentes

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *