CUDA Academy · Pelajaran

Pola Muat-Sinkronkan-Hitung

Siapkan ubin sebelum menghitungnya.

Pelajaran 2 dari 413 langkah

Pola Muat-Sinkronkan-Hitung adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Tiga Fase Sederhana

Tiling mengikuti satu pola dalam setiap kernel: muat tile ke memori bersama, lakukan sinkronisasi, lalu hitung dari salinan cepat tersebut.

Fase Satu: Memuat

Pada fase pemuatan, setiap thread membaca satu elemen dari memori global dan menyimpannya ke tile memori bersama yang dapat dilihat seluruh blok.

tile[threadIdx.x] = in[globalIndex];

Upaya Bersama

Pemuatan adalah pekerjaan tim. Setiap thread mengambil bagiannya, sehingga bersama-sama blok menyiapkan satu tile penuh dalam satu lintasan yang terkoalesensi.

Fase Dua: Sinkronisasi

Sebelum thread mana pun membaca nilai tetangganya, semua thread harus selesai memuat. __syncthreads adalah penghalang yang menjamin tile telah siap.

__syncthreads();

Mengapa Sinkronisasi Wajib

Jika penghalang dilewati, sebuah thread dapat membaca slot tile yang belum ditulis oleh tetangganya. Itu merupakan kondisi balapan dan menghasilkan keluaran yang salah. 💥

Fase Tiga: Komputasi

Sekarang semua nilai berada di dalam chip. Pada fase komputasi, thread dapat membaca entri tile dengan bebas karena memori bersama jauh lebih cepat daripada memori global.

Penggunaan Ulang Cepat Menguntungkan

Karena tile berada di memori bersama, nilai yang dimuat sekali dapat digunakan ulang oleh banyak thread dengan biaya tambahan yang hampir tidak ada. Itulah seluruh keuntungannya.

Terkadang Perlu Sinkronisasi Lagi

Jika fase komputasi menulis kembali ke tile yang sama untuk langkah berikutnya, tambahkan __syncthreads kedua sebelum menggunakan kembali slot tersebut.

Semua Thread atau Tidak Sama Sekali

Setiap thread dalam blok harus mencapai __syncthreads. Jika sebagian thread melewatinya di dalam percabangan, kernel dapat mengalami kebuntuan atau berperilaku tidak semestinya.

Kerangka yang Dapat Digunakan Ulang

Muat, sinkronisasi, hitung adalah sebuah templat yang akan Anda gunakan kembali untuk konvolusi, perkalian matriks, dan reduksi di seluruh kategori ini.

Perhatikan Ukuran Tile

Tile bersama harus muat dalam blok. Lebar tile biasanya sama dengan blockDim, sehingga setiap thread memiliki tepat satu slot untuk dimuat dan digunakan kembali.

Pemeriksaan Singkat

Mengapa __syncthreads diperlukan di antara pemuatan dan komputasi?

Rangkuman

Tiling adalah muat, sinkronisasi, hitung: siapkan tile secara kooperatif, gunakan penghalang agar tile selesai, lalu gunakan kembali dengan cepat di dalam chip. ✅

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 “Pola Muat-Sinkronkan-Hitung” gratis?

Ya — teks lengkap “Pola Muat-Sinkronkan-Hitung” 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 “Pola Muat-Sinkronkan-Hitung”?

Siapkan ubin sebelum menghitungnya. 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 2 dari 4.

Berapa lama pelajaran “Pola Muat-Sinkronkan-Hitung” 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