Skip to content

Commit

Permalink
Q35
Browse files Browse the repository at this point in the history
  • Loading branch information
DanikKul authored and Qurcaivel committed Jan 8, 2025
1 parent 80f411a commit 0bba319
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
Binary file added .images/modern-gpu-arch.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 37 additions & 0 deletions ANSWERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -1720,6 +1720,43 @@ void kernel(T* a, T* b, T* c, int N)
var – своё значение, src – номер потока, из которого читать

# 35. Архитектура современного GPU

Современный GPU состоит из нескольких потоковых мультипроцессоров (SMs), каждый из которых состоит из
нескольких ядер с общим управлением и памятью.

![alt text](.images/modern-gpu-arch.png)

Потокам/блокам требуются ресурсы для выполнения (например, регистры, память, и т.д.),
поэтому SM может обслуживать ограниченное количество потоков/блоков одновременно.
Оставшиеся блоки ожидают завершения работы других блоков,
прежде чем их можно будет назначить SM.

Потоки, находящиеся в разных блоках не могут, например:
- Не синхронизируются по `__syncthreads();`
- Не могут использовать одну и ту же разделяемую память

Потоки из одного блока назначены строго одному потоковому мультипроцессору.
Потоки назначаются SMам одновременно. Блок не может быть назначен SM до тех пор,
пока он не обеспечит достаточное количество ресурсов для выполнения всех своих потоков.

Потоки, назначенные SM, выполняются одновременно:
- В SM есть планировщик, который управляет их выполнением

Блоки, назначенные SM, далее делятся на варпы, которые являются единицей планирования.
Размер варпов зависит от устройства, но на сегодняшний день он всегда 32 потоков/варп.

Потоки в warp планируются совместно и выполняются в соответствии с моделью SIMD:
- Одна команда, несколько данных
- Одна команда извлекается и выполняется всеми потоками в warp,
каждый из которых обрабатывает разные данные

Виды памяти, использующиеся в GPU:
- Глобальная
- Разделяемая
- Регистровая
- Текстурная
- Локальная

# 36. Понятие occupancy в CUDA. Пример расчета

Потоковые мультипроцессоры (SM) — это система, состоящая из нескольких планировщиков варпов.
Expand Down

0 comments on commit 0bba319

Please sign in to comment.