CUDA Academy · Pelajaran

Bundarkan Bilangan Blok ke Atas

(n + threads - 1) / threads untuk liputan penuh.

Pelajaran 3 daripada 413 langkah

Bundarkan Bilangan Blok ke Atas ialah pelajaran CUDA Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran CUDA Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus CUDA Academy merangkumi sejumlah 4 pelajaran.

Berapa Banyak Blok?

Selepas menetapkan bilangan utas bagi setiap blok, anda perlu menentukan bilangan blocks yang hendak dilancarkan supaya setiap elemen tatasusunan mendapat satu utas.

Pembahagian Biasa Kehilangan Data

Pembahagian integer membundarkan ke bawah. Dengan 1000 item dan 256 utas, n / threads hanya menghasilkan 3 blok, yang meliputi 768 elemen sahaja dan meninggalkan selebihnya.

Anda Perlu Membundarkan ke Atas

Apabila bilangannya tidak boleh dibahagi sama rata, anda perlu menambah satu blok separa. Matlamatnya ialah pembahagian siling, bukan pembahagian lantai.

Helah Membundarkan ke Atas

Tambah threads tolak satu sebelum membahagi. Langkah kecil ini menaikkan sebarang baki ke blok penuh seterusnya tanpa menggunakan nombor titik terapung.

int blocks = (n + threads - 1) / threads;

Mengapa Ia Berfungsi

Jika n boleh dibahagi sama rata, threads tambahan tolak satu terlalu kecil untuk menaikkan hasil bahagi. Jika terdapat sebarang baki, ia mendorong hasil itu menjadi satu blok tambahan.

Contoh Berjawab

Untuk 1000 item dan 256 utas: 1000 tambah 255 ialah 1255, dibahagi dengan 256 menghasilkan 4. Anda mendapat 4 blok dan liputan penuh.

int blocks = (1000 + 256 - 1) / 256; // 4 blocks

Kes Sama Rata

Untuk 512 item dan 256 utas: 512 tambah 255 ialah 767, dibahagi 256 ialah 2. Tiada blok tambahan yang dibazirkan apabila pembahagian adalah tepat.

Anda Melancarkan Sedikit Terlalu Banyak

Blok terakhir biasanya hanya terisi sebahagian, jadi beberapa utas tidak mempunyai elemen. Itu tidak mengapa kerana semakan sempadan anda mengendalikannya.

Meletakkannya dalam Pelancaran

Kira bilangan blok, kemudian hantar kedua-dua nombor dalam kurungan sudut tiga untuk mengagihkan kerja ke seluruh grid.

int threads = 256;
int blocks = (n + threads - 1) / threads;
add<<<blocks, threads>>>(a, b, out, n);

Padankannya dengan Pengawal

Pembundaran ke atas dan semakan if (i < n) berfungsi sebagai satu pasukan. Satu menjamin liputan, manakala satu lagi memastikan utas lebihan kekal selamat.

Pembantu Kecil yang Boleh Digunakan Semula

Banyak projek membungkusnya dalam fungsi kecil supaya logik pembundaran ke atas berada di satu tempat dan tidak pernah tersalah taip. ✨

inline int ceilDiv(int n, int d) { return (n + d - 1) / d; }

Semakan Pantas

Hitung blok yang diperlukan.

Ringkasan

Anda telah belajar menentukan saiz grid dengan (n + threads - 1) / threads. Helah pembahagian siling ini meliputi setiap elemen, walaupun bilangannya tidak boleh dibahagi sama rata. 🎯

Percuma untuk bermula

Pelajari C++ dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Bundarkan Bilangan Blok ke Atas” percuma?

Ya — teks penuh “Bundarkan Bilangan Blok ke Atas” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus CUDA Academy, tingkat taraf kepada CoddyKit PRO. Kursus CUDA Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Bundarkan Bilangan Blok ke Atas”?

(n + threads - 1) / threads untuk liputan penuh. Anda berlatih CUDA Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan CUDA Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran CUDA Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Bundarkan Bilangan Blok ke Atas” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran CUDA Academy ini?

Ya. Setiap pelajaran CUDA Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Formula Indeks Klasik
  2. Lindungi daripada Luar Julat
  3. Bundarkan Bilangan Blok ke Atas
  4. Gelung Langkah Grid
← Kembali ke CUDA Academy