Mojo Academy · Lección

Reescribir la ruta crítica en Mojo

Traslade el cuello de botella con fn y SIMD.

Lección 2 de 413 pasos

Reescribir la ruta crítica en Mojo es una lección gratuita de Mojo Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Mojo Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Mojo Academy incluye 4 lecciones en total.

Trasladar la ruta crítica

Ahora tome ese bucle lento de Python y reconstrúyalo en Mojo. Conservará la misma lógica, pero obtendrá un rendimiento real gracias al código tipado y compilado. 🔧

Recurrir a fn

Escriba el núcleo como una función fn, no como def. Los tipos obligatorios permiten que el compilador genere código máquina compacto para su bucle crítico.

fn sum_squares(data: List[Float64]) -> Float64:
    var total: Float64 = 0.0
    return total

Anotar todos los tipos

Asigne a cada valor un tipo concreto. Al no quedar inferencia dinámica, Mojo puede optimizar las operaciones aritméticas como lo haría C.

var total: Float64 = 0.0
var n: Int = len(data)

Trasladar el cuerpo del bucle

Copie las operaciones matemáticas internas paso a paso. Mantenga las mismas operaciones para que los resultados coincidan exactamente con Python antes de optimizar nada.

for i in range(len(data)):
    total += data[i] * data[i]

Verificar primero la corrección

Ejecute la versión de Mojo con la misma entrada y compare los resultados. La corrección es prioritaria frente a la velocidad, ya que una respuesta rápida pero incorrecta no sirve a nadie.

Incorporar SIMD

Cuando sea correcto, vectorícelo. Un valor SIMD agrupa varios números para que una instrucción procese muchos elementos a la vez.

alias width = 4
var acc = SIMD[DType.float64, width](0)

Procesar en bloques vectoriales

Recorra los datos en grupos cuyo tamaño sea igual al ancho de SIMD. Cada paso procesa un bloque completo en lugar de un único elemento aislado.

for i in range(0, n, width):
    var chunk = data.load[width](i)
    acc += chunk * chunk

Reducir el vector

Después del bucle, convierta el acumulador SIMD en un único número mediante una operación reduce. Esta combina todos los carriles en un solo total.

var total = acc.reduce_add()

Gestionar la cola

Si la longitud no es un múltiplo exacto del ancho, quedan algunos elementos. Un pequeño bucle de cola los suma para que no se pierda ninguno.

for i in range(n - (n % width), n):
    total += data[i] * data[i]

Volver a comprobar el resultado

Compare de nuevo la salida vectorizada con la referencia de Python. Unos resultados coincidentes confirman que la reescritura con SIMD conserva la corrección matemática.

Cronometrar el nuevo núcleo

Mida el kernel de Mojo con los mismos datos. Incluso en un solo hilo, un kernel tipado y vectorizado normalmente supera por mucho al bucle de Python.

Comprobación rápida

Elija el orden correcto para reescribir una ruta crítica en Mojo.

Resumen

Ha trasladado el bucle a un fn tipado, ha verificado que funciona correctamente y después lo ha vectorizado con SIMD y ha gestionado la parte restante. La ruta crítica ahora es Mojo rápido. 🎯

Gratis para empezar

Aprende Mojo con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Reescribir la ruta crítica en Mojo» es gratis?

Sí — el texto completo de «Reescribir la ruta crítica en Mojo» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Mojo Academy, actualiza a CoddyKit PRO. El curso de Mojo Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Reescribir la ruta crítica en Mojo»?

Traslade el cuello de botella con fn y SIMD. Practicas Mojo Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Mojo Academy?

No se requiere experiencia previa. Mojo Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Reescribir la ruta crítica en Mojo»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Mojo Academy?

Sí. Cada lección de Mojo Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Perfilar la línea base de Python
  2. Reescribir la ruta crítica en Mojo
  3. Paralelizar y ajustar el núcleo
  4. Publicar el proyecto acelerado
← Volver a Mojo Academy