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 paquetehwloc; 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). Sinsudo, recurre alshw -class memory. -
cat /proc/cpuinfo | grep -E 'model name|flags' | head -2— confirma las flags SIMD. -
cpupower frequency-info(ocat /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:
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).
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
peakperfaquí 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:
experiments/01-machine-profile/profile.mdexiste.- Tanto
π_peakcomoβ_peakestán escritos, con la aritmética visible. - La frase de "intensidad de equilibrio de la máquina" está en el archivo.
- 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.