CUDA Academy · Pelajaran

Formula Indeks Klasik

blockIdx.x * blockDim.x + threadIdx.x.

Pelajaran 1 daripada 413 langkah

Formula Indeks Klasik ialah pelajaran CUDA Academy percuma di CoddyKit. Ini ialah pelajaran 1 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.

Satu Utas, Satu Elemen

Tujuan utama kernel CUDA ialah setiap utas mengendalikan satu bahagian data. Untuk melakukannya, setiap utas memerlukan indeks global yang unik.

Mengapa ID Setempat Tidak Mencukupi

Dalam satu blok, threadIdx.x hanya mengira dari 0 hingga blockDim tolak satu. Banyak blok menggunakan semula nombor kecil yang sama, jadi nombor itu tidak boleh menjadi indeks akhir anda.

Blok Bersebelahan

Bayangkan grid sebagai blok-blok yang disusun hujung ke hujung. Setiap blok memiliki bahagian tatasusunan yang bersebelahan, dan blockIdx.x memberitahu anda bahagian yang sedang digunakan.

Seberapa Lebar Satu Blok?

blockDim.x ialah bilangan utas bagi setiap blok. Nilai ini ialah lebar setiap bahagian, jadi ia menskalakan ofset blok anda ke lokasi yang betul.

Formula Klasik

Gabungkan ketiga-tiganya: langkau blok-blok terdahulu, kemudian tambah kedudukan anda dalam blok ini. Satu baris itu memberikan setiap utas indeks yang unik.

int i = blockIdx.x * blockDim.x + threadIdx.x;

Langkah demi Langkah

Dengan 4 utas bagi setiap blok, blok 0 meliputi 0 hingga 3, blok 1 meliputi 4 hingga 7, dan blok 2 meliputi 8 hingga 11. Ofset tidak pernah bertindih.

Contoh Nyata

Utas 2 dalam blok 3 dengan blockDim 256 berada pada 3 darab 256 tambah 2, iaitu 770. Itulah kedudukan global utas tersebut dalam data.

// blockIdx.x=3, blockDim.x=256, threadIdx.x=2
int i = 3 * 256 + 2; // i == 770

Menggunakan Indeks

Selepas memperoleh i, anda menggunakannya sebagai subskrip tatasusunan. Setiap utas hanya membaca dan menulis elemennya sendiri tanpa pertindihan.

out[i] = a[i] + b[i];

Pemetaan Satu dengan Satu

Apabila anda melancarkan n utas, formula ini menghasilkan setiap nilai dari 0 hingga n tolak 1 tepat sekali. Ini ialah liputan satu dengan satu yang sempurna bagi tatasusunan.

Urutan Itu Penting

Sentiasa lakukan pendaraban sebelum penambahan. blockIdx.x * blockDim.x ialah permulaan bahagian anda, manakala threadIdx.x ialah kedudukannya dalam bahagian tersebut.

Melangkaui Satu Dimensi

Idea yang sama boleh diperluas kepada 2D dan 3D menggunakan ahli .y dan .z, tetapi untuk tatasusunan rata, formula .x sahaja sudah mencukupi. 🚀

Semakan Pantas

Kira indeks global bagi satu utas.

Imbas Kembali

Anda telah mempelajari formula yang digunakan oleh setiap kernel: blockIdx.x * blockDim.x + threadIdx.x. Formula ini memberikan setiap utas satu slot unik dalam tatasusunan anda. 🎉

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 “Formula Indeks Klasik” percuma?

Ya — teks penuh “Formula Indeks Klasik” 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 “Formula Indeks Klasik”?

blockIdx.x * blockDim.x + threadIdx.x. 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 1 daripada 4.

Berapa lamakah pelajaran “Formula Indeks Klasik” 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. Formula Indeks Klasik
  2. Lindungi daripada Luar Julat
  3. Bundarkan Bilangan Blok ke Atas
  4. Gelung Langkah Grid
← Kembali ke CUDA Academy