Membangun Matmul Langkah demi Langkah
Dari perulangan naif hingga kernel sungguhan.
Membangun Matmul Langkah demi Langkah 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.
Apa yang Dihitung Matmul
Perkalian matriks, atau matmul, menggabungkan matriks berukuran M kali K dengan matriks berukuran K kali N untuk menghasilkan matriks berukuran M kali N. Inilah inti matematika AI.
Aturan Hasil Kali Titik
Setiap sel keluaran adalah hasil kali titik: telusuri satu baris A dan satu kolom B, lalu kalikan dan jumlahkan elemen-elemennya.
Tiga Perulangan Bersarang
Versi naif menggunakan tiga perulangan atas i, j, dan k. Dua perulangan terluar memilih sel keluaran, sedangkan perulangan terdalam menjumlahkan hasil perkalian.
for i in range(M):
for j in range(N):
for k in range(K):
C[i, j] += A[i, k] * B[k, j]Mulai Setiap Sel dari Nol
Sebelum mengakumulasi, tetapkan setiap sel hasil ke nol. Jika tidak, nilai lama atau nilai sampah akan mencemari jumlah Anda.
C[i, j] = 0.0Akumulasikan Jumlahnya
Perulangan k bagian dalam mempertahankan akumulator yang terus diperbarui. Menjumlahkan ke dalam variabel lokal sering kali lebih cepat daripada mengakses C pada setiap langkah.
var acc: Float32 = 0.0
for k in range(K):
acc += A[i, k] * B[k, j]
C[i, j] = accGunakan fn untuk Kecepatan
Tulislah kernel dengan fn dan argumen bertipe. Tipe yang ketat memungkinkan Mojo mengompilasi kode mesin yang efisien tanpa beban dinamis.
fn matmul(A: Matrix, B: Matrix, C: Matrix):
passMengapa Versi Naif Lambat
Tiga perulangan dasar melakukan perhitungan yang benar, tetapi membaca B berdasarkan kolom sehingga melompat-lompat di memori. Lokalitas yang buruk membuang kapasitas cache dan waktu.
Urutan Perulangan Berpengaruh
Mengubah urutannya menjadi i, k, j membuat perulangan terdalam menelusuri memori dalam garis lurus. Pola akses yang lebih baik dapat mempercepat matmul secara signifikan.
for i in range(M):
for k in range(K):
for j in range(N):
C[i, j] += A[i, k] * B[k, j]Perulangan Terdalam Adalah Sasaran
Hampir seluruh waktu dihabiskan dalam perulangan terdalam. Perulangan terdalam yang paling sering dijalankan itulah tempat vektorisasi dan penyetelan memberikan hasil.
Dahulukan Ketepatan
Pastikan versi sederhana sudah benar dan simpan keluarannya. Versi itu menjadi acuan yang Anda gunakan untuk membandingkan setiap kernel yang lebih cepat.
Langkah Menuju Kernel Sebenarnya
Dari sini, Anda dapat menambahkan SIMD, tiling, dan paralelisme. Setiap langkah mempertahankan hasil yang sama, tetapi meningkatkan throughput menuju kecepatan perangkat keras maksimum.
Pemeriksaan Singkat
Mengapa matmul dengan tiga perulangan seperti di buku teks sering kali lambat dalam praktik?
Rangkuman
Matmul menjumlahkan hasil kali titik untuk setiap sel keluaran dengan tiga perulangan; mulai sel dari nol, akumulasikan secara lokal, dan perhatikan urutan perulangan demi cache. 🔢
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 “Membangun Matmul Langkah demi Langkah” gratis?
Ya — teks lengkap “Membangun Matmul Langkah demi Langkah” 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 “Membangun Matmul Langkah demi Langkah”?
Dari perulangan naif hingga kernel sungguhan. 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 “Membangun Matmul Langkah demi Langkah” 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
- Memodelkan Tensor di Mojo
- Membangun Matmul Langkah demi Langkah
- Mengoptimalkan Hasil Kali Dalam
- Memverifikasi Kebenaran Numerik