CUDA Academy · Pelajaran

Ruang Alamat Terpisah

Mengapa penunjuk host tidak valid pada perangkat.

Pelajaran 3 dari 413 langkah

Ruang Alamat Terpisah 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.

Dua Memori Terpisah

CPU dan GPU masing-masing memiliki RAM sendiri. Keduanya tidak berbagi satu ruang alamat, dan fakta sederhana ini membentuk seluruh CUDA. 🧠

Arti Sebuah Alamat

Penunjuk hanyalah angka yang menamai suatu lokasi dalam memori. Lokasi tersebut hanya bermakna dalam ruang alamat tempat penunjuk itu dibuat.

Penunjuk Host Bersifat Lokal

Penunjuk dari malloc menunjuk ke memori host. GPU tidak memiliki lokasi seperti itu, sehingga menyerahkannya kepada kernel akan menunjuk ke tempat yang tidak valid.

int* h = (int*)malloc(n * sizeof(int));

Penunjuk Perangkat Juga Bersifat Lokal

Penunjuk dari cudaMalloc menunjuk ke memori perangkat. CPU tidak dapat membacanya secara langsung; melakukan dereferensi pada host akan menyebabkan program berhenti karena kesalahan.

int* d;
cudaMalloc(&d, n * sizeof(int));

Kesalahan Klasik

Meneruskan penunjuk host ke kernel dapat dikompilasi tanpa masalah, tetapi gagal saat program berjalan. Angkanya valid; memori yang ditunjuknya tidak berada di GPU.

Mengapa Tetap Dapat Dikompilasi

Kedua penunjuk terlihat sebagai jenis yang sama bagi C++, sehingga kompilator tidak memberikan peringatan. Ketidakcocokan tersebut baru menimbulkan masalah saat GPU mengakses alamatnya.

Menjembatani dengan cudaMemcpy

Untuk memindahkan data antar-ruang, Anda harus menyalinnya secara eksplisit menggunakan cudaMemcpy. Tidak ada pembagian otomatis antar-ruang tersebut.

cudaMemcpy(d, h, bytes, cudaMemcpyHostToDevice);

Konvensi Penamaan Membantu

Banyak pemrogram menambahkan awalan h_ pada penunjuk host dan d_ pada penunjuk perangkat. Kebiasaan ini mencegah kekeliruan yang merepotkan.

float *h_a, *d_a;

Kernel Melihat Ruang Perangkat

Di dalam kernel, setiap penunjuk yang Anda dereferensi harus berada di memori perangkat. Itulah satu-satunya ruang yang dapat dijangkau oleh utas GPU.

Petunjuk Memori Terpadu

Nanti Anda akan berkenalan dengan memori terpadu, yaitu satu penunjuk yang valid di kedua sisi. Untuk saat ini, pisahkan penunjuk host dan perangkat dengan ketat.

Model Mental

Bayangkan dua ruangan tanpa rak yang digunakan bersama. Untuk menggunakan data di ruangan lain, Anda harus membawa salinannya, bukan sekadar menunjuk menyeberang.

Pemeriksaan Singkat

Mari kita pastikan Anda memahami ruang alamat yang terpisah.

Rangkuman

Anda telah mempelajari bahwa host dan perangkat berada dalam ruang alamat yang terpisah, penunjuk tidak dapat dipertukarkan, dan cudaMemcpy digunakan untuk menyeberangkan data. ✅

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 “Ruang Alamat Terpisah” gratis?

Ya — teks lengkap “Ruang Alamat Terpisah” 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 “Ruang Alamat Terpisah”?

Mengapa penunjuk host tidak valid pada perangkat. 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 “Ruang Alamat Terpisah” 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. Kualifikasi Fungsi __global__
  2. Fungsi __device__ dan __host__
  3. Ruang Alamat Terpisah
  4. Siklus Hidup Program CUDA
← Kembali ke CUDA Academy