Mojo Academy · Pelajaran

Membagi Pekerjaan Menjadi Potongan

Bagi rentang agar beban seimbang.

Pelajaran 2 dari 413 langkah

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) // workers

Temukan Awal Chunk

Di dalam fungsi pekerjaan, indeks chunk memberi tahu Anda dari mana harus memulai. Kalikan indeks tersebut dengan ukuran chunk.

var start = c * chunk

Batasi 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. 🚀

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 “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

  1. Fungsi parallelize
  2. Membagi Pekerjaan Menjadi Potongan
  3. Menggabungkan Paralel dan Vektor
  4. Menghindari Data Race
← Kembali ke Mojo Academy