Vektor dan Transformasi Thrust
Paralelisme bergaya STL pada GPU
Vektor dan Transformasi Thrust 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.
STL untuk GPU Anda
Thrust adalah pustaka tingkat tinggi yang terasa seperti STL C++, tetapi berjalan di GPU. Anda hampir tidak perlu menulis kode kernel sendiri. 🎉
Dua Jenis Vektor
Thrust menyediakan host_vector untuk memori CPU dan device_vector untuk memori GPU. Keduanya tampak identik, tetapi berada di dunia yang berbeda.
thrust::host_vector<int> h(100);
thrust::device_vector<int> d(100);Menyalin Melintasi Batas
Menetapkan host_vector ke device_vector secara otomatis memicu transfer memori. Anda tidak perlu menulis kode tambahan cudaMemcpy secara manual.
thrust::device_vector<int> d = h; // host to deviceAlokasi Berlangsung Otomatis
device_vector mengalokasikan dan membebaskan memori GPU untuk Anda menggunakan RAII. Saat keluar dari cakupan, memorinya dilepaskan dengan bersih.
Mengisi dan Membuat Urutan
Pembantu seperti thrust::fill dan thrust::sequence menginisialisasi seluruh device_vector dalam satu pemanggilan paralel, bukan melalui perulangan manual.
thrust::sequence(d.begin(), d.end()); // 0,1,2,...Transformasi Memetakan Setiap Elemen
thrust::transform menerapkan suatu fungsi ke setiap elemen secara paralel dan menulis hasilnya ke rentang keluaran. Ini adalah pola pemetaan klasik.
thrust::transform(d.begin(), d.end(),
out.begin(), op);Functor Adalah Operasinya
Operasi yang Anda teruskan disebut functor: sebuah struct dengan operator() yang ditandai __host__ __device__ agar dapat berjalan di GPU.
struct Square { __host__ __device__
float operator()(float x){ return x*x; } };Operator Bawaan
Untuk matematika umum, Thrust menyediakan functor seperti thrust::plus dan thrust::multiplies, sehingga Anda tidak perlu menulis functor untuk tugas sederhana.
thrust::transform(a.begin(), a.end(),
b.begin(), c.begin(), thrust::plus<float>());Dua Input, Satu Output
Bentuk biner transform menerima dua rentang input dan menggabungkannya secara berpasangan, cocok untuk penjumlahan vektor per elemen.
Dapatkan Pointer Mentah
Perlu beralih ke kernel yang ditulis manual? thrust::raw_pointer_cast memberikan pointer perangkat yang mendasarinya untuk Anda teruskan.
float* p = thrust::raw_pointer_cast(d.data());Lebih Sedikit Kode, Lebih Sedikit Kesalahan
Thrust menyembunyikan alokasi, penyalinan, dan konfigurasi peluncuran. Anda menukar sedikit kendali dengan kode GPU yang mudah dibaca dan aman, serta langsung berfungsi.
Pemeriksaan Singkat
Ingat kembali cara Thrust menerapkan suatu operasi ke seluruh vektor.
Ringkasan
Anda menggunakan device_vector untuk pengelolaan memori otomatis, mentransfer data melalui penetapan, dan menjalankan transform dengan functor. Kekuatan GPU bergaya STL. 💪
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Vektor dan Transformasi Thrust” gratis?
Ya — teks lengkap “Vektor dan Transformasi 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 “Vektor dan Transformasi Thrust”?
Paralelisme bergaya STL pada GPU 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 “Vektor dan Transformasi 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
- cuBLAS GEMM dengan Cara yang Tepat
- Vektor dan Transformasi Thrust
- Reduce, Scan, dan Sort pada Thrust
- cuDNN untuk Pembelajaran Mendalam