Membagi Pekerjaan Menjadi Potongan
Bagi rentang agar beban seimbang.
Membagi Pekerjaan Menjadi Potongan 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.
Mengapa Harus Membuat Chunk
Meluncurkan utas untuk setiap elemen merupakan pemborosan. Sebagai gantinya, bagi rentang menjadi beberapa chunk yang lebih besar, satu untuk setiap worker.
Chunk adalah Irisan
Setiap chunk hanyalah irisan indeks yang berurutan, seperti 0 hingga 99 atau 100 hingga 199. Satu worker memiliki satu irisan.
Pilih Jumlah Chunk
Pilihan yang umum adalah satu chunk untuk setiap inti. Anda dapat meminta jumlah tersebut dari mesin dengan num_physical_cores.
var workers = num_physical_cores()Hitung Ukuran Chunk
Bagilah panjang total dengan jumlah worker untuk mengetahui jumlah item yang harus ditangani setiap worker.
var chunk = (n + workers - 1) // workersTemukan Awal Chunk
Di dalam fungsi pekerjaan, indeks chunk memberi tahu Anda dari mana harus memulai. Kalikan indeks tersebut dengan ukuran chunk.
var start = c * chunkBatasi Akhirnya
Chunk terakhir mungkin melewati data, jadi batasi akhirnya hingga panjang total dengan min agar tetap berada dalam batas.
var end = min(start + chunk, n)Lakukan Perulangan di Dalam Chunk
Setiap worker menjalankan perulangan biasa hanya pada rentangnya sendiri. Di dalam chunk, yang digunakan adalah kode biasa.
for i in range(start, end):
out[i] = heavy(i)Lakukan parallelize pada Chunk
Sekarang panggil parallelize dengan jumlah chunk, bukan jumlah elemen. Setiap pemanggilan memproses satu chunk utuh.
parallelize[do_chunk](workers)Seimbangkan Beban
Chunk berukuran sama membuat setiap inti sama-sama sibuk. Jika satu chunk jauh lebih besar, worker tersebut selesai terlambat.
Chunk Lebih Banyak daripada Inti
Jika beberapa item membutuhkan biaya lebih besar daripada yang lain, penggunaan chunk yang lebih banyak dan lebih kecil memungkinkan worker yang selesai lebih cepat mengambil pekerjaan tambahan dan tetap sibuk.
Setel dengan Pengukuran
Jumlah chunk terbaik bergantung pada data dan mesin Anda. Cobalah beberapa ukuran dan pertahankan ukuran yang paling baik menurut tolok ukur Anda.
Pemeriksaan Singkat
Anda membagi array berukuran n menjadi satu chunk untuk setiap worker.
Rangkuman
Anda membagi rentang menjadi chunk yang seimbang, membatasi setiap akhir dengan min, melakukan perulangan di dalam chunk, dan memanggil parallelize berdasarkan jumlah chunk untuk membagi beban secara merata. 🚀
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 “Membagi Pekerjaan Menjadi Potongan” gratis?
Ya — teks lengkap “Membagi Pekerjaan Menjadi Potongan” 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 “Membagi Pekerjaan Menjadi Potongan”?
Bagi rentang agar beban seimbang. 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 “Membagi Pekerjaan Menjadi Potongan” 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
- Fungsi parallelize
- Membagi Pekerjaan Menjadi Potongan
- Menggabungkan Paralel dan Vektor
- Menghindari Data Race