CUDA Academy · Pelajaran

Memori Terkunci dengan cudaMallocHost

Penyangga yang halamannya dikunci untuk DMA cepat.

Pelajaran 2 dari 413 langkah

Memori Terkunci dengan cudaMallocHost 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.

Mengenal Memori Terkunci

Memori terkunci adalah memori host yang dijamin oleh sistem operasi tidak akan pernah dipindahkan atau ditukar ke penyimpanan sekunder. Karena alamat fisiknya tetap, GPU dapat membacanya secara langsung.

Disebut Juga Terkunci Halaman

Anda akan melihat istilah terkunci halaman digunakan sebagai sinonim untuk terkunci. Keduanya memiliki arti yang sama: halaman yang dikunci di tempatnya sehingga pertukaran ke penyimpanan sekunder tidak akan pernah terjadi.

Alokasikan dengan Benar

Minta memori terkunci kepada CUDA dengan cudaMallocHost. Fungsi ini mengembalikan penunjuk host biasa yang dapat Anda baca dan tulis seperti larik C++ mana pun.

float* h_data;
cudaMallocHost(&h_data, N * sizeof(float));

Gunakan Seperti Biasa

Penunjuk yang dikembalikan berperilaku seperti penyangga host mana pun, sehingga kode CPU Anda tetap tidak berubah. Anda hanya perlu mengisinya dan membacanya persis seperti sebelumnya.

for (int i = 0; i < N; ++i) h_data[i] = i * 1.0f;

Tanpa Penahapan Lagi

Karena halaman tidak dapat berpindah, pengandar melewati penyalinan penahapan tersembunyinya. GPU mengambil data langsung dari penyangga Anda, sehingga penyalinan ganda tidak lagi terjadi.

Transfer Lebih Cepat

Hasilnya adalah lebar pita yang nyata. Transfer dengan memori terkunci sering berjalan mendekati kecepatan puncak tautan, terkadang sekitar dua kali lebih cepat daripada versi dengan memori yang dapat dipindahkan ke penyimpanan sekunder.

Bebaskan dengan Benar

Memori terkunci memerlukan pelepasan khusus yang sesuai. Gunakan cudaFreeHost, jangan pernah menggunakan free biasa, atau Anda berisiko mengalami kerusakan dan kebocoran memori.

cudaFreeHost(h_data);

Bukan Ruang Gratis

Halaman yang terkunci tidak dapat ditukar ke penyimpanan sekunder, sehingga halaman tersebut menyita RAM fisik. Jika terlalu banyak halaman dikunci, sistem lainnya akan kekurangan memori yang dapat digunakan.

Alokasi Lebih Lambat

Mengunci halaman memerlukan proses tambahan, sehingga cudaMallocHost lebih lambat saat mengalokasikan memori daripada malloc. Gunakan kembali satu penyangga terkunci untuk banyak transfer daripada mengalokasikannya ulang.

Kekuatan Utamanya

Selain meningkatkan kecepatan, memori terkunci adalah kunci untuk membuka penyalinan yang benar-benar asinkron. Tanpanya, cudaMemcpyAsync tidak dapat berjalan bersamaan dengan apa pun.

Kapan Menggunakannya

Kunci penyangga yang sering Anda transfer atau yang memasok aliran. Untuk satu kali penyalinan larik kecil, malloc biasa sudah cukup. 🙂

Pemeriksaan Singkat

Anda mengalokasikan penyangga dengan cudaMallocHost. Bagaimana cara melepaskannya?

Rangkuman

cudaMallocHost mengunci halaman host agar GPU dapat membacanya secara langsung, sehingga penyalinan lebih cepat dan tumpang tindih asinkron dapat dilakukan. Selalu lepaskan dengan cudaFreeHost. 🔒

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 “Memori Terkunci dengan cudaMallocHost” gratis?

Ya — teks lengkap “Memori Terkunci dengan cudaMallocHost” 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 “Memori Terkunci dengan cudaMallocHost”?

Penyangga yang halamannya dikunci untuk DMA cepat. 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 “Memori Terkunci dengan cudaMallocHost” 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. Mengapa Memori Pageable Lambat
  2. Memori Terkunci dengan cudaMallocHost
  3. cudaMemcpyAsync dalam Aliran
  4. Pipeline Penyangga Ganda
← Kembali ke CUDA Academy