0Pricing
CUDA Academy · Pelajaran

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

  1. Kondisi Balapan pada GPU
  2. atomicAdd dan Rekan-rekannya
  3. Bangun Histogram
  4. Operasi Atomik Kustom dengan atomicCAS
← Kembali ke CUDA Academy