CUDA Academy · Pelajaran

Register dan Memori Lokal

Penyimpanan tercepat per thread dan limpahannya.

Pelajaran 1 dari 413 langkah

Register dan Memori Lokal 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.

Memori Tercepat yang Anda Miliki

Setiap thread memiliki register pribadinya sendiri, yaitu penyimpanan tercepat pada cip. Register berada tepat di sebelah unit matematika, sehingga pembacaan hampir tidak memerlukan biaya.

Variabel Biasa Menjadi Register

Saat Anda menulis variabel lokal biasa dalam kernel, compiler biasanya menyimpannya dalam register. Anda sama sekali tidak memerlukan sintaks khusus. 🙂

__global__ void k() {
    int x = 5;   // x lives in a register
    float y = x * 2.0f;
}

Pribadi untuk Satu Thread

Nilai dalam register hanya dimiliki tepat oleh satu thread. Thread 7 tidak dapat melihat register milik thread 8, sehingga pekerjaan per thread tetap terpisah dengan rapi.

Register Merupakan Kumpulan Bersama

Setiap multiprosesor streaming memiliki berkas register dengan kapasitas tetap. Semua thread yang aktif berbagi kapasitas tersebut, sehingga penggunaan register yang lebih sedikit per thread memungkinkan lebih banyak thread berjalan sekaligus.

Saat Anda Kehabisan Ruang

Jika sebuah kernel memerlukan lebih banyak register daripada yang tersedia, nilai tambahannya dipindahkan ke tempat lain. Peristiwa ini disebut register tumpah.

Ke Mana Register Tumpah: Memori Lokal

Nilai yang tumpah ditempatkan di memori lokal, yang meskipun namanya demikian, tidak berada di dalam cip. Memori tersebut sebenarnya berada di DRAM di luar cip yang lambat.

Memori Lokal Tetap Bersifat Per Thread

Memori lokal bersifat pribadi untuk setiap thread, sama seperti register. Perbedaannya hanya pada kecepatan, karena memori lokal jauh lebih lambat untuk diakses.

Larikan Lokal Besar Menyebabkan Register Tumpah

Mendeklarasikan larik besar per thread sering kali memaksanya masuk ke memori lokal, karena register yang tersedia tidak cukup untuk menampung setiap elemennya.

__global__ void k() {
    float buf[64]; // likely lives in local memory
}

Register Tumpah Menurunkan Kinerja

Setiap register yang tumpah mengubah akses register gratis menjadi perjalanan lambat ke DRAM. Mengurangi tekanan register merupakan salah satu optimasi termudah yang dapat Anda lakukan untuk meningkatkan kinerja.

Melihat Jumlah Register Anda

Anda dapat meminta compiler melaporkan jumlah register per thread. Berikan --ptxas-options=-v kepada nvcc, dan compiler akan mencetak penggunaan untuk setiap kernel.

nvcc --ptxas-options=-v kernel.cu

Membatasi Register dengan Sengaja

Kualifikasi __launch_bounds__ memberi petunjuk kepada compiler untuk membatasi register, dengan menukar sedikit kecepatan per thread demi lebih banyak thread yang berjalan bersama.

__global__ void __launch_bounds__(256)
myKernel() { /* ... */ }

Pemeriksaan Cepat

Anda mendeklarasikan larik besar per thread dan kinerja menurun. Apa yang kemungkinan terjadi?

Rangkuman: Cepat dan Pribadi

Anda telah mempelajari bahwa register adalah penyimpanan per thread yang tercepat, kapasitas kumpulannya terbatas, dan luapan masuk ke memori lokal yang lambat. Jagalah agar tekanan register tetap rendah. 🎯

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 “Register dan Memori Lokal” gratis?

Ya — teks lengkap “Register dan Memori Lokal” 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 “Register dan Memori Lokal”?

Penyimpanan tercepat per thread dan limpahannya. 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 “Register dan Memori Lokal” 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. Register dan Memori Lokal
  2. Pertukaran dalam Memori Global
  3. Memori Konstan dan Cache-nya
  4. Model Mental Hierarki
← Kembali ke CUDA Academy