Kelompok Kooperatif
API modern untuk cakupan sinkronisasi yang fleksibel.
Kelompok Kooperatif 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.
API Sinkronisasi yang Lebih Bersih
Masker mentah dan intrinsik dapat digunakan, tetapi cukup merepotkan. Cooperative groups membungkus thread menjadi objek yang dapat Anda beri nama, tentukan ukurannya, dan sinkronkan secara eksplisit.
#include <cooperative_groups.h>
namespace cg = cooperative_groups;Ambil Seluruh Blok
Mulailah dengan mendapatkan pegangan ke blok thread Anda. this_thread_block mengembalikan grup yang dapat Anda sinkronkan seperti syncthreads, tetapi dalam bentuk objek.
cg::thread_block block = cg::this_thread_block();Sinkronkan melalui Grup
Memanggil sync pada blok merupakan penghalang modern. Fungsinya persis seperti syncthreads, tetapi terbaca jelas sebagai method pada grup yang Anda maksud.
block.sync();Pisahkan Tile Warp
Anda dapat membagi blok menjadi tiles berukuran tetap. Tile dengan 32 lane memberi Anda grup seukuran warp dengan method yang jelas, bukan masker pengocokan mentah.
auto warp = cg::tiled_partition<32>(block);Method Menggantikan Masker
Grup bertile menyediakan shfl_down dan fungsi terkait tanpa argumen masker. Grup tersebut sudah mengetahui anggotanya, sehingga API tetap singkat dan aman.
val += warp.shfl_down(val, offset);Ketahui Posisi Anda
Setiap grup menyediakan anggotanya dan posisi Anda. thread_rank memberikan indeks Anda di dalam grup, sedangkan size mengembalikan jumlah thread yang dimilikinya.
int rank = warp.thread_rank();Tile yang Lebih Kecil Juga
Tile tidak harus berukuran 32. tiled_partition berukuran 8 atau 16 membuat grup sub-warp, berguna ketika data Anda secara alami mengelompok dalam himpunan kecil.
Reduksi Tingkat Grup
Pustaka ini menyediakan operasi kolektif siap pakai. reduce pada grup menjumlahkan sebuah tile dalam satu pemanggilan dan menyembunyikan perulangan offset yang sebelumnya Anda tulis sendiri.
int total = cg::reduce(warp, val, cg::plus<int>());Grid yang Dapat Disinkronkan
Grup yang paling kuat adalah grid group. Dengan peluncuran kooperatif, setiap blok dapat disinkronkan pada satu penghalang, sesuatu yang tidak dapat dilakukan kernel biasa.
Peluncuran Kooperatif Diperlukan
Sinkronisasi seluruh grid hanya berfungsi jika Anda memulai kernel dengan cudaLaunchCooperativeKernel dan GPU mendukungnya. Peluncuran biasa tidak mengizinkannya.
Mengapa Perlu Repot
Cooperative groups membuat kode warp readable dan portabel: tanpa masker yang dikelola manual, cakupan yang jelas, serta operasi kolektif yang dapat digunakan kembali dan sesuai dengan maksud Anda.
Pemeriksaan Cepat
Ingat bagaimana Anda membuat grup kooperatif seukuran warp dari sebuah blok.
Rangkuman
Cooperative groups mengubah masker menjadi objek bernama: membagi blok menjadi tile, memanggil reduce, bahkan menyinkronkan seluruh grid. Kini Anda menguasai CUDA tingkat warp. ✨
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 “Kelompok Kooperatif” gratis?
Ya — teks lengkap “Kelompok Kooperatif” 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 “Kelompok Kooperatif”?
API modern untuk cakupan sinkronisasi yang fleksibel. 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 “Kelompok Kooperatif” 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
- Warp, Lajur, dan Masker
- __shfl_down_sync untuk Reduksi
- Fungsi Ballot dan Vote
- Kelompok Kooperatif