Pipeline Penyangga Ganda
Bagi data menjadi potongan agar GPU terus mendapat pekerjaan.
Pipeline Penyangga Ganda 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.
Masalah GPU Menganggur
Salin larik besar, jalankan inti, lalu salin kembali. Selama setiap penyalinan, GPU berada dalam keadaan menganggur, sedangkan selama komputasi, mesin transfer juga menganggur.
Bagi Pekerjaan
Perbaikannya dimulai dengan memecah satu larik raksasa menjadi potongan yang lebih kecil. Setiap potongan dapat disalin dan diproses sendiri, sehingga tumpang tindih dapat dilakukan.
Dua Penyangga, Dua Jalur
Penyanggaan ganda menggunakan dua penyangga perangkat dan dua aliran. Saat aliran A menghitung satu potongan, aliran B menyalin potongan berikutnya ke dalam perangkat.
Tumpangtindihkan Penyalinan dan Komputasi
Keajaibannya adalah konkurensi: transfer dan inti berjalan bersamaan pada potongan yang berbeda. Waktu transfer tersembunyi di balik komputasi yang berguna.
Memori Terkunci Diperlukan
Ini hanya berfungsi jika data host berada dalam memori terkunci. Penyangga yang dapat dipindahkan ke penyimpanan sekunder memaksa penyalinan yang memblokir, dan seluruh alur kembali berjalan serial.
Perulangan Alur
Anda mengulangi setiap potongan, lalu pada setiap langkah mengeluarkan penyalinan asinkron masuk, sebuah inti, dan penyalinan asinkron keluar, semuanya pada aliran yang sama.
cudaMemcpyAsync(d_in, h_in + off, csz, H2D, s);
proc<<<g, b, 0, s>>>(d_in, d_out);
cudaMemcpyAsync(h_out + off, d_out, csz, D2H, s);Ganti-Gantikan Aliran
Tetapkan setiap potongan ke sebuah aliran dengan cara bergantian. Potongan bernomor genap masuk ke aliran 0, sedangkan potongan bernomor ganjil masuk ke aliran 1, sehingga potongan yang berdekatan dapat tumpang tindih dengan baik.
cudaStream_t s = streams[i % 2];Mengapa Dua Sudah Cukup
Dua aliran sudah dapat menumpangtindihkan penyalinan dengan komputasi. Penyangga tambahan menambah kedalaman, tetapi memberikan hasil yang semakin kecil dan memerlukan memori tambahan, jadi mulailah dengan dua.
Kosongkan di Akhir
Setelah mengantrekan semua potongan, tunggu sampai seluruh pekerjaan selesai sebelum membaca hasil. cudaDeviceSynchronize sederhana akan mengosongkan semua aliran sekaligus.
cudaDeviceSynchronize();Peningkatan Kecepatan
Dengan penyalinan tersembunyi di balik komputasi, waktu total mendekati biaya dari bagian yang lebih lama di antara keduanya, bukan jumlah keduanya. Itulah keuntungan sebenarnya. 🚀
Kapan Paling Menguntungkan
Penyanggaan ganda paling unggul ketika waktu transfer dan waktu komputasi kira-kira seimbang. Jika salah satunya sangat mendominasi, fokuskan upaya Anda terlebih dahulu untuk memperkecil bagian tersebut.
Pemeriksaan Singkat
Apa manfaat utama dari alur penyanggaan ganda?
Rangkuman
Bagi data menjadi beberapa potongan, gunakan dua penyangga dan aliran yang terkunci, lalu tumpangtindihkan penyalinan dengan komputasi. Lakukan sinkronisasi di akhir dan lihat waktu transfer menghilang. 🎉
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 “Pipeline Penyangga Ganda” gratis?
Ya — teks lengkap “Pipeline Penyangga Ganda” 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 “Pipeline Penyangga Ganda”?
Bagi data menjadi potongan agar GPU terus mendapat pekerjaan. 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 “Pipeline Penyangga Ganda” 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
- Mengapa Memori Pageable Lambat
- Memori Terkunci dengan cudaMallocHost
- cudaMemcpyAsync dalam Aliran
- Pipeline Penyangga Ganda