Rumus Indeks Klasik
blockIdx.x * blockDim.x + threadIdx.x.
Rumus Indeks Klasik 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.
Satu Utas, Satu Elemen
Inti dari kernel CUDA adalah setiap utas menangani satu bagian data. Untuk melakukannya, setiap utas memerlukan indeks global yang unik.
Mengapa ID Lokal Tidak Cukup
Di dalam sebuah blok, threadIdx.x hanya menghitung dari 0 hingga blockDim dikurangi satu. Banyak blok menggunakan kembali angka kecil yang sama, sehingga angka tersebut tidak dapat menjadi indeks akhir Anda.
Blok Berjajar Berdampingan
Bayangkan kisi sebagai blok-blok yang disusun ujung ke ujung. Setiap blok memiliki bagian larik yang berurutan, dan blockIdx.x memberi tahu Anda bagian mana yang sedang digunakan.
Seberapa Lebar Sebuah Blok?
blockDim.x adalah jumlah utas per blok. Nilai ini merupakan lebar setiap bagian, sehingga mengalikan pergeseran blok Anda ke posisi yang tepat.
Rumus Klasik
Gabungkan ketiganya: lewati blok-blok sebelumnya, lalu tambahkan posisi Anda di dalam blok ini. Satu baris tersebut memberikan indeks unik kepada setiap utas.
int i = blockIdx.x * blockDim.x + threadIdx.x;Menelusurinya
Dengan 4 utas per blok, blok 0 mencakup 0 hingga 3, blok 1 mencakup 4 hingga 7, dan blok 2 mencakup 8 hingga 11. Pergeseran tersebut tidak pernah tumpang tindih.
Contoh Konkret
Utas 2 di blok 3 dengan blockDim 256 berada pada 3 dikali 256 ditambah 2, yaitu 770. Itulah posisi global utas tersebut dalam data.
// blockIdx.x=3, blockDim.x=256, threadIdx.x=2
int i = 3 * 256 + 2; // i == 770Menggunakan Indeks
Setelah memiliki i, perlakukan i sebagai subskrip larik. Setiap utas hanya membaca dan menulis elemennya sendiri, tanpa tumpang tindih.
out[i] = a[i] + b[i];Pemetaan Satu ke Satu
Jalankan n utas, dan rumus tersebut menghasilkan setiap nilai dari 0 hingga n dikurangi 1 tepat satu kali. Itulah cakupan larik yang benar-benar satu ke satu.
Urutannya Penting
Selalu lakukan perkalian sebelum penjumlahan. blockIdx.x * blockDim.x adalah awal bagian Anda, sedangkan threadIdx.x adalah langkah di dalamnya.
Melampaui Satu Dimensi
Gagasan yang sama berlaku untuk 2D dan 3D dengan menggunakan anggota .y dan .z, tetapi untuk larik satu dimensi, rumus .x saja sudah cukup. 🚀
Pemeriksaan Cepat
Hitung indeks global sebuah utas.
Ringkasan
Anda telah mempelajari rumus yang digunakan setiap kernel: blockIdx.x * blockDim.x + threadIdx.x. Rumus tersebut memberikan satu posisi unik dalam larik kepada setiap utas. 🎉
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 “Rumus Indeks Klasik” gratis?
Ya — teks lengkap “Rumus Indeks Klasik” 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 “Rumus Indeks Klasik”?
blockIdx.x * blockDim.x + threadIdx.x. 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 “Rumus Indeks Klasik” 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
- Rumus Indeks Klasik
- Lindungi dari Indeks di Luar Rentang
- Bulatkan Jumlah Blok ke Atas
- Perulangan Grid-Stride