CUDA Academy · Pelajaran

Kelompok Kooperatif

API modern untuk cakupan sinkronisasi yang fleksibel.

Pelajaran 4 dari 413 langkah

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. ✨

Gratis untuk memulai

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

  1. Warp, Lajur, dan Masker
  2. __shfl_down_sync untuk Reduksi
  3. Fungsi Ballot dan Vote
  4. Kelompok Kooperatif
← Kembali ke CUDA Academy