Skip to content

English · Español

Lab 00 — Perfil del ordenador

Objetivo: capturar la verdad medida sobre tu ordenador antes de hacer cualquier benchmark. Sin esto, cada número posterior es ininterpretable.

Tiempo estimado: 30–45 minutos.


Qué produces

Un único archivo comprometido en experiments/01-machine-profile/profile.md que contenga:

  • Modelo de CPU, nombre de la microarquitectura, reloj (base + boost), número de cores, número de threads.
  • Tamaños de cache (L1d, L1i, L2, L3) y asociatividad, tamaño de línea.
  • Memoria: RAM total, conteo de canales, generación DDR, velocidad de DIMM.
  • Soporte de ISA SIMD (AVX, AVX2, AVX-512, FMA).
  • OS, versión de kernel, modo del CPU governor en el momento de la captura.
  • FLOPS pico computados (tu propia derivación, escrita).
  • Ancho de banda pico de DRAM computado (tu propia derivación, escrito).
  • Un párrafo corto: "dado este ordenador, la intensidad aritmética de equilibrio de la máquina es ≈ X FLOPs/byte; los kernels por debajo de esto están bandwidth-bound."

Este archivo se convierte en la referencia que cada experimento posterior cita.

TODOs

Bloque A — recoger hechos en crudo

  • lscpu — pega la salida completa. Destaca: nombre del modelo, virtualización, fabricante, tamaños de cache.
  • lstopo --no-io (del paquete hwloc; instálalo si es necesario) — pega el bloque de topología. Esto muestra el layout L1/L2/L3 por core.
  • sudo dmidecode --type 17 — pega la info del DIMM (generación DDR, velocidad en MT/s, fabricante). Sin sudo, recurre a lshw -class memory.
  • cat /proc/cpuinfo | grep -E 'model name|flags' | head -2 — confirma las flags SIMD.
  • cpupower frequency-info (o cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor) — registra el CPU governor actual.
  • uname -r — versión del kernel.

Bloque B — deriva FLOPS pico a mano

De lscpu extrae: GHz base del reloj, cores. De las flags extrae: la ISA SIMD más ancha (AVX2 / AVX-512). Usa la fórmula en theory/03-roofline-model.md:

π_peak = reloj_GHz × cores × SIMD_fp32_per_op × FMA_factor

Donde: - SIMD_fp32_per_op = 8 para AVX2, 16 para AVX-512. - FMA_factor = 2 si FMA está en las flags (un fused multiply-add hace 2 FLOPs en 1 ciclo). - reloj_GHz = usa reloj base, no boost. El boost no es sostenido.

Escribe la aritmética. No te limites a decir el resultado.

Pista: para el i5-8250U: 1.6 GHz base × 4 núcleos × 8 fp32/AVX2 × 2 FMA = 102.4 GFLOPS. El "boost" 3.4 GHz raramente se sostiene por límites térmicos en chips U-series.

Bloque C — deriva el ancho de banda pico de DRAM a mano

De dmidecode: velocidad DDR en MT/s (millones de transferencias por segundo). De lscpu o topología del sistema: conteo de canales (1, 2 o 4 típicamente).

β_peak = canales × (transfer_rate_MTs × 10⁶) × 8 bytes/transferencia

DDR4-2400 estándar tiene 2400 MT/s × 8 bytes = 19.2 GB/s por canal. Multiplica por el conteo de canales.

Si no tienes permiso para dmidecode, por defecto DDR4-2400 para el i5-8250U (el máximo nominal de la plataforma). Anota esta asunción en el archivo.

Bloque D — sintetiza

Escribe el párrafo corto: intensidad de equilibrio de la máquina, qué implica, qué labs de la Fase 1 medirán cada techo. Dos o tres frases en total.

Restricciones

  • Sin herramientas más allá de las listadas. No ejecutes peakperf aquí aunque esté instalado — los labs 01–03 medirán los picos empíricamente; este lab es pura derivación.
  • Muestra tu trabajo. Si el archivo solo lista "100 GFLOPS" sin derivación, rehazlo.
  • Marca los valores específicos de Borja en [brackets]. Si copias este lab a otro ordenador más tarde, los slots entre corchetes son las cosas que cambian.

Condiciones de parada

Has terminado cuando:

  1. experiments/01-machine-profile/profile.md existe.
  2. Tanto π_peak como β_peak están escritos, con la aritmética visible.
  3. La frase de "intensidad de equilibrio de la máquina" está en el archivo.
  4. Puedes leer tu archivo en voz alta a ti mismo y explicar cada número sin volver a consultar lscpu.

Pista de último recurso

Si has pasado más de 45 minutos y dmidecode te está dando guerra: hardcodea DDR4-2400 dual-channel (19.2 GB/s × 2 = 38.4 GB/s para la plataforma i5-8250U), anota la asunción y sigue adelante. El objetivo del lab 00 no es pelearse con dmidecode; es escribir una derivación que entiendes.

Cuándo consultar solutions/

Después de haber comprometido profile.md. La solución vive en solutions/00-machine-profile-ref.md — escrita en apertura de fase, no pre-escrita, porque depende de lo que reporta el ordenador real de Borja. Compara; no leas antes.


Siguiente lab: lab/01-memcpy-bandwidth.md.