CUDA Academy · Pelajaran

Menggabungkan Penapis ke dalam Satu Kernel

Mengurangkan pelancaran dan trafik global

Pelajaran 2 daripada 413 langkah

Menggabungkan Penapis ke dalam Satu Kernel ialah pelajaran CUDA Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran CUDA Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus CUDA Academy merangkumi sejumlah 4 pelajaran.

Mengapa Perlu Menggabungkannya

Menjalankan lima inti bermaksud lima pelancaran dan lima perjalanan pergi balik ke memori global. Menggabungkan penapis ke dalam satu inti mengurangkan kedua-duanya, dan sering memberikan peningkatan kelajuan yang besar. 🚀

Overhed Pelancaran Bertambah

Setiap pelancaran inti mengambil masa beberapa mikrosaat. Pada imej kecil, overhed pelancaran tetap itu boleh jauh melebihi kerja sebenar, jadi lebih sedikit pelancaran bermaksud lebih banyak masa yang berguna.

Trafik Global ialah Musuh

Peringkat berasingan menulis piksel ke memori global kemudian membacanya semula serta-merta. Penggabungan mengekalkan nilai itu dalam daftar, lalu menghapuskan sepenuhnya perjalanan pergi balik yang membazir.

Muat Sekali bagi Setiap Utas

Dalam inti yang digabungkan, setiap utas membaca pikselnya sekali sahaja. Pemuatan itu kemudiannya membekalkan setiap penapis mengikut turutan tanpa menyentuh memori global lagi.

float v = input[idx];

Rantaikan Operasi dalam Daftar

Terapkan setiap penapis pada nilai yang sudah tersedia. Piksel mengalir melalui kecerahan, gama dan kontras sebagai matematik biasa, semuanya disimpan dalam daftar yang pantas.

v = v * brightness;
v = powf(v, gamma);
v = (v - 0.5f) * contrast + 0.5f;

Tulis Sekali pada Akhir

Selepas keseluruhan rantaian dijalankan, simpan hasil akhir. Satu penyimpanan menggantikan banyak penulisan yang akan dilakukan oleh inti berasingan.

output[idx] = v;

Penapis Titik Mudah Digabungkan

Penapis yang hanya menyentuh satu piksel ialah penapis titik dan mudah digabungkan. Pelarasan kecerahan, gama dan warna ialah gabungan yang paling mudah untuk dilakukan.

Penapis Kejiranan Lebih Sukar

Kabur membaca piksel berdekatan, jadi penggabungannya memerlukan jubin memori kongsi, bukan daftar sahaja. Gabungkan peringkat titik secara bebas dan kendalikan stensil dengan lebih berhati-hati.

Awasi Tekanan Daftar

Inti gabungan yang besar menggunakan lebih banyak daftar bagi setiap utas. Jika terlalu banyak, kehunian menurun atau nilai melimpah keluar, jadi lakukan penggabungan secara agresif tetapi terus pantau kosnya.

Sahkan Selepas Menggabungkan

Penggabungan menyusun semula kerja, jadi sentiasa bandingkan output gabungan dengan versi berperingkat. Perbezaan pantas mengesahkan bahawa pengiraan masih sepadan sebelum anda meraikannya.

Satu Inti, Banyak Penapis

Hasilnya benar-benar ketara: satu pelancaran membaca, mengubah dan menulis setiap piksel tepat sekali. Itulah inti pati inti imej yang digabungkan dengan baik.

Semakan Pantas

Anda menggabungkan tiga penapis titik ke dalam satu inti. Apakah peningkatan prestasi utama?

Imbas Kembali

Anda telah mempelajari cara menggabungkan penapis: muat sekali, rantaikan pengiraan titik dalam daftar, dan tulis sekali. Cara ini mengurangkan pelancaran serta trafik global, tetapi awasi tekanan daftar dan sahkan output. ✅

Percuma untuk bermula

Pelajari C++ dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Menggabungkan Penapis ke dalam Satu Kernel” percuma?

Ya — teks penuh “Menggabungkan Penapis ke dalam Satu Kernel” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus CUDA Academy, tingkat taraf kepada CoddyKit PRO. Kursus CUDA Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Menggabungkan Penapis ke dalam Satu Kernel”?

Mengurangkan pelancaran dan trafik global Anda berlatih CUDA Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan CUDA Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran CUDA Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Menggabungkan Penapis ke dalam Satu Kernel” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran CUDA Academy ini?

Ya. Setiap pelajaran CUDA Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mereka Bentuk Saluran Pemprosesan
  2. Menggabungkan Penapis ke dalam Satu Kernel
  3. Menstrim Jubin untuk Imej Besar
  4. Profil, Optimumkan, Hantar
← Kembali ke CUDA Academy