0Pricing
Mojo Academy · บทเรียน

การทำเวกเตอร์ให้กับลูป

เปลี่ยนลูปสเกลาร์ให้เป็นงานแบบเวกเตอร์

การทำเวกเตอร์ให้กับลูป เป็นบทเรียน Mojo Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน 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. 🚀

คำถามที่พบบ่อย

บทเรียน “การทำเวกเตอร์ให้กับลูป” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การทำเวกเตอร์ให้กับลูป” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Mojo Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Mojo Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การทำเวกเตอร์ให้กับลูป”

เปลี่ยนลูปสเกลาร์ให้เป็นงานแบบเวกเตอร์ คุณปฏิบัติ Mojo Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Mojo Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Mojo Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การทำเวกเตอร์ให้กับลูป” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Mojo Academy นี้ได้ไหม

ได้ บทเรียน Mojo Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ทำความรู้จักชนิดข้อมูล SIMD
  2. คณิตศาสตร์ SIMD แบบรายสมาชิก
  3. การเลือกความกว้าง SIMD
  4. การทำเวกเตอร์ให้กับลูป
← กลับไปที่ Mojo Academy