atomicAdd dan Rekan-rekannya
Operasi baca-ubah-tulis oleh perangkat keras.
atomicAdd dan Rekan-rekannya 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.
Satu Langkah yang Tidak Dapat Dipisahkan
Operasi atomik membaca, mengubah, dan menulis nilai sebagai satu langkah yang tidak dapat disela oleh thread lain. Dengan begitu, kondisi balapan dapat dihilangkan. ⚛️
Mengenal atomicAdd
atomicAdd menerima pointer dan nilai, melakukan penambahan dengan aman, lalu mengembalikan nilai lama. Banyak thread dapat mengakses alamat yang sama tanpa kehilangan pembaruan.
atomicAdd(total, 1);Memperbaiki Penghitung yang Mengalami Kondisi Balapan
Ganti penambahan biasa dengan atomicAdd, dan penghitung akan selalu benar, berapa pun jumlah thread yang berjalan.
__global__ void count(int* total) {
atomicAdd(total, 1);
}Nilai Kembalian Itu Berguna
atomicAdd mengembalikan nilai yang tersimpan sebelum penambahan Anda. Nilai lama tersebut merupakan slot unik yang dapat digunakan sebagai indeks atau nomor tiket.
int slot = atomicAdd(counter, 1);Satu Keluarga Lengkap
atomicAdd memiliki banyak rekan: atomicSub, atomicMax, atomicMin, atomicExch, atomicAnd, atomicOr, dan atomicXor semuanya bekerja dengan cara atomik yang sama.
Menukar Nilai
atomicExch menyimpan nilai baru dan mengembalikan nilai lama dalam satu langkah. Fungsi ini berguna untuk mengambil alih penanda atau mengambil keadaan sebelumnya dengan aman.
int prev = atomicExch(flag, 1);Maksimum dan Minimum Atomik
atomicMax memperbarui target hanya jika nilai Anda lebih besar. Fungsi ini sangat cocok untuk menemukan nilai maksimum global dari seluruh thread tanpa kondisi balapan.
atomicMax(best, myValue);Jenis yang Didukung
Operasi atomik mendukung int, unsigned, dan pada perangkat keras yang lebih baru juga float serta double. Selalu periksa apakah jenis dan arsitektur Anda mendukung pemanggilan yang diinginkan.
Operasi Atomik Memiliki Biaya
Operasi atomik membuat thread yang menargetkan alamat yang sama berjalan secara berurutan. Persaingan yang tinggi pada satu lokasi menjadi hambatan, jadi gunakan operasi atomik hanya jika diperlukan.
Sebarkan Beban
Kurangi persaingan dengan meminta thread memperbarui alamat yang berbeda, lalu gabungkan hasilnya. Lebih sedikit benturan membuat operasi atomik tetap cepat.
Operasi Atomik vs Reduksi
Untuk menjumlahkan larik berukuran sangat besar, reduksi berbentuk pohon sering kali lebih cepat daripada membanjiri satu lokasi dengan operasi atomik. Gunakan operasi atomik ketika pembaruan bersifat jarang atau tidak beraturan.
Pemeriksaan Cepat
Uji pemahaman Anda tentang perilaku atomicAdd.
Rangkuman: atomicAdd dan Rekan-Rekannya
Anda telah mengenal keluarga operasi atomik, memperbaiki penghitung yang mengalami kondisi balapan, dan mempelajari bahwa operasi atomik mengembalikan nilai lama, tetapi memerlukan waktu tambahan saat terjadi persaingan. ✅
Pertanyaan yang Sering Diajukan
Apakah pelajaran “atomicAdd dan Rekan-rekannya” gratis?
Ya — teks lengkap “atomicAdd dan Rekan-rekannya” 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 “atomicAdd dan Rekan-rekannya”?
Operasi baca-ubah-tulis oleh perangkat keras. 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 “atomicAdd dan Rekan-rekannya” 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
- Kondisi Balapan pada GPU
- atomicAdd dan Rekan-rekannya
- Bangun Histogram
- Operasi Atomik Kustom dengan atomicCAS