Construire une multiplication matricielle pas à pas
Des boucles naïves à un véritable noyau.
Construire une multiplication matricielle pas à pas est une leçon Mojo Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Mojo Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Mojo Academy comprend 4 leçons au total.
Ce que calcule Matmul
La multiplication matricielle, ou matmul, combine une matrice M par K avec une matrice K par N pour produire un résultat M par N. C'est le cœur des calculs d'IA.
La règle du produit scalaire
Chaque cellule de sortie est un produit scalaire : parcourez une ligne de A et une colonne de B, en multipliant puis en additionnant au fur et à mesure.
Trois boucles imbriquées
La version naïve utilise trois boucles sur i, j et k. Les deux boucles externes sélectionnent la cellule de sortie, tandis que la boucle interne additionne les produits.
for i in range(M):
for j in range(N):
for k in range(K):
C[i, j] += A[i, k] * B[k, j]Initialiser chaque cellule à zéro
Avant l'accumulation, affectez zéro à chaque cellule du résultat. Sinon, d'anciennes valeurs ou des valeurs indéfinies fausseront votre somme.
C[i, j] = 0.0Accumuler la somme
La boucle interne sur k conserve un accumulateur courant. Additionner dans une variable locale est souvent plus rapide que d'accéder à C à chaque étape.
var acc: Float32 = 0.0
for k in range(K):
acc += A[i, k] * B[k, j]
C[i, j] = accUtiliser fn pour accélérer
Écrivez le noyau avec fn et des arguments typés. Des types stricts permettent à Mojo de compiler un code machine optimisé, sans surcharge dynamique.
fn matmul(A: Matrix, B: Matrix, C: Matrix):
passPourquoi la version naïve est lente
La triple boucle de base effectue les bons calculs, mais lit B par colonne en sautant dans la mémoire. Une mauvaise localité gaspille du cache et du temps.
L'ordre des boucles compte
Réorganiser les boucles en i, k, j permet à la boucle interne de parcourir la mémoire en lignes droites. De meilleurs schémas d'accès peuvent fortement accélérer matmul.
for i in range(M):
for k in range(K):
for j in range(N):
C[i, j] += A[i, k] * B[k, j]La boucle interne est la cible
La quasi-totalité du temps est consacrée à la boucle la plus interne. C'est précisément sur cette boucle interne très sollicitée que la vectorisation et l'optimisation sont rentables.
La correction d'abord
Commencez par rendre la version simple correcte et enregistrez sa sortie. Elle devient la référence à laquelle vous comparez chaque noyau plus rapide.
Vers un véritable noyau
À partir de là, vous ajoutez SIMD, le découpage en blocs et le parallélisme. Chaque étape conserve le même résultat, tout en augmentant le débit vers la vitesse maximale du matériel.
Vérification rapide
Pourquoi la multiplication matricielle avec la triple boucle des manuels est-elle souvent lente en pratique ?
Récapitulatif
Matmul additionne un produit scalaire pour chaque cellule de sortie au moyen de trois boucles ; initialisez les cellules à zéro, accumulez localement et tenez compte de l'ordre des boucles pour le cache. 🔢
Apprends Mojo avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 30
- Leçons
- 120
Questions Fréquemment Posées
La leçon « Construire une multiplication matricielle pas à pas » est-elle gratuite ?
Oui — le texte complet de « Construire une multiplication matricielle pas à pas » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Mojo Academy, passe à CoddyKit PRO. Le cours Mojo Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Construire une multiplication matricielle pas à pas » ?
Des boucles naïves à un véritable noyau. Tu pratiques Mojo Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Mojo Academy ?
Aucune expérience préalable n'est requise. Mojo Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Construire une multiplication matricielle pas à pas » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Mojo Academy ?
Oui. Chaque leçon Mojo Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Modéliser un tenseur dans Mojo
- Construire une multiplication matricielle pas à pas
- Optimiser le produit scalaire
- Vérifier la justesse numérique