Register dan Memori Lokal
Penyimpanan tercepat per thread dan limpahannya.
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.cuMembatasi 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. 🎯
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
- Register dan Memori Lokal
- Pertukaran dalam Memori Global
- Memori Konstan dan Cache-nya
- Model Mental Hierarki