Jebakan Aliran Bawaan
Cara aliran 0 membuat semuanya berjalan berurutan.
Jebakan Aliran Bawaan 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.
Apa Itu Stream?
Stream adalah antrean kerja GPU yang berurutan. Operasi dalam stream yang sama berjalan satu demi satu, sesuai urutan saat Anda memasukkannya. ⏳
Stream Bawaan
Jika Anda tidak pernah menyebutkan stream, setiap pemanggilan masuk ke stream bawaan, yang juga disebut stream 0. Di sanalah semua pekerjaan Anda diam-diam berjalan.
Mengapa Ini Menjadi Jebakan
Stream bawaan bersifat menyinkronkan: stream ini menunggu hingga stream lain selesai, dan stream lain juga menunggunya. Tidak ada pekerjaan yang tumpang tindih, sehingga GPU menganggur di antara langkah-langkah.
Semuanya Berjalan Berurutan
Masukkan penyalinan, kernel, lalu penyalinan lain ke stream 0, dan semuanya berjalan benar-benar berturut-turut. GPU tidak pernah dapat memulai langkah kedua sebelum langkah pertama selesai.
cudaMemcpy(d_a, h_a, n, cudaMemcpyHostToDevice);
kernel<<<grid, block>>>(d_a);
cudaMemcpy(h_a, d_a, n, cudaMemcpyDeviceToHost);Perangkat Keras yang Terbuang
GPU modern memiliki mesin terpisah untuk komputasi dan penyalinan. Pada stream bawaan, mesin-mesin tersebut bergantian bekerja, bukan bekerja bersamaan.
Biaya Tersembunyi Penyalinan
Transfer data melalui PCIe berjalan lambat. Saat penyalinan tidak dapat tumpang tindih dengan komputasi, waktu transfer tersebut langsung menambah total waktu eksekusi Anda.
Sinkronisasi Implisit
Banyak pemanggilan pada stream bawaan juga bersifat memblokir di sisi host. cudaMemcpy hanya kembali setelah penyalinan selesai, sehingga CPU Anda terhenti.
Perilaku Lama
Secara bawaan, pekerjaan di stream mana pun menunggu stream 0, dan stream 0 menunggu stream tersebut. Aturan lama ini diam-diam menghancurkan konkurensi yang Anda kira sudah dimiliki.
Profil yang Menjadi Petunjuk
Dalam alat pembuat profil, jebakan stream bawaan tampak sebagai satu jalur sibuk dengan celah, sementara mesin penyalinan dan komputasi menganggur karena saling menunggu.
Jalan Keluar
Solusinya adalah memasukkan pekerjaan yang tidak saling bergantung ke stream terpisah. Dengan begitu, penyalinan dan kernel dapat berjalan bersamaan dan mengisi celah yang sebelumnya menganggur.
Stream Bawaan per Thread
Mengompilasi dengan --default-stream per-thread memberi setiap thread host stream bawaannya sendiri, sehingga jebakan ini berkurang tanpa perlu menulis ulang setiap pemanggilan.
nvcc --default-stream per-thread app.cu -o appPemeriksaan Singkat
Mengapa menempatkan semua pekerjaan pada stream bawaan menurunkan kinerja?
Ringkasan
Stream bawaan membuat pekerjaan GPU Anda berjalan berurutan dan mencegah tumpang tindih. Agar lebih cepat, selanjutnya Anda akan memindahkan tugas-tugas yang tidak saling bergantung ke stream masing-masing. 🚀
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Jebakan Aliran Bawaan” gratis?
Ya — teks lengkap “Jebakan Aliran Bawaan” 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 “Jebakan Aliran Bawaan”?
Cara aliran 0 membuat semuanya berjalan berurutan. 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 “Jebakan Aliran Bawaan” 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
- Jebakan Aliran Bawaan
- Buat dan Gunakan Aliran
- Peristiwa untuk Pengukuran Waktu dan Sinkronisasi
- Tumpangtindihkan Penyalinan dan Penghitungan