Reescribir la ruta crítica en Mojo
Traslade el cuello de botella con fn y SIMD.
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 totalAnotar 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 * chunkReducir 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. 🎯
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
- Perfilar la línea base de Python
- Reescribir la ruta crítica en Mojo
- Paralelizar y ajustar el núcleo
- Publicar el proyecto acelerado