Урок 14: Объединение доступов к глобальной памяти — концепция
Глобальная память (device DRAM) — самая большая, но и самая медленная память на GPU, и оборудование читает её транзакциями непрерывного блока адресов — обычно по 128 байт за раз. Когда все 32 потока в warp обращаются к последовательным адресам, например a[i] с i = глобальный индекс, одна транзакция
Представьте лейку, которая поливает 32 саженца. Если саженцы стоят в одном плотном ряду, один полив смачивает их все. Если каждый саженец в 32 шагах от следующего, вам нужно 32 отдельных похода к лейке ради тех же 32 саженцев — та же вода, в 32 раза больше работы.
- объединение доступов (coalescing)
- Когда последовательные потоки в warp обращаются к последовательным адресам, так что оборудование обслуживает их все в одной транзакции памяти.
- транзакция памяти (memory transaction)
- Непрерывный блок адресов (обычно 128 байт), который оборудование читает или записывает за одну операцию с глобальной памятью.
- шаг (stride)
- Расстояние между адресами двух соседних потоков. Шаг, равный 1, означает непрерывность (объединение); большой шаг разбрасывает доступы.
- пропускная способность (bandwidth)
- Количество полезных байт, перемещаемых в память или из неё за единицу времени. Разбросанный доступ тратит её впустую, потому что каждая транзакция приносит ненужные байты.