Массив структур и структура массивов
Выбирайте схемы размещения, обеспечивающие согласованный доступ.
«Массив структур и структура массивов» — бесплатный урок CUDA Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Two Ways to Store Records
Say each particle has x, y, and z. You can keep them together or split them apart, and that choice changes how every warp coalesces.
Array of Structs
The natural C++ layout packs each record's fields side by side. This is an array of structs, often shortened to AoS.
struct Particle { float x, y, z; };
Particle p[N];Why AoS Scatters
When a warp reads only x from each record, the x values sit 12 bytes apart. That built-in stride wastes most of every line it pulls.
float xi = p[i].x; // x values are spaced by sizeof(Particle)Structure of Arrays
Flip it: store all the x values together, all the y values together, all the z values together. This is a structure of arrays, or SoA.
float x[N];
float y[N];
float z[N];Why SoA Coalesces
Now reading x for 32 threads touches 32 contiguous floats. That is one aligned line and one tidy transaction per field.
float xi = x[i]; // neighbors land in one lineThe Field-Access Test
Ask how your kernel reads data. If threads sweep one field across many records, SoA almost always wins on the GPU.
When AoS Is Fine
If each thread uses all of a record's fields together, AoS keeps them in one line and stays friendly to the cache.
Bandwidth, Not Just Style
This is not about taste. Switching from AoS to SoA can multiply real throughput for the same math, simply by cutting wasted bytes.
A Hybrid Middle Ground
You can group a few records, then split fields inside each group. This AoSoA layout balances coalescing with cache locality.
Design Before You Optimize
Layout is hard to change late, since it touches every kernel and copy. Pick your SoA or AoS shape early, guided by access patterns. 🧩
The Takeaway Mapping
GPU rule of thumb: separate fields into arrays so each warp reads a contiguous run. Favor SoA for field-wise kernels.
Quick Check
Choose the layout that coalesces this access.
Recap
You compared AoS and SoA: pack fields together for whole-record use, but split them into arrays when warps sweep one field at a time. 🎉
Часто задаваемые вопросы
Урок «Массив структур и структура массивов» бесплатный?
Да — полный текст урока «Массив структур и структура массивов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.
Чему я научусь в уроке «Массив структур и структура массивов»?
Выбирайте схемы размещения, обеспечивающие согласованный доступ. Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CUDA Academy?
Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Массив структур и структура массивов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CUDA Academy?
Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что такое транзакция памяти
- Согласованные и страйдовые чтения
- Массив структур и структура массивов
- Измерение эффективной пропускной способности