Tumpangtindihkan Penyalinan dan Penghitungan
Sembunyikan transfer di balik kernel.
Tumpangtindihkan Penyalinan dan Penghitungan adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Gagasan Utama
Peningkatan kecepatan nyata berasal dari melakukan dua hal sekaligus: menyalin satu bagian data saat GPU menghitung bagian lainnya. 🔀
Mesin Perangkat Keras Terpisah
GPU memiliki mesin penyalinan dan unit komputasi yang terpisah. Tumpang tindih dapat terjadi karena keduanya benar-benar dapat berjalan paralel, bukan sekadar bergantian.
Memori Terpin Diperlukan
Penyalinan asinkron memerlukan memori host yang terpin dari cudaMallocHost. malloc biasa yang dapat dipindahkan memaksa penyalinan memblokir sehingga tidak dapat tumpang tindih.
cudaMallocHost(&h_data, bytes);Penyalinan Asinkron
Gunakan cudaMemcpyAsync dengan stream agar transfer langsung kembali dan masuk ke antrean stream tersebut bersama kernel.
cudaMemcpyAsync(d_in, h_in, bytes, cudaMemcpyHostToDevice, s);Bagi Pekerjaan Menjadi Beberapa Bagian
Bagi larik menjadi beberapa bagian dan berikan setiap bagian stream-nya sendiri. Saat stream 0 melakukan komputasi, stream 1 sudah dapat melakukan penyalinan.
Salin, Hitung, Salin Kembali
Setiap bagian melakukan tiga langkah yang sama dalam stream-nya: unggah input, jalankan kernel, lalu unduh output, semuanya tanpa memblokir host.
cudaMemcpyAsync(d, h, n, H2D, s);
k<<<g, b, 0, s>>>(d);
cudaMemcpyAsync(h, d, n, D2H, s);Bagaimana Tumpang Tindih Terbentuk
Karena bagian-bagian tersebut berada dalam stream yang berbeda, GPU dapat menyalin bagian kedua saat masih menghitung bagian pertama. Linimasa pun terisi. 📊
Menyembunyikan Biaya PCIe
Transfer tidak lagi menambah total waktu; transfer berlangsung di balik komputasi. Idealnya, waktu eksekusi Anda menyusut hingga kira-kira sama dengan durasi yang lebih lama antara penyalinan dan kernel.
Perhatikan Stream Bawaan
Satu pemanggilan stream bawaan yang terselip di tengah perulangan dapat kembali membuat semuanya berjalan berurutan. Kaitkan setiap operasi asinkron dengan stream nyata yang bukan stream bawaan.
Verifikasi dengan Alat Pembuat Profil
Buka Nsight Systems dan cari jalur penyalinan serta komputasi yang tumpang tindih waktunya. Jalur yang bertumpuk dan sibuk menandakan konkurensi Anda benar-benar terjadi.
Sinkronkan di Akhir
Setelah memasukkan semua bagian, panggil cudaDeviceSynchronize sekali agar setiap stream selesai sebelum Anda membaca hasil akhir di host.
cudaDeviceSynchronize();Pemeriksaan Singkat
Apa yang diperlukan transfer asinkron agar dapat tumpang tindih dengan komputasi?
Ringkasan
Dengan membagi pekerjaan ke beberapa stream menggunakan memori terpin dan penyalinan asinkron, Anda menyembunyikan transfer di balik komputasi dan membuat GPU benar-benar sibuk. 🚀
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 “Tumpangtindihkan Penyalinan dan Penghitungan” gratis?
Ya — teks lengkap “Tumpangtindihkan Penyalinan dan Penghitungan” 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 “Tumpangtindihkan Penyalinan dan Penghitungan”?
Sembunyikan transfer di balik kernel. 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 4 dari 4.
Berapa lama pelajaran “Tumpangtindihkan Penyalinan dan Penghitungan” 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