Kode Kembalian versus Kesalahan Asinkron
Mengapa kernel secara bawaan dapat gagal tanpa pesan.
Kode Kembalian versus Kesalahan Asinkron adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Dua Cara CUDA Gagal
CUDA melaporkan masalah dalam dua bentuk: kode hasil langsung dari pemanggilan API dan galat asinkron tertunda dari kernel. Memahami keduanya adalah hal penting. 🧭
Pemanggilan API Mengembalikan Kode
Sebagian besar pemanggilan runtime CUDA mengembalikan cudaError_t. Nilai cudaSuccess berarti semuanya baik; nilai lainnya menandakan masalah yang dapat Anda tangani.
cudaError_t err = cudaMalloc(&d, n);Periksa Segera
Untuk pemanggilan sinkron seperti cudaMalloc, kode yang dikembalikan bersifat final. Bandingkan dengan cudaSuccess segera dan tangani sebelum melanjutkan.
if (err != cudaSuccess) return 1;Kernel Tidak Mengembalikan Apa Pun
Peluncuran kernel dengan kurung siku tiga tidak memiliki nilai hasil yang dapat Anda uji. Karena itu, kegagalan peluncuran tidak dapat dilaporkan dengan cara sederhana yang sama.
myKernel<<<g, b>>>(d); // no code to checkMengapa Kernel Bersifat Asinkron
Peluncuran bersifat asinkron: CPU mengantrekan pekerjaan lalu melaju. GPU bahkan mungkin belum mulai ketika baris berikutnya dijalankan.
Galat Datang Terlambat
Karena pekerjaan berjalan kemudian, kerusakan kernel menjadi galat asinkron. Galat tersebut muncul pada pemanggilan berikutnya, bukan pada baris peluncuran itu sendiri.
Diam secara Bawaan
Jika Anda tidak pernah memeriksanya, kernel yang rusak gagal secara diam-diam. Program Anda tampak berjalan, tetapi menghasilkan keluaran sampah atau nol.
Dua Jenis Galat Peluncuran
Peluncuran dapat gagal dalam dua tahap: konfigurasi yang salah dan tertangkap saat peluncuran, serta kesalahan runtime seperti akses di luar batas yang tertangkap saat eksekusi.
Galat yang Menetap
Kesalahan serius meninggalkan konteks dalam keadaan galat yang menetap. Setiap pemanggilan CUDA berikutnya kemudian mengembalikan galat yang sama sampai Anda memulai ulang.
Sinkronkan untuk Memaksa Galat Asinkron
Untuk menampilkan galat tersembunyi, panggil cudaDeviceSynchronize. Fungsi tersebut menunggu kernel dan mengembalikan galat runtime yang ditemuinya.
cudaError_t e = cudaDeviceSynchronize();Kebiasaan yang Andal
Aturan praktisnya: periksa kode hasil setiap pemanggilan API, lalu sinkronkan untuk menangkap galat kernel. Bersama-sama, keduanya memastikan tidak ada kegagalan yang terlewat.
Pemeriksaan Cepat
Uji pemahaman Anda tentang cara kernel melaporkan kegagalan.
Ringkasan: Dua Jalur Galat
Pemanggilan API memberikan kode hasil secara langsung, sedangkan kernel gagal secara asinkron. Periksa kode dan lakukan sinkronisasi agar tidak ada yang terlewat tanpa diketahui. 🎉
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 “Kode Kembalian versus Kesalahan Asinkron” gratis?
Ya — teks lengkap “Kode Kembalian versus Kesalahan Asinkron” 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 “Kode Kembalian versus Kesalahan Asinkron”?
Mengapa kernel secara bawaan dapat gagal tanpa pesan. 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 1 dari 4.
Berapa lama pelajaran “Kode Kembalian versus Kesalahan Asinkron” 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
- Kode Kembalian versus Kesalahan Asinkron
- cudaGetLastError Setelah Peluncuran
- Makro CUDA_CHECK yang Dapat Digunakan Kembali
- Uraikan cudaGetErrorString