Mojo Academy · Pelajaran

Menulis Ulang Jalur Terpanas dalam Mojo

Terjemahkan hambatan dengan fn dan SIMD.

Pelajaran 2 dari 413 langkah

Menulis Ulang Jalur Terpanas dalam Mojo adalah pelajaran Mojo Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Mojo Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Mojo Academy mencakup 4 pelajaran total.

Pindahkan Jalur Panas

Sekarang ambil perulangan Python yang lambat itu dan bangun ulang di Mojo. Anda mempertahankan logika yang sama, tetapi memperoleh kinerja nyata dari kode bertipe yang dikompilasi. 🔧

Gunakan fn

Tulis kernel sebagai fungsi fn, bukan def. Tipe yang diwajibkan memungkinkan kompiler menghasilkan kode mesin yang rapat untuk perulangan panas Anda.

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

Anotasikan Setiap Tipe

Berikan setiap nilai sebuah tipe konkret. Tanpa tebakan dinamis, Mojo dapat mengoptimalkan aritmetika seperti yang dilakukan C.

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

Pindahkan Isi Perulangan

Salin perhitungan dalam langkah demi langkah. Pertahankan operasi yang sama agar hasilnya persis sama dengan Python sebelum Anda mengoptimalkan apa pun.

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

Pastikan Kebenaran Terlebih Dahulu

Jalankan versi Mojo dengan input yang sama lalu bandingkan. Kebenaran harus didahulukan daripada kecepatan, karena jawaban yang salah meskipun cepat tidak membantu siapa pun.

Tambahkan SIMD

Setelah hasilnya benar, lakukan vektorisasi. Nilai SIMD mengemas beberapa angka sehingga satu instruksi memproses banyak elemen sekaligus.

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

Proses dalam Potongan Vektor

Telusuri data dalam kelompok yang ukurannya sama dengan lebar SIMD. Setiap lintasan menangani seluruh chunk, bukan satu elemen saja.

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

Reduksi Vektor

Setelah perulangan selesai, gabungkan akumulator SIMD menjadi satu angka dengan operasi reduksi. Operasi itu melipat setiap lajur menjadi satu total.

var total = acc.reduce_add()

Tangani Bagian Sisa

Jika panjang data bukan kelipatan tepat dari lebar, beberapa elemen akan tersisa. Perulangan sisa kecil menambahkannya agar tidak ada yang terlewat.

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

Periksa Kembali Hasilnya

Bandingkan lagi keluaran yang divektorisasi dengan nilai dasar Python. Hasil yang cocok memastikan penulisan ulang SIMD Anda mempertahankan perhitungan yang benar.

Ukur Kernel Baru

Ukur kernel Mojo dengan data yang sama. Bahkan dalam satu utas, kernel yang bertipe dan divektorisasi biasanya jauh mengungguli perulangan Python.

Pemeriksaan Cepat

Pilih urutan yang tepat untuk menulis ulang jalur panas di Mojo.

Ringkasan

Anda telah memindahkan perulangan ke fn bertipe, memastikan kebenarannya, lalu melakukan vektorisasi dengan SIMD dan menangani bagian sisa. Jalur panas kini menjadi Mojo yang cepat. 🎯

Gratis untuk memulai

Belajar Mojo dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menulis Ulang Jalur Terpanas dalam Mojo” gratis?

Ya — teks lengkap “Menulis Ulang Jalur Terpanas dalam Mojo” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Mojo Academy, upgrade ke CoddyKit PRO. Kursus Mojo Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menulis Ulang Jalur Terpanas dalam Mojo”?

Terjemahkan hambatan dengan fn dan SIMD. Kamu berlatih Mojo Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Mojo Academy?

Tidak diperlukan pengalaman sebelumnya. Mojo Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Menulis Ulang Jalur Terpanas dalam Mojo” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Mojo Academy ini?

Ya. Setiap pelajaran Mojo Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membuat Profil Dasar Python
  2. Menulis Ulang Jalur Terpanas dalam Mojo
  3. Memparalelkan dan Menyetel Inti
  4. Merilis Proyek yang Dipercepat
← Kembali ke Mojo Academy