Mojo Academy · Aula

Reescrevendo o caminho crítico em Mojo

Traduza o gargalo com fn e SIMD.

Aula 2 de 413 etapas

Reescrevendo o caminho crítico em Mojo é uma aula grátis de Mojo Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Mojo Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Mojo Academy inclui 4 aulas no total.

Traduza o caminho crítico

Agora pegue aquele laço lento do Python e reconstrua-o no Mojo. Você mantém a mesma lógica, mas obtém desempenho real com código tipado e compilado. 🔧

Use fn

Escreva o núcleo como uma função fn, não como def. Os tipos obrigatórios permitem que o compilador gere código de máquina compacto para o seu laço crítico.

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

Anote todos os tipos

Dê a cada valor um tipo concreto. Sem a necessidade de adivinhação dinâmica, o Mojo pode otimizar a aritmética como o C faria.

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

Porte o corpo do laço

Copie a matemática interna passo a passo. Mantenha as mesmas operações para que os resultados coincidam exatamente com os do Python antes de otimizar qualquer coisa.

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

Verifique a correção primeiro

Execute a versão do Mojo com a mesma entrada e compare. A correção vem antes da velocidade, pois uma resposta rápida e errada não ajuda ninguém.

Adicione SIMD

Quando estiver correto, vetorize. Um valor SIMD reúne vários números para que uma instrução processe muitos elementos de uma só vez.

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

Processe em blocos vetoriais

Percorra os dados em grupos iguais à largura do SIMD. Cada passagem processa um bloco inteiro em vez de um único elemento isolado.

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

Reduza o vetor

Depois do laço, transforme o acumulador SIMD em um único número com uma redução. Isso combina todas as posições em um único total.

var total = acc.reduce_add()

Trate o restante

Se o comprimento não for um múltiplo exato da largura, alguns elementos sobrará. Um pequeno laço final os adiciona para que nada seja descartado.

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

Verifique o resultado novamente

Compare novamente a saída vetorizada com a referência do Python. Resultados iguais confirmam que sua reescrita com SIMD preservou a matemática.

Meça o novo núcleo

Meça o núcleo do Mojo com os mesmos dados. Mesmo em uma única thread, um núcleo tipado e vetorizado geralmente supera bastante o laço do Python.

Verificação rápida

Escolha a ordem correta para reescrever um caminho crítico no Mojo.

Recapitulação

Você portou o laço para uma fn tipada, verificou a correção, depois o vetorizou com SIMD e tratou o restante. O caminho crítico agora é Mojo rápido. 🎯

Grátis para começar

Aprenda Mojo com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
30
Aulas
120

Perguntas Frequentes

A aula “Reescrevendo o caminho crítico em Mojo” é grátis?

Sim — o texto completo de “Reescrevendo o caminho crítico em Mojo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Mojo Academy, atualize para CoddyKit PRO. O curso de Mojo Academy inclui 4 aulas no total.

O que vou aprender em “Reescrevendo o caminho crítico em Mojo”?

Traduza o gargalo com fn e SIMD. Você pratica Mojo Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Mojo Academy?

Nenhuma experiência prévia é necessária. Mojo Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Reescrevendo o caminho crítico em Mojo”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Mojo Academy?

Sim. Cada aula de Mojo Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Analisando o desempenho do Python de referência
  2. Reescrevendo o caminho crítico em Mojo
  3. Paralelizando e ajustando o núcleo
  4. Distribuindo o projeto acelerado
← Voltar para Mojo Academy