CUDA Academy · Pelajaran

Larik Struktur versus Struktur Larik

Pilih tata letak yang mendukung penggabungan akses.

Pelajaran 3 dari 413 langkah

Larik Struktur versus Struktur Larik 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.

Dua Cara Menyimpan Rekaman

Misalkan setiap Particle memiliki x, y, dan z. Anda dapat menyimpannya bersama-sama atau memisahkannya, dan pilihan itu mengubah cara setiap warp terkoalesensi.

Array Struct

Tata letak C++ yang alami mengemas bidang setiap rekaman berdampingan. Ini disebut array of structs, yang sering disingkat menjadi AoS.

struct Particle { float x, y, z; };
Particle p[N];

Mengapa AoS Menyebar

Ketika warp hanya membaca x dari setiap rekaman, nilai-nilai x berjarak 12 byte satu sama lain. Langkah bawaan ini membuang sebagian besar ruang di setiap baris yang diambil.

float xi = p[i].x; // x values are spaced by sizeof(Particle)

Struct Array

Balikkan susunannya: simpan semua nilai x bersama-sama, semua nilai y bersama-sama, dan semua nilai z bersama-sama. Ini disebut structure of arrays, atau SoA.

float x[N];
float y[N];
float z[N];

Mengapa SoA Terkoalesensi

Sekarang, pembacaan x oleh 32 thread menyentuh 32 nilai float yang berurutan. Itu berarti satu baris yang selaras dan satu transaksi yang rapi untuk setiap bidang.

float xi = x[i]; // neighbors land in one line

Uji Akses Bidang

Perhatikan cara kern Anda membaca data. Jika thread menyusuri satu bidang pada banyak rekaman, SoA hampir selalu lebih unggul di GPU.

Saat AoS Sudah Memadai

Jika setiap thread menggunakan semua bidang suatu rekaman secara bersamaan, AoS menyimpannya dalam satu baris dan tetap ramah terhadap memori tembolok.

Lebar Pita, Bukan Sekadar Gaya

Ini bukan soal selera. Mengubah AoS menjadi SoA dapat melipatgandakan laju pemrosesan nyata untuk perhitungan yang sama, hanya dengan mengurangi byte yang terbuang.

Jalan Tengah Hibrida

Anda dapat mengelompokkan beberapa rekaman, lalu memisahkan bidang di dalam setiap kelompok. Tata letak AoSoA ini menyeimbangkan penggabungan akses dengan lokalitas memori tembolok.

Rancang Sebelum Mengoptimalkan

Tata letak sulit diubah pada tahap akhir karena memengaruhi setiap kern dan penyalinan. Tentukan bentuk SoA atau AoS sejak awal, dengan berpedoman pada pola akses. 🧩

Pemetaan Inti

Aturan praktis GPU: pisahkan bidang ke dalam array agar setiap warp membaca satu rangkaian yang berurutan. Utamakan SoA untuk kern yang memproses bidang satu per satu.

Pemeriksaan Singkat

Pilih tata letak yang membuat akses ini terkoalesensi.

Ringkasan

Anda telah membandingkan AoS dan SoA: kemas bidang bersama-sama untuk penggunaan seluruh rekaman, tetapi pisahkan menjadi array ketika warp menyusuri satu bidang pada satu waktu. 🎉

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 “Larik Struktur versus Struktur Larik” gratis?

Ya — teks lengkap “Larik Struktur versus Struktur Larik” 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 “Larik Struktur versus Struktur Larik”?

Pilih tata letak yang mendukung penggabungan akses. 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 “Larik Struktur versus Struktur Larik” 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. Apa Itu Transaksi Memori
  2. Pembacaan Terkonsolidasi versus Berstride
  3. Larik Struktur versus Struktur Larik
  4. Ukur Bandwidth Efektif
← Kembali ke CUDA Academy