CUDA Academy · Pelajaran

printf di Dalam Kernel

Lihat keluaran dari thread perangkat.

Pelajaran 3 dari 413 langkah

printf di Dalam Kernel 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.

Mencetak dari GPU

Percaya atau tidak, Anda dapat memanggil printf tepat di dalam kernel. Ini cara paling sederhana untuk melihat sekilas apa yang dilakukan thread Anda. 👀

__global__ void hi() {
    printf("Hello from the GPU\n");
}

Setiap Thread Mencetak

Ingat, kernel berjalan di setiap thread, jadi satu baris printf dijalankan sekali per thread. Jika meluncurkan 256 thread, Anda mendapatkan 256 baris.

hi<<<1, 256>>>(); // 256 hellos

Identifikasi Setiap Thread

Sertakan threadIdx dalam pesan agar Anda dapat membedakan thread. Jika tidak, keluarannya hanya berupa dinding baris yang sama.

printf("thread %d\n", threadIdx.x);

Urutan Keluaran Tidak Tetap

Thread berjalan secara paralel, jadi urutannya saat dicetak tidak dapat diprediksi. Jangan mengandalkan baris yang tiba sesuai urutan indeks.

String Format Dapat Digunakan

printf perangkat mendukung penentu format biasa seperti %d, %f, dan %s. Cara kerjanya sama seperti printf pada host.

printf("i=%d val=%f\n", i, x[i]);

Keluaran Dikirim ke Penyangga

Keluaran perangkat ditempatkan sementara dalam penyangga GPU dan baru dikirim ke konsol Anda kemudian, bukan tepat saat printf dijalankan. Itu normal.

Anda Harus Menunggu untuk Melihatnya

Karena peluncuran berlangsung secara asinkron, Anda tidak akan melihat hasil cetak sampai GPU selesai. Panggil cudaDeviceSynchronize untuk mengosongkan penyangga tersebut.

hi<<<1, 4>>>();
cudaDeviceSynchronize();

Batasi Pencetakan Berat

Mencetak dari jutaan thread akan membanjiri penyangga. Batasi agar hanya thread 0 yang mencetak, atau agar hanya beberapa thread yang melakukannya.

if (threadIdx.x == 0) printf("block done\n");

Sangat Baik untuk Penelusuran Kesalahan Cepat

printf adalah alat penelusuran kesalahan tercepat Anda: tambahkan satu untuk memeriksa indeks atau nilai, pastikan masalahnya, lalu hapus.

printf("i=%d should be < n=%d\n", i, n);

Memperlambat Kernel

Pencetakan yang berlebihan sangat merusak kinerja. Gunakan untuk menemukan masalah, lalu hapus sebelum mengukur kecepatan sebenarnya.

GPU Lama Mungkin Berbeda

printf perangkat memerlukan kapabilitas komputasi yang cukup modern (2.0 atau lebih tinggi). Hampir semua GPU saat ini mendukungnya dengan baik.

Pemeriksaan Cepat

Periksa pemahaman Anda tentang printf perangkat.

Rangkuman: printf Kernel

Gunakan printf untuk melihat isi thread, tambahkan threadIdx untuk membedakannya, sinkronkan untuk mengosongkan penyangga, dan hapus sebelum mengukur waktu. Alat yang berguna! 🎉

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 “printf di Dalam Kernel” gratis?

Ya — teks lengkap “printf di Dalam Kernel” 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 “printf di Dalam Kernel”?

Lihat keluaran dari thread perangkat. 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 “printf di Dalam Kernel” 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. Anatomi Kernel
  2. Peluncuran dengan Tiga Kurung Sudut
  3. printf di Dalam Kernel
  4. Penjelasan cudaDeviceSynchronize
← Kembali ke CUDA Academy