CUDA Academy · Pelajaran

Memori Tetap dan Cache-nya

Siarkan nilai baca sahaja dengan kos rendah.

Pelajaran 3 daripada 413 langkah

Memori Tetap dan Cache-nya ialah pelajaran CUDA Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran CUDA Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus CUDA Academy merangkumi sejumlah 4 pelajaran.

Ruang untuk Nilai Baca Sahaja

Memori malar ialah rantau kecil yang dibina untuk data yang dibaca oleh setiap bebenang tetapi tidak pernah ditulis oleh mana-mana bebenang semasa kernel berjalan.

Mengisytiharkannya

Anda menandakan tatasusunan berskop global dengan pengecam __constant__. Tatasusunan itu berada di luar mana-mana fungsi dan kelihatan kepada semua kernel anda.

__constant__ float weights[256];

Ia Benar-Benar Kecil

Jumlah memori malar hanyalah 64 KB pada GPU biasa. Memori ini bertujuan untuk pekali dan parameter, bukan untuk set data besar.

Mengisinya daripada Hos

Anda menulis ke memori malar daripada CPU menggunakan cudaMemcpyToSymbol, kerana kernel itu sendiri tidak dapat mengubahnya.

cudaMemcpyToSymbol(weights, h_w,
    256 * sizeof(float));

Disokong oleh Cache Khas

Bacaan melalui cache malar khusus pada setiap pemproses berbilang. Nilai yang dicache kembali hampir sepantas daftar.

Kuasa Penyiaran

Apabila seluruh warp membaca alamat yang sama, perkakasan melakukan satu capaian dan menyiarkannya kepada semua 32 bebenang dalam satu langkah. 📡

Alamat Sama ialah Kuncinya

Manfaatnya bergantung pada capaian seragam. Jika bebenang dalam warp membaca alamat malar yang berbeza, bacaan tersebut bersiri dan peningkatan kelajuan hilang.

Cara Membacanya Kelihatan Biasa

Dalam kernel, anda membaca memori malar seperti mana-mana tatasusunan. Pengkompil secara senyap menghalakan capaian itu melalui cache malar yang pantas.

__global__ void k(float *out, int i) {
    out[i] = weights[0] * 2.0f;
}

Sangat Sesuai untuk Penapis

Kernel konvolusi dan jadual carian sangat sesuai di sini kerana setiap bebenang menggunakan semula set kecil pekali yang sama berulang kali.

Tetapkan Sekali, Guna Semula Selalu

Biasanya anda memuat naik ke memori malar sekali sahaja, kemudian melancarkan banyak kernel yang semuanya membaca nilai yang tidak berubah itu dengan murah.

Bila Tidak Patut Menggunakannya

Jangan gunakan memori malar jika data anda besar atau jika bebenang membaca alamat yang bertaburan. Dalam keadaan itu, memori global biasa lebih sesuai untuk anda.

Semakan Pantas

Bilakah memori malar memberikan peningkatan kelajuan terbesar?

Imbas Kembali: Kecil, Dicache, Disiarkan

Anda telah mempelajari bahawa memori malar ialah ruang baca sahaja yang kecil, dan cachenya menyiarkan bacaan seragam kepada seluruh warp. Gunakannya untuk nilai kecil yang dikongsi. ✨

Percuma untuk bermula

Pelajari C++ dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Memori Tetap dan Cache-nya” percuma?

Ya — teks penuh “Memori Tetap dan Cache-nya” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus CUDA Academy, tingkat taraf kepada CoddyKit PRO. Kursus CUDA Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Memori Tetap dan Cache-nya”?

Siarkan nilai baca sahaja dengan kos rendah. Anda berlatih CUDA Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan CUDA Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran CUDA Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Memori Tetap dan Cache-nya” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran CUDA Academy ini?

Ya. Setiap pelajaran CUDA Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Daftar dan Memori Setempat
  2. Pertukaran Memori Global
  3. Memori Tetap dan Cache-nya
  4. Model Mental Hierarki
← Kembali ke CUDA Academy