CUDA Academy · Pelajaran

Menemukan Kebocoran dengan memcheck

Akses di luar batas dan penunjuk perangkat yang keliru

Pelajaran 2 dari 413 langkah

Menemukan Kebocoran dengan memcheck 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.

Mengapa memcheck Ada

Bug memori GPU jarang menyebabkan kerusakan yang jelas, jadi compute-sanitizer dengan alat memcheck mengawasi setiap akses dan melaporkan masalahnya untuk Anda. 🛡️

Perintah Modern

Jalankan program Anda dengan alat memcheck dengan menambahkan compute-sanitizer di awal perintah; alat ini merupakan pengganti modern untuk cuda-memcheck lama.

compute-sanitizer --tool memcheck ./vecadd

Pembacaan di Luar Batas

Bug klasik yang ditangkap memcheck adalah akses di luar batas, ketika sebuah thread membaca atau menulis melewati akhir larik perangkat.

Pemeriksaan Batas yang Terlewat

Lupa menambahkan penjaga memungkinkan thread tambahan berjalan tanpa kendali, sehingga indeks ini dapat melampaui n dan memicu penulisan global yang tidak valid.

int i = blockIdx.x * blockDim.x + threadIdx.x;
out[i] = a[i] + b[i];

Membaca Laporan

memcheck mencetak jenis error, alamat yang bermasalah, dan thread yang menyebabkannya, sehingga Anda dapat langsung menemukan akses yang salah.

Dapatkan Nomor Baris

Kompilasi dengan -lineinfo agar memcheck dapat memetakan setiap error kembali ke baris sumber yang tepat, bukan hanya ke alamat mentah.

nvcc -lineinfo vecadd.cu -o vecadd

Mendeteksi Kebocoran

Aktifkan opsi --leak-check agar memcheck melaporkan memori perangkat yang Anda alokasikan tetapi tidak pernah dibebaskan sebelum program keluar.

compute-sanitizer --leak-check full ./vecadd

Kebocoran Klasik

Alokasi tanpa pembebasan yang sesuai menyebabkan buffer bocor, dan setelah banyak iterasi hal itu perlahan menghabiskan memori perangkat.

cudaMalloc(&d_a, bytes);
// ...used, but cudaFree(d_a) is missing

Penunjuk Perangkat yang Tidak Valid

memcheck juga menandai pemberian penunjuk host ketika kernel mengharapkan penunjuk perangkat, yaitu kesalahan yang dapat merusak hasil tanpa terlihat.

Akses yang Tidak Selaras

Beberapa pemuatan memerlukan alamat yang selaras, sehingga memcheck memperingatkan tentang akses yang tidak selaras yang jika tidak terdeteksi dapat menghasilkan data sampah atau kesalahan.

Perbaiki dan Jalankan Ulang

Setelah setiap perbaikan, jalankan memcheck lagi hingga melaporkan nol error. Proses yang bersih menandakan bahwa bug memori telah hilang.

Pemeriksaan Singkat

Jenis bug apa yang terutama dirancang untuk ditemukan oleh alat memcheck?

Rangkuman

Anda menjalankan memcheck, menambahkan -lineinfo untuk baris sumber, mengaktifkan pemeriksaan kebocoran, dan mempelajari jenis error yang umum. Proses yang bersih berarti memori aman. ✅

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 “Menemukan Kebocoran dengan memcheck” gratis?

Ya — teks lengkap “Menemukan Kebocoran dengan memcheck” 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 “Menemukan Kebocoran dengan memcheck”?

Akses di luar batas dan penunjuk perangkat yang keliru 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 “Menemukan Kebocoran dengan memcheck” 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. Menelusuri Kernel Langkah demi Langkah di cuda-gdb
  2. Menemukan Kebocoran dengan memcheck
  3. Memburu Perlombaan dengan racecheck
  4. Menangkap Kesalahan Sinkronisasi dengan synccheck
← Kembali ke CUDA Academy