0Pricing
Mojo Academy · Aula

Vetorizando um laço

Transforme um laço escalar em trabalho vetorial.

Vetorizando um laço é uma aula grátis de Mojo Academy no CoddyKit. Esta é a aula 4 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.

O loop escalar

Um loop simples acessa um elemento por etapa. Ele é claro, mas deixa a maior parte das lanes vetoriais da sua CPU sem uso.

for i in range(n):
    out[i] = a[i] + b[i]

A ideia vetorial

Vetorizar significa que cada etapa do loop processa um pacote inteiro de elementos em vez de apenas um. Assim, você faz mais trabalho por iteração.

Carregar um bloco

Em vez de um único valor, você carrega vários de uma vez em um vetor SIMD. Esse único carregamento obtém uma fatia dos seus dados.

var chunk = a.load[width=4](i)

Calcular o bloco inteiro

Com both os blocos no formato SIMD, some-os em uma única etapa elemento a elemento. A operação matemática cobre todas as lanes de uma só vez.

var sum = a.load[width=4](i) + b.load[width=4](i)

Armazenar o resultado

Grave todo o resultado SIMD de volta em um único movimento, usando um armazenamento vetorial. Uma gravação cobre todas as lanes calculadas.

out.store[width=4](i, sum)

Avançar pela largura

Um loop vetorizado avança pela largura, não de um em um. Cada passagem cobre um pacote completo de elementos.

for i in range(0, n, 4):
    pass

Deixe o Mojo conduzir

O auxiliar vetorizar do Mojo executa um fechamento ao longo do intervalo, em etapas vetoriais, e cuida do controle necessário para você.

from algorithm import vectorize

Um fechamento de vetorização

Você escreve uma pequena função parametrizada que processa um bloco. O Mojo a chama com a largura correta enquanto percorre o intervalo.

fn work[w: Int](i: Int):
    out.store[width=w](i, a.load[width=w](i) + b.load[width=w](i))

Executar a vetorização

Chame a vetorização com sua função de bloco, a largura e o tamanho total. Ela cuida do loop e da cauda para você.

vectorize[work, 4](n)

Mesmo resultado, muito mais rápido

O loop vetorizado produz a mesma saída que o escalar, mas percorre os dados em grandes etapas, portanto termina mais cedo.

Medir para confirmar

Sempre cronometre ambas as versões. A vetorização geralmente vence por uma grande margem, mas um benchmark comprova o ganho nos seus dados reais.

Verificação rápida

Você substitui um loop que processa um elemento por etapa por carregamentos e armazenamentos SIMD. Como o loop deve avançar?

Recapitulação

Vetorizar carrega e armazena blocos inteiros, avança pela largura e deixa a vetorização cuidar do percurso e da cauda, produzindo o mesmo resultado muito mais rapidamente. 🚀

Perguntas Frequentes

A aula “Vetorizando um laço” é grátis?

Sim — o texto completo de “Vetorizando um laço” é 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 “Vetorizando um laço”?

Transforme um laço escalar em trabalho vetorial. 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 4 de 4.

Quanto tempo leva a aula “Vetorizando um laço”?

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. Conheça o tipo SIMD
  2. Matemática SIMD elemento a elemento
  3. Escolhendo uma largura SIMD
  4. Vetorizando um laço
← Voltar para Mojo Academy