CUDA Academy · Pelajaran

Lindungi dari Indeks di Luar Rentang

Pemeriksaan batas if (i < n).

Pelajaran 2 dari 413 langkah

Lindungi dari Indeks di Luar Rentang adalah pelajaran CUDA 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 CUDA Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus CUDA Academy mencakup 4 pelajaran total.

Anda Sering Meluncurkan Terlalu Banyak

Jumlah utas menggunakan ukuran blok tetap, sehingga Anda hampir selalu meluncurkan beberapa utas tambahan di luar panjang larik. Utas cadangan tersebut perlu ditangani.

Apa yang Bisa Salah

Utas tambahan menghitung indeks yang melewati akhir larik. Jika menulis di sana, utas tersebut menyentuh memori yang bukan miliknya dan menyebabkan kesalahan di luar batas secara diam-diam.

GPU Tidak Akan Memberi Peringatan

Berbeda dari kerusakan yang jelas, penulisan di luar rentang dapat merusak data di dekatnya atau membaca data sampah. Kernel tetap berjalan, sehingga kegagalan tersebut tidak terlihat sampai hasilnya tampak salah.

Perbaikannya Hanya Satu Baris

Sebelum utas menggunakan indeksnya, periksa bahwa indeks tersebut berada di dalam larik. Pemeriksaan batas kecil ini merupakan kebiasaan keselamatan terpenting dalam CUDA.

if (i < n) {
    out[i] = a[i] + b[i];
}

Mengapa Kurang dari, Bukan Kurang dari atau Sama dengan

Indeks yang valid berjalan dari 0 hingga n dikurangi 1. i < n yang ketat memungkinkan elemen nyata terakhir digunakan dan menghentikan elemen tidak valid pertama.

Utas Menganggur Cukup Keluar

Utas yang indeksnya berada di luar rentang cukup melewati pekerjaan tersebut lalu kembali. Tidak melakukan apa pun sepenuhnya aman dan hampir tidak memerlukan waktu.

Berikan n kepada Kernel

Kernel tidak dapat menebak panjang larik, jadi Anda memberinya n sebagai parameter. Dengan demikian, penjaga selalu mengetahui tempat data berakhir.

__global__ void add(float* a, float* b, float* out, int n) {
    int i = blockIdx.x * blockDim.x + threadIdx.x;
    if (i < n) out[i] = a[i] + b[i];
}

Pembacaan Juga Harus Dilindungi

Yang perlu dilindungi bukan hanya penulisan. Membaca a[i] setelah akhir larik akan memuat data sampah atau menimbulkan kesalahan, sehingga pemeriksaan i < n yang sama melindungi setiap akses.

Kesalahan Satu Langkah yang Umum

Kesalahan menulis i <= n memungkinkan satu utas menyentuh elemen n, padahal elemen tersebut tidak ada. Selalu pertahankan perbandingan yang ketat.

Perlindungan Murah

Percabangan tersebut hampir tidak memerlukan biaya karena utas tambahan jarang ada dan segera keluar. Keamanan yang diperoleh jauh lebih berharga daripada biaya kecil itu. ✅

Jadikan Refleks

Anggap pemeriksaan batas sebagai bagian dari rumus indeks itu sendiri. Hitung i, lalu segera lindungi nilainya sebelum melakukan hal lain.

Pemeriksaan Cepat

Pilih penjaga yang benar.

Ringkasan

Anda telah mempelajari cara menambahkan if (i < n) setelah menghitung indeks. Satu baris ini menghentikan pembacaan dan penulisan di luar rentang yang tidak akan pernah diperingatkan oleh GPU kepada Anda. 🛡️

Gratis untuk memulai

Belajar C++ 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 “Lindungi dari Indeks di Luar Rentang” gratis?

Ya — teks lengkap “Lindungi dari Indeks di Luar Rentang” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus CUDA Academy, upgrade ke CoddyKit PRO. Kursus CUDA Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Lindungi dari Indeks di Luar Rentang”?

Pemeriksaan batas if (i < n). Kamu berlatih CUDA 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 CUDA Academy?

Tidak diperlukan pengalaman sebelumnya. CUDA 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 “Lindungi dari Indeks di Luar Rentang” 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 CUDA Academy ini?

Ya. Setiap pelajaran CUDA 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. Rumus Indeks Klasik
  2. Lindungi dari Indeks di Luar Rentang
  3. Bulatkan Jumlah Blok ke Atas
  4. Perulangan Grid-Stride
← Kembali ke CUDA Academy