docs: add section on CPU+GPU abstractions with references

This commit is contained in:
Andrew 2025-12-09 02:24:47 +07:00
parent fdd02841c2
commit 75ed30795e
2 changed files with 57 additions and 0 deletions

View file

@ -374,6 +374,20 @@ SYCL, разработанный Khronos Group и впервые выпущен
#pagebreak()
= Связь исторической эволюции с современной научной задачей
== Необходимость новых абстракций для гибридных CPU+GPU систем
Современные гетерогенные вычислительные системы представляют собой качественно новую парадигму, требующую переосмысления традиционных подходов к программированию и оптимизации. В отличие от классических параллельных архитектур, где все процессорные элементы были однородными, гибридные CPU+GPU системы характеризуются радикальной асимметрией вычислительных ресурсов@mittal_survey_2015.
Центральные процессоры оптимизированы для выполнения сложной логики управления, работы с нерегулярными структурами данных и минимизации задержек отдельных операций. Графические процессоры, напротив, достигают максимальной производительности на массово параллельных задачах с регулярными паттернами доступа к памяти и высокой арифметической интенсивностью@kirk_programming_2017.
Проблема усугубляется сложностью иерархии памяти в гетерогенных системах. Традиционные модели программирования не предоставляют эффективных механизмов для управления перемещением данных между различными адресными пространствами CPU и GPU, что может приводить к значительным накладным расходам. Современные абстракции должны обеспечивать автоматическую оптимизацию передачи данных, учитывая как объемы копируемой информации, так и возможности перекрытия коммуникаций с вычислениями.
Для задач машинного обучения и глубокого обучения, где инференс моделей требует выполнения последовательности разнородных операций, необходимы абстракции, способные автоматически распределять различные слои нейронных сетей между CPU и GPU в зависимости от их характеристик@jia_beyond_2018. Некоторые операции, такие как небольшие полносвязные слои или нормализация батчей малого размера, могут эффективнее выполняться на CPU, в то время как крупные свёрточные слои лучше ложатся на массивно параллельные ядра GPU.
#pagebreak()
#align(
center,
pad(