Satu Penunjuk, Kedua Sisi
Pelajari cara kerja cudaMallocManaged.
Satu Penunjuk, Kedua Sisi 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.
Masalah Dua Penunjuk
Sejauh ini Anda mengelola dua penunjuk: satu untuk host dan satu untuk perangkat. Memori Terpadu menggantikan kerumitan tersebut dengan satu penunjuk yang dapat digunakan kedua sisi. 🙂
Mengenal cudaMallocManaged
Anda mengalokasikan memori terkelola dengan cudaMallocManaged. Fungsi ini mengembalikan satu alamat yang dapat digunakan dalam kode CPU maupun di dalam inti.
float *data;
cudaMallocManaged(&data, n * sizeof(float));Tanpa cudaMemcpy Lagi
Keuntungan utamanya: biasanya Anda tidak perlu melakukan penyalinan manual. Dengan memori terkelola, waktu jalan memindahkan data untuk Anda, sehingga cudaMemcpy sering tidak lagi muncul dalam kode.
Tulis di Host
Anda dapat mengisi penyangga dengan kode CPU biasa tepat setelah mengalokasikannya. Penunjuk yang diperoleh adalah alamat biasa yang dapat diakses oleh perulangan Anda.
for (int i = 0; i < n; i++)
data[i] = i;Baca di Perangkat
Berikan penunjuk yang sama persis kepada inti, lalu utas GPU melakukan dereferensi secara langsung. Satu alamat melayani kedua sisi tanpa langkah penerjemahan.
kernel<<<blocks, threads>>>(data, n);Sinkronkan Sebelum Membaca Kembali
Setelah inti menulis data terkelola, panggil cudaDeviceSynchronize sebelum CPU membacanya. Ini menjamin GPU telah selesai dan hasilnya terlihat.
kernel<<<b, t>>>(data, n);
cudaDeviceSynchronize();Bebaskan Seperti Penyangga Lain
Memori terkelola tetap merupakan memori perangkat, jadi lepaskan dengan cudaFree. Tidak ada pemanggilan khusus untuk membebaskan memori terkelola yang perlu diingat.
cudaFree(data);Lebih Sedikit Kode Tambahan, Lebih Sedikit Kesalahan
Karena Anda menghapus rangkaian alokasi-penyalinan-peluncuran-penyalinan-pelepasan, program Anda menjadi lebih ringkas. Lebih sedikit penyalinan berarti lebih sedikit peluang untuk tertukar arah atau ukuran.
Sangat Baik untuk Pembuatan Prototipe
Memori Terpadu sangat cocok ketika Anda ingin inti segera berjalan cepat. Anda dapat membuat prototipe dengan cepat, lalu mengoptimalkan transfer hanya di bagian yang benar-benar berpengaruh.
Bukan Sihir Gratis
Di balik layar, data tetap harus melintasi PCIe. Kemudahannya nyata, tetapi kinerja dapat tertinggal dari penyalinan yang diatur secara manual sampai Anda menambahkan petunjuk.
Kapan Menggunakannya
Pilih memori terkelola untuk kode yang lebih sederhana, struktur penunjuk yang mendalam, atau penggunaan memori GPU yang melebihi kapasitas. Memori ini unggul ketika kejelasan lebih penting daripada kecepatan puncak mentah.
Pemeriksaan Singkat
Mari kita pastikan perbedaan alokasi terkelola dari alur klasik.
Rangkuman: Satu Penunjuk, Kedua Sisi
Anda telah mempelajari bahwa cudaMallocManaged memberikan satu penunjuk untuk host dan perangkat, sehingga sebagian besar penyalinan tidak diperlukan. Lakukan sinkronisasi sebelum membaca dan bebaskan dengan cudaFree. Kerja bagus! 🎉
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Satu Penunjuk, Kedua Sisi” gratis?
Ya — teks lengkap “Satu Penunjuk, Kedua Sisi” 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 “Satu Penunjuk, Kedua Sisi”?
Pelajari cara kerja cudaMallocManaged. 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 “Satu Penunjuk, Kedua Sisi” 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
- Satu Penunjuk, Kedua Sisi
- Migrasi Halaman Sesuai Permintaan
- Ambil Awal dengan cudaMemPrefetchAsync
- Petunjuk melalui cudaMemAdvise