Lindungi dari Indeks di Luar Rentang
Pemeriksaan batas if (i < n).
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. 🛡️
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
- Rumus Indeks Klasik
- Lindungi dari Indeks di Luar Rentang
- Bulatkan Jumlah Blok ke Atas
- Perulangan Grid-Stride