CUDA Academy · Pelajaran

Operasi Atomik Kustom dengan atomicCAS

Gunakan compare-and-swap untuk pembaruan apa pun.

Pelajaran 4 dari 413 langkah

Operasi Atomik Kustom dengan atomicCAS adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Saat Fungsi Bawaan Tidak Mencukupi

Operasi atomik bawaan mencakup penambahan, maksimum, pertukaran, dan lainnya. Namun, bagaimana jika Anda memerlukan pembaruan atomik yang tidak disediakan? Kenali atomicCAS. 🔁

Bandingkan dan Tukar

atomicCAS berarti bandingkan dan tukar. Fungsi ini menulis nilai baru hanya jika nilai saat ini sesuai dengan nilai yang Anda harapkan, semuanya dalam satu langkah atomik.

atomicCAS(addr, expected, desired);

Nilai yang Dikembalikan

atomicCAS mengembalikan nilai yang benar-benar tersimpan. Jika nilainya sama dengan nilai yang diharapkan, pertukaran Anda berhasil; jika tidak, thread lain telah mengubahnya terlebih dahulu.

Perulangan Percobaan Ulang

Pola intinya adalah sebuah perulangan: baca nilai saat ini, hitung nilai baru, coba lakukan pertukaran, lalu ulangi hingga atomicCAS mengonfirmasi keberhasilan.

Perulangan CAS dalam Kode

Perulangan ini terus mencoba hingga tidak ada thread lain yang menyela di antara pembacaan dan penulisan Anda. Inilah inti dari atomik khusus.

do {
  old = *addr;
  newv = f(old);
} while (atomicCAS(addr, old, newv) != old);

Membangun Operasi Apa Pun

Ganti f dengan fungsi apa pun, dan Anda mendapatkan versi atomik dari fungsi tersebut. CAS memungkinkan Anda membangun pembaruan yang tidak pernah disediakan perangkat keras secara langsung.

Float Atomik pada Perangkat Keras Lama

Sebelum tersedia atomik float bawaan, orang meniru atomicAdd untuk float menggunakan atomicCAS pada pola bit melalui trik __int_as_float.

Mengapa Perulangan Dapat Berputar

Saat terjadi persaingan berat, pertukaran sering gagal dan harus dicoba lagi. Setiap kegagalan berarti thread lain menang, sehingga alamat yang sering diakses membuat perulangan CAS berputar lebih lama.

Kemajuan Terjamin

Meskipun harus mencoba lagi, algoritme ini bebas kunci: setiap kali pertukaran gagal, thread lain pasti mengalami kemajuan. Sistem tidak pernah berhenti total.

Sesuaikan Lebarnya

atomicCAS bekerja pada lebar tertentu, seperti 32 dan 64 bit. Ubah data Anda ke tipe bilangan bulat yang sesuai agar perbandingan dilakukan pada bit mentah.

Dahulukan Fitur Bawaan

Gunakan atomik bawaan jika tersedia karena lebih cepat dan sederhana. Gunakan atomicCAS hanya untuk pembaruan khusus yang tidak dapat ditangani oleh fitur lain.

Pemeriksaan Singkat

Periksa pemahaman Anda tentang compare-and-swap.

Ringkasan: Atomik Khusus

Anda telah mempelajari bahwa atomicCAS bersama perulangan percobaan ulang dapat membangun pembaruan atomik apa pun, tetap bebas kunci, tetapi dapat berputar saat terjadi persaingan. ✅

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 “Operasi Atomik Kustom dengan atomicCAS” gratis?

Ya — teks lengkap “Operasi Atomik Kustom dengan atomicCAS” 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 “Operasi Atomik Kustom dengan atomicCAS”?

Gunakan compare-and-swap untuk pembaruan apa pun. 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 4 dari 4.

Berapa lama pelajaran “Operasi Atomik Kustom dengan atomicCAS” 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. Kondisi Balapan pada GPU
  2. atomicAdd dan Rekan-rekannya
  3. Bangun Histogram
  4. Operasi Atomik Kustom dengan atomicCAS
← Kembali ke CUDA Academy