printf di Dalam Kernel
Lihat keluaran dari thread perangkat.
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 hellosIdentifikasi 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! 🎉
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
- Anatomi Kernel
- Peluncuran dengan Tiga Kurung Sudut
- printf di Dalam Kernel
- Penjelasan cudaDeviceSynchronize