Menggabungkan Filter ke dalam Satu Kernel
Mengurangi peluncuran dan lalu lintas global
Menggabungkan Filter ke dalam Satu Kernel adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.
Mengapa Harus Menggabungkan Kernel
Menjalankan lima kernel berarti melakukan lima peluncuran dan lima perjalanan pulang-pergi ke memori global. Menggabungkan filter ke dalam satu kernel mengurangi keduanya, sehingga sering kali memberikan peningkatan kecepatan yang besar. 🚀
Overhead Peluncuran Terus Bertambah
Setiap peluncuran kernel memerlukan waktu beberapa mikrodetik. Pada citra kecil, overhead peluncuran tetap tersebut dapat jauh lebih besar daripada pekerjaan sebenarnya, sehingga lebih sedikit peluncuran berarti lebih banyak waktu yang bermanfaat.
Lalu Lintas Global Adalah Musuh
Tahapan terpisah menulis sebuah piksel ke memori global lalu langsung membacanya kembali. Penggabungan membuat nilai tersebut tetap berada di dalam register, sehingga perjalanan pulang-pergi yang sia-sia sepenuhnya dihilangkan.
Muat Sekali untuk Setiap Thread
Dalam kernel gabungan, setiap thread membaca pikselnya satu kali saja. Satu pemuatan tersebut kemudian menjadi masukan bagi setiap filter secara berurutan tanpa menyentuh memori global lagi.
float v = input[idx];Rangkai Operasi di Dalam Register
Terapkan setiap filter pada nilai yang sudah tersedia. Piksel mengalir melalui kecerahan, gamma, dan kontras sebagai operasi matematika biasa, semuanya disimpan di dalam register yang cepat.
v = v * brightness;
v = powf(v, gamma);
v = (v - 0.5f) * contrast + 0.5f;Tulis Sekali di Akhir
Setelah seluruh rangkaian selesai dijalankan, simpan hasil akhirnya. Satu penyimpanan menggantikan banyak penulisan yang akan dilakukan oleh kernel terpisah.
output[idx] = v;Filter Per Piksel Mudah Digabungkan
Filter yang hanya menyentuh satu piksel bersifat per piksel dan dapat digabungkan tanpa banyak kesulitan. Penyesuaian kecerahan, gamma, dan warna adalah yang paling mudah untuk digabungkan.
Filter Bertetangga Lebih Sulit
Pengaburan membaca piksel di sekitarnya, sehingga penggabungannya memerlukan ubin memori bersama, bukan hanya register. Gabungkan tahapan per piksel dengan bebas dan tangani stencil dengan lebih hati-hati.
Perhatikan Tekanan Register
Kernel gabungan yang besar menggunakan lebih banyak register untuk setiap thread. Jika terlalu banyak, okupansi menurun atau nilai-nilai meluber ke memori, jadi lakukan penggabungan secara agresif tetapi tetap perhatikan biayanya.
Verifikasi Setelah Penggabungan
Penggabungan mengubah urutan pekerjaan, jadi selalu bandingkan keluaran gabungan dengan versi bertahap. Perbandingan cepat memastikan perhitungannya masih sama sebelum Anda merayakannya.
Satu Kernel, Banyak Filter
Manfaatnya nyata: satu peluncuran membaca, mengubah, dan menulis setiap piksel tepat satu kali. Itulah inti dari kernel citra gabungan yang disetel dengan baik.
Pemeriksaan Cepat
Anda menggabungkan tiga filter per piksel ke dalam satu kernel. Apa manfaat utama dari sisi kinerja?
Rangkuman
Anda telah mempelajari cara menggabungkan filter: memuat sekali, merangkai operasi matematika per piksel di dalam register, lalu menulis sekali. Cara ini mengurangi peluncuran dan lalu lintas global, tetapi perhatikan tekanan register dan verifikasi keluarannya. ✅
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 “Menggabungkan Filter ke dalam Satu Kernel” gratis?
Ya — teks lengkap “Menggabungkan Filter ke dalam Satu 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 “Menggabungkan Filter ke dalam Satu Kernel”?
Mengurangi peluncuran dan lalu lintas global 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 2 dari 4.
Berapa lama pelajaran “Menggabungkan Filter ke dalam Satu 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
- Merancang Alur Pemrosesan
- Menggabungkan Filter ke dalam Satu Kernel
- Mengalirkan Tile untuk Gambar Besar
- Membuat Profil, Mengoptimalkan, Mengirimkan