CUDA Academy · Pelajaran

Makro CUDA_CHECK yang Dapat Digunakan Kembali

Bungkus setiap pemanggilan demi keamanan.

Pelajaran 3 dari 413 langkah

Makro CUDA_CHECK yang Dapat Digunakan Kembali adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Memeriksa Setiap Pemanggilan Itu Merepotkan

Menulis pernyataan if setelah setiap pemanggilan CUDA dengan cepat membuat kode Anda berantakan. Makro CUDA_CHECK yang dapat digunakan kembali mengatasinya dengan satu baris yang rapi. 🧹

Tujuan Makro

Anda ingin membungkus pemanggilan apa pun, mengambil kode hasil-nya, lalu segera berhenti dengan jelas jika pemanggilan tersebut gagal. Satu makro dapat melakukan ini di mana saja.

CUDA_CHECK(cudaMalloc(&d, n));

Mengambil Hasil

Di dalamnya, makro menyimpan hasil pemanggilan dalam cudaError_t lokal agar dapat diperiksa sekali tanpa melakukan pemanggilan dua kali.

cudaError_t e = (call);

Membandingkan dengan Keberhasilan

Makro kemudian menguji kode tersebut terhadap cudaSuccess. Jika sama, tidak terjadi apa-apa dan program Anda melanjutkan seperti biasa.

if (e != cudaSuccess) { /* report */ }

Mencetak Lokasi Kegagalan

Saat gagal, makro mencetak pesan yang mudah dibaca menggunakan __FILE__ dan __LINE__, sehingga Anda dapat langsung menuju baris yang bermasalah.

printf("CUDA error %s at %s:%d\n", msg, __FILE__, __LINE__);

Trik do-while(0)

Isi makro dibungkus dalam do-while(0). Dengan begitu, makro menjadi satu pernyataan yang bekerja dengan aman bahkan di dalam if tanpa kurung kurawal.

#define CUDA_CHECK(c) do { /* ... */ } while(0)

Contoh Makro Lengkap

Gabungkan semuanya dan Anda mendapatkan jaring pengaman yang ringkas serta dapat digunakan kembali, yang dapat ditempelkan ke header proyek CUDA mana pun.

#define CUDA_CHECK(c) do { cudaError_t e=(c); if(e) exit(1); } while(0)

Membungkus Pemanggilan API

Gunakan pada pemanggilan apa pun yang mengembalikan kode: cudaMalloc, cudaMemcpy, cudaFree. Satu pembungkus melindungi semuanya secara seragam.

CUDA_CHECK(cudaMemcpy(d, h, n, cudaMemcpyHostToDevice));

Lindungi Peluncuran Juga

Kernel tidak mengembalikan apa pun, jadi bungkus cudaGetLastError dan sinkronisasi setelah peluncuran, bukan baris peluncurannya.

kernel<<<g, b>>>();
CUDA_CHECK(cudaGetLastError());

Simpan dalam Header

Letakkan makro dalam header bersama agar setiap berkas menggunakan pemeriksaan yang sama. Konsistensi di sini menghemat waktu berjam-jam saat menelusuri galat yang membingungkan.

Gagal dengan Cepat, Gagal dengan Jelas

Keuntungan utamanya adalah gagal dengan cepat: saat pemanggilan rusak, Anda langsung mendapatkan berkas, baris, dan pesan yang tepat, bukan data sampah yang diam-diam dihasilkan.

Pemeriksaan Cepat

Uji pemahaman Anda tentang makro CUDA_CHECK.

Ringkasan: Satu Makro untuk Melindungi Semuanya

Makro CUDA_CHECK mengambil kode, membandingkannya dengan keberhasilan, lalu mencetak berkas dan baris saat terjadi kegagalan. Definisikan sekali, gunakan di mana saja. 🎉

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 “Makro CUDA_CHECK yang Dapat Digunakan Kembali” gratis?

Ya — teks lengkap “Makro CUDA_CHECK yang Dapat Digunakan Kembali” 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 “Makro CUDA_CHECK yang Dapat Digunakan Kembali”?

Bungkus setiap pemanggilan demi keamanan. 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 3 dari 4.

Berapa lama pelajaran “Makro CUDA_CHECK yang Dapat Digunakan Kembali” 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. Kode Kembalian versus Kesalahan Asinkron
  2. cudaGetLastError Setelah Peluncuran
  3. Makro CUDA_CHECK yang Dapat Digunakan Kembali
  4. Uraikan cudaGetErrorString
← Kembali ke CUDA Academy