Diviser le travail en blocs
Divisez une plage pour équilibrer la charge.
Diviser le travail en blocs 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.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Why Chunk at All
Launching a thread per element is wasteful. Instead you split the range into a few larger chunks, one per worker.
A Chunk Is a Slice
Each chunk is just a contiguous slice of indices, like 0 to 99 or 100 to 199. One worker owns one slice.
Pick a Chunk Count
A common choice is one chunk per core. You ask the machine for that number with num_physical_cores.
var workers = num_physical_cores()Compute the Chunk Size
Divide the total length by the worker count to get how many items each worker should handle.
var chunk = (n + workers - 1) // workersFind a Chunk's Start
Inside the work function, the chunk index tells you where to begin. Multiply it by the chunk size.
var start = c * chunkClamp the End
The last chunk may run past the data, so clamp its end to the total length with min to stay in bounds.
var end = min(start + chunk, n)Loop Inside the Chunk
Each worker runs a normal loop over just its own range. Inside the chunk it is plain, ordinary code.
for i in range(start, end):
out[i] = heavy(i)parallelize Over Chunks
Now you call parallelize with the number of chunks, not the number of elements. Each call processes one whole chunk.
parallelize[do_chunk](workers)Balance the Load
Equal-sized chunks keep every core equally busy. If one chunk is far bigger, that worker finishes late.
More Chunks Than Cores
When some items cost more than others, using more, smaller chunks lets fast workers grab extra work and stay busy.
Tune by Measuring
The best chunk count depends on your data and machine. Try a few sizes and keep the one your benchmark likes.
Quick Check
You split a length-n array into one chunk per worker.
Recap
You divide the range into balanced chunks, clamp each end with min, loop inside a chunk, and call parallelize over the chunk count for even load. 🚀
Questions Fréquemment Posées
La leçon « Diviser le travail en blocs » est-elle gratuite ?
Oui — le texte complet de « Diviser le travail en blocs » 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 « Diviser le travail en blocs » ?
Divisez une plage pour équilibrer la charge. 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 « Diviser le travail en blocs » ?
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
- La fonction parallelize
- Diviser le travail en blocs
- Combiner parallélisme et vectorisation
- Éviter les accès concurrents