CUDA Academy · Pelajaran

Stencil dan Jendela Geser

Bagi lingkungan data menjadi ubin dengan sel halo.

Pelajaran 3 dari 413 langkah

Stencil dan Jendela Geser adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Apa Itu Stencil

Stencil menghitung setiap keluaran dari lingkungan masukan yang tetap, seperti menghitung rata-rata sebuah piksel dengan sel-sel di sekitarnya.

Jendela Bergeser

Saat Anda bergerak sepanjang array, jendela masukan bergeser satu posisi. Keluaran yang berurutan berbagi sebagian besar masukannya, sehingga penggunaan ulangnya sangat besar.

Sangat Cocok untuk Tiling

Karena elemen tetangga saling tumpang tindih, tile yang dimuat sekali dapat menghasilkan banyak keluaran. Stencil adalah contoh klasik yang menunjukkan keunggulan tiling.

Kenali Halo

Untuk menghitung tepi tile, Anda juga memerlukan beberapa elemen tepat di luar tile tersebut. Sel-sel batas tambahan ini disebut halo.

Mengapa Halo Diperlukan

Thread pertama dalam sebuah tile memerlukan tetangga kirinya, yang berada di tile sebelumnya. Tanpa sel halo, pembacaan tersebut akan salah.

Menentukan Ukuran Halo

Untuk stencil berjari-jari r, muat r sel tambahan di setiap sisi. Pengaburan 3 titik memiliki jari-jari 1, sehingga satu sel halo per sisi sudah cukup.

Tile dengan Padding

Deklarasikan memori bersama sebesar blockDim ditambah 2 * radius agar dapat menampung bagian dalam dan kedua halo dalam satu buffer yang rapi.

__shared__ float tile[BLOCK + 2 * RADIUS];

Memuat Bagian Dalam

Setiap thread terlebih dahulu memuat elemennya sendiri ke dalam tile pada offset radius, sehingga tersedia ruang untuk halo kiri di bagian depan.

tile[threadIdx.x + RADIUS] = in[gid];

Memuat Halo

Beberapa thread pertama melakukan tugas ganda, yaitu mengambil sel halo kiri dan kanan sebelum blok melakukan sinkronisasi.

Lalu Sinkronisasi dan Stencil

Setelah __syncthreads, setiap thread membaca tetangganya sepenuhnya dari tile dan tidak lagi menyentuh memori global untuk langkah tersebut.

Pengganda Penggunaan Ulang

Setiap nilai bagian dalam kini melayani 2r + 1 keluaran dari satu pemuatan memori bersama. Tepat itulah lalu lintas redundan yang dihilangkan oleh tiling.

Pemeriksaan Singkat

Mengapa stencil bertiling memerlukan sel halo?

Rangkuman

Stencil menggeser jendela yang saling tumpang tindih, sehingga halo berisi r sel tambahan per sisi memungkinkan sebuah tile melayani setiap keluaran dengan satu kali pemuatan. ✅

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 “Stencil dan Jendela Geser” gratis?

Ya — teks lengkap “Stencil dan Jendela Geser” 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 “Stencil dan Jendela Geser”?

Bagi lingkungan data menjadi ubin dengan sel halo. 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 3 dari 4.

Berapa lama pelajaran “Stencil dan Jendela Geser” 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. Masalah Penggunaan Ulang Data
  2. Pola Muat-Sinkronkan-Hitung
  3. Stencil dan Jendela Geser
  4. Tangani Ubin Tepi
← Kembali ke CUDA Academy