Warp, Lajur, dan Masker
Unit 32-thread dan masker aktif.
Warp, Lajur, dan Masker adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Utas Berjalan dalam Warp
GPU tidak menjadwalkan utas satu per satu. GPU mengelompokkannya ke dalam warp yang terdiri dari 32 utas dan bergerak bersama, menjalankan instruksi yang sama secara serempak.
Mengapa 32 Penting
Pada perangkat keras NVIDIA, warp selalu terdiri dari 32 utas. Warp adalah unit eksekusi yang sebenarnya, jadi kernel yang baik berpikir dalam kelompok berisi 32, bukan utas tunggal.
Setiap Utas Adalah Lane
Di dalam warp, setiap utas memiliki posisi dari 0 hingga 31 yang disebut lane. ID lane menentukan kepada siapa primitif warp mengirim atau dari siapa menerima data.
int lane = threadIdx.x % 32;Menemukan ID Lane
Anda dapat membaca lane secara langsung dari register khusus alih-alih menghitungnya. Register laneid selalu berisi nilai 0 hingga 31 untuk utas saat ini.
Eksekusi Serempak Memiliki Kekurangan
Utas berbagi satu penghitung program untuk setiap warp. Saat pernyataan if mengarahkan lane ke jalur yang berbeda, warp berdivergensi dan menjalankan setiap jalur secara bergantian, sehingga kecepatan menurun.
Masker Aktif
Tidak setiap lane selalu berjalan. Masker 32-bit menandai lane yang sedang aktif, dengan satu bit untuk setiap lane yang bernilai 1 saat lane tersebut berpartisipasi.
Mengapa Masker Ada
Setelah divergensi, hanya beberapa lane yang masih aktif. Primitif warp perlu mengetahui dengan tepat siapa yang hadir, jadi Anda memberikan masker aktif agar tetap benar.
Masker Penuh
Saat Anda yakin semua 32 lane aktif, maskernya adalah 0xffffffff, dengan setiap bit bernilai 1. Masker penuh ini adalah nilai yang paling sering Anda berikan.
unsigned mask = 0xffffffff;Membangun Masker dengan Aman
Di dalam percabangan, jangan menebak maskernya. Panggil activemask untuk menangkap dengan tepat lane mana yang baru saja mencapai titik ini.
unsigned mask = __activemask();Lane Berkomunikasi Tanpa Memori
Keuntungan utamanya adalah lane dalam satu warp dapat bertukar data secara langsung melalui register. Tidak diperlukan memori bersama maupun penghalang untuk pertukaran lokal warp.
Sync Berarti Tingkat Warp
Akhiran sync pada intrinsik ini adalah jabat tangan tingkat warp, bukan penghalang blok. Akhiran ini hanya mengoordinasikan lane yang disebutkan dalam masker yang Anda berikan.
Pemeriksaan Singkat
Ingat kembali apa itu warp dan berapa ukurannya pada GPU NVIDIA.
Rangkuman
Warp terdiri dari 32 lane yang berjalan serempak, dan masker melacak lane yang aktif. Dasar ini memungkinkan lane berbagi data dengan cepat. Berikutnya: pengocokan untuk reduksi. ✨
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 “Warp, Lajur, dan Masker” gratis?
Ya — teks lengkap “Warp, Lajur, dan Masker” 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 “Warp, Lajur, dan Masker”?
Unit 32-thread dan masker aktif. 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 1 dari 4.
Berapa lama pelajaran “Warp, Lajur, dan Masker” 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