CUDA Academy · Pelajaran

Reduce, Scan, dan Sort pada Thrust

Primitif tingkat tinggi dengan satu pemanggilan

Pelajaran 3 dari 413 langkah

Reduce, Scan, dan Sort pada Thrust adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Algoritma Sulit, Satu Baris

Reduksi, pemindaian, dan pengurutan sulit ditulis agar cepat jika dilakukan manual. Thrust menyediakan versi yang telah dioptimalkan melalui satu pemanggilan fungsi. 🎁

Reduce Meringkas Menjadi Satu Nilai

thrust::reduce menggabungkan setiap elemen menjadi satu hasil, seperti menjumlahkan sebuah array, semuanya secara paralel di balik layar.

int total = thrust::reduce(d.begin(), d.end());

Operator Reduksi Kustom

Reduce secara bawaan menggunakan penjumlahan, tetapi Anda dapat meneruskan nilai awal dan operasi biner untuk menghitung hasil kali, nilai maksimum, atau apa pun yang bersifat asosiatif.

int m = thrust::reduce(d.begin(), d.end(),
  0, thrust::maximum<int>());

Scan Menyimpan Total Berjalan

Scan, atau jumlah prefiks, menghasilkan total berjalan pada setiap posisi. Operasi ini menjadi dasar pemadatan, pengurutan, dan alokasi aliran.

Inklusif vs Eksklusif

inclusive_scan menyertakan elemen saat ini dalam jumlahnya; exclusive_scan tidak. Memilih yang tepat akan mencegah kesalahan selisih satu.

thrust::inclusive_scan(d.begin(), d.end(),
  out.begin());

Scan Tidak Mudah Diparalelkan

Jumlah prefiks tampak berurutan, tetapi Thrust menjalankannya secara paralel dengan algoritma pohon cerdas yang tidak perlu Anda tulis sendiri.

Urutkan di Tempat

thrust::sort mengurutkan device_vector di tempat menggunakan pengurutan radix atau merge cepat di GPU, jauh lebih cepat daripada pengurutan CPU untuk data berukuran besar.

thrust::sort(d.begin(), d.end());

Urutkan Berdasarkan Kunci

sort_by_key mengurutkan satu array dan menyusun ulang array nilai kedua agar sesuai, cocok untuk menjaga catatan tetap selaras dengan kuncinya.

thrust::sort_by_key(keys.begin(),
  keys.end(), values.begin());

Gabungkan Primitif

Alur pemrosesan nyata menggabungkan semuanya: transform lalu reduce, atau sort lalu scan. Setiap langkah hanya memerlukan satu pemanggilan yang telah dioptimalkan, sehingga Anda dapat berfokus pada logika.

transform_reduce Terpadu

transform_reduce memetakan dan menjumlahkan dalam satu lintasan, menghitung hal seperti hasil kali titik atau jumlah kuadrat tanpa array sementara.

float ss = thrust::transform_reduce(
  d.begin(), d.end(), sq, 0.0f, thrust::plus<float>());

Biarkan Pustaka yang Bekerja

Primitif ini sangat dioptimalkan oleh NVIDIA. Menggunakannya terlebih dahulu biasanya lebih baik daripada membuat kernel kustom dan menghemat waktu berjam-jam.

Pemeriksaan Singkat

Ingat kembali hasil yang diberikan oleh jumlah prefiks.

Ringkasan

Anda meringkas data dengan reduce, membuat total berjalan dengan scan, mengurutkan array dengan sort, dan menggabungkan langkah-langkah dengan transform_reduce. 🏁

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 “Reduce, Scan, dan Sort pada Thrust” gratis?

Ya — teks lengkap “Reduce, Scan, dan Sort pada Thrust” 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 “Reduce, Scan, dan Sort pada Thrust”?

Primitif tingkat tinggi dengan satu pemanggilan 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 3 dari 4.

Berapa lama pelajaran “Reduce, Scan, dan Sort pada Thrust” 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. cuBLAS GEMM dengan Cara yang Tepat
  2. Vektor dan Transformasi Thrust
  3. Reduce, Scan, dan Sort pada Thrust
  4. cuDNN untuk Pembelajaran Mendalam
← Kembali ke CUDA Academy