0Pricing
Mojo Academy · 강의

반복문 벡터화하기

스칼라 반복문을 벡터 작업으로 바꿉니다.

반복문 벡터화하기은(는) CoddyKit의 무료 Mojo Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Mojo Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Mojo Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

The Scalar Loop

A plain loop touches one element per step. It is clear but leaves your CPU's vector lanes mostly unused.

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

The Vector Idea

Vectorizing means each loop step handles a whole pack of elements instead of one. You do more work per iteration.

Load a Chunk

Instead of one value, you load several at once into a SIMD vector. That single load grabs a slice of your data.

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

Compute the Whole Chunk

With both chunks in SIMD form, add them in one element-wise step. The math covers every lane at once.

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

Store the Result

Write the whole SIMD result back in one move with a vector store. One write covers all the lanes you computed.

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

Step by the Width

A vectorized loop advances by the width, not by one. Each pass covers a full pack of elements.

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

Let Mojo Drive It

Mojo's vectorize helper runs a closure across the range in vector steps and handles the bookkeeping for you.

from algorithm import vectorize

A vectorize Closure

You write a small parameterized function that processes one chunk. Mojo calls it with the right width as it sweeps the range.

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

Run the Vectorize

Call vectorize with your chunk function, the width, and the total size. It does the looping and the tail for you.

vectorize[work, 4](n)

Same Result, Far Faster

The vectorized loop gives identical output to the scalar one but moves through data in big steps, so it finishes sooner.

Measure to Confirm

Always time both versions. Vectorization usually wins big, but a benchmark proves the gain on your real data.

Quick Check

You replace a one-element-per-step loop with SIMD loads and stores. How should the loop advance?

Recap

Vectorizing loads and stores whole chunks, steps by the width, and lets vectorize handle the sweep and tail, giving the same result far faster. 🚀

자주 묻는 질문

“반복문 벡터화하기” 강의는 무료인가요?

네 — “반복문 벡터화하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Mojo Academy 강의 전체를 잠금 해제할 수 있습니다. Mojo Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“반복문 벡터화하기”에서 뭘 배우나요?

스칼라 반복문을 벡터 작업으로 바꿉니다. 브라우저에서 직접 실행하는 실습 코드로 Mojo Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Mojo Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Mojo Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“반복문 벡터화하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Mojo Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Mojo Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. SIMD 타입 만나기
  2. 요소별 SIMD 연산
  3. SIMD 너비 선택하기
  4. 반복문 벡터화하기
← Mojo Academy(으)로 돌아가기