Урок 32: Streams и параллелизм
CUDA stream — это очередь операций, которые выполняются в том порядке, в котором были в неё отправлены. Ключевое правило: операции в одном stream выполняются последовательно (по порядку), но операции в разных streams могут перекрываться во времени. Именно это даёт большое ускорение: пока GPU вычисля
stream — это как касса в супермаркете: покупатели в одной кассе ждут в очереди, один за другим. Откройте две кассы (два streams), и двух покупателей обслужат одновременно. Если все толпятся в одной кассе — параллелизма нет.
- stream
- Очередь операций GPU, выполняемых в порядке отправки. Операции в одном stream последовательны; в разных streams они могут перекрываться.
- stream по умолчанию (stream 0)
- stream, в который попадают операции, когда ни один не указан. Обычно он синхронизирующий и препятствует перекрытию, если всё проходит через него.
- cudaMemcpyAsync
- Неблокирующее копирование памяти, принимающее stream. Позволяет copy перекрываться с compute при использовании pinned-памяти.
- перекрытие (overlap)
- Одновременное выполнение разных операций — например, copy в одном stream, пока compute выполняется в другом — чтобы сократить общее время.