Compare commits

...

3 commits

2 changed files with 124 additions and 4 deletions

View file

@ -2,6 +2,12 @@
#let text-size = 14pt
#let leading = 1em
#let department = "высокопроизводительных вычислений"
#let topic = "История развития языков и моделей программирования для высокопроизводительных вычислений"
#let author = "Горбацевич Андрей Анатольевич"
#let field-of-study = "2.3 Информационные технологии и телекоммуникации"
#let program = "2.3.1 Системный анализ, управление и обработка информации, статистика"
#set text(
font: "Times New Roman",
size: text-size,
@ -21,6 +27,58 @@
numbering: "1"
)
#show "〜": h(text-indentation)
#{
set page(
numbering: {},
footer: "Красноярск 2025"
)
set align(center)
set par(leading: leading)
text("Министерство науки и высшего образования РФ\n")
set par(leading: leading / 2)
[
Федеральное государственное автономное образовательное учреждение высшего образования "Сибирский федеральный университет"
]
set par(leading: leading)
text("Кафедра " + department)
v(leading*8)
[*РЕФЕРАТ*]
v(0pt)
text("по теме: " + ["#topic"])
v(leading*2)
set align(left)
text("Подготовил " + author)
v(0pt)
text("Направление подготовки: " + field-of-study)
v(0pt)
text("Программа: " + program)
v(leading*8)
table(
rows: 6,
columns: (auto, 1fr, auto, 1fr),
stroke: none,
inset: 0%,
[Проверил], [`______________________________`], [/], [`______________________________`],
[], [#pad(top: 0.5em, align(center,text(size: text-size/3*2, [_(ФИО преподавателя)_])))], [], [#pad(top: 0.5em, align(center,text(size: text-size/3*2, [_(зачтено/не зачтено)_])))]
)
v(leading*3)
table(
rows: 6,
columns: (1fr, 1fr, 2fr),
stroke: none,
inset: 0%,
[Отдел аспирантуры], [], [],
[], [#pad(top: 0.5em, align(center, text(size: text-size/3*2, [_(печать)_])))], [],
)
}
#pagebreak()
#set heading(
numbering: "1.1.1.1",
)
@ -39,12 +97,14 @@
),
)
#show "〜": h(text-indentation)
#align(
center,
outline(
title: "СОДЕРЖАНИЕ"
title: pad(
left: -text-indentation,
bottom: text-size,
"СОДЕРЖАНИЕ"
)
)
)
@ -54,6 +114,7 @@
center,
pad(
left: -text-indentation,
bottom: text-size,
heading(
numbering: none,
"Введение"
@ -245,7 +306,7 @@ HPF стал попыткой расширения языка программи
OpenMP появился как дополнение к MPI -- в этой библиотеки реализовывался параллелизм через общую память с помощью директив для компилятора, вставляемых в код программы. Такой подход OpenMP снижал сложность внедрения многопоточного выполнения в рамках одной машины. При этом различия между моделью распределённых вычислений MPI и подходом OpenMP позволяло использовать их вместе для ещё большего ускорения вычислений.
== Философская проблема: что считать "естественной" моделью параллелизма?
== Что считать "естественной" моделью параллелизма?
Распространение подходов к параллельному программированию отражало более глубокие, неразрешённые вопросы о фундаментальной природе параллельных вычислений. Исследователи и практики вели -- и продолжают вести -- длительные дискуссии о том, следует ли выражать параллелизм в алгоритме или же стоит полагаться на аппаратно-ориентированные подходы.
@ -374,10 +435,25 @@ 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(
left: -text-indentation,
bottom: text-size,
heading(
numbering: none,
"СПИСОК СОКРАЩЕНИЙ"
@ -405,6 +481,7 @@ IR (Intermediate Representation) -- промежуточное представ
center,
pad(
left: -text-indentation,
bottom: text-size,
heading(
numbering: none,
"СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ"

View file

@ -411,3 +411,46 @@
author = {Reinders, James and Ashbaugh, Ben and Brodman, James and Kinsner, Michael and Pennycook, John and Tian, Xinmin},
year = {2021},
}
@article{mittal_survey_2015,
title = {A {Survey} of {CPU}-{GPU} {Heterogeneous} {Computing} {Techniques}},
volume = {47},
issn = {0360-0300, 1557-7341},
url = {https://dl.acm.org/doi/10.1145/2788396},
doi = {10.1145/2788396},
abstract = {As both CPUs and GPUs become employed in a wide range of applications, it has been acknowledged that both of these Processing Units (PUs) have their unique features and strengths and hence, CPU-GPU collaboration is inevitable to achieve high-performance computing. This has motivated a significant amount of research on heterogeneous computing techniques, along with the design of CPU-GPU fused chips and petascale heterogeneous supercomputers. In this article, we survey Heterogeneous Computing Techniques (HCTs) such as workload partitioning that enable utilizing both CPUs and GPUs to improve performance and/or energy efficiency. We review heterogeneous computing approaches at runtime, algorithm, programming, compiler, and application levels. Further, we review both discrete and fused CPU-GPU systems and discuss benchmark suites designed for evaluating Heterogeneous Computing Systems (HCSs). We believe that this article will provide insights into the workings and scope of applications of HCTs to researchers and motivate them to further harness the computational powers of CPUs and GPUs to achieve the goal of exascale performance.},
language = {en},
number = {4},
urldate = {2025-12-08},
journal = {ACM Computing Surveys},
author = {Mittal, Sparsh and Vetter, Jeffrey S.},
month = jul,
year = {2015},
pages = {1--35},
}
@book{kirk_programming_2017,
address = {Amsterdam Boston Heidelberg},
edition = {Third edition},
title = {Programming massively parallel processors: a hands-on approach},
isbn = {9780128119860},
shorttitle = {Programming massively parallel processors},
language = {eng},
publisher = {Elsevier, Morgan Kaufmann},
author = {Kirk, David and Hwu, Wen-mei W.},
year = {2017},
}
@misc{jia_beyond_2018,
title = {Beyond {Data} and {Model} {Parallelism} for {Deep} {Neural} {Networks}},
url = {http://arxiv.org/abs/1807.05358},
doi = {10.48550/arXiv.1807.05358},
abstract = {The computational requirements for training deep neural networks (DNNs) have grown to the point that it is now standard practice to parallelize training. Existing deep learning systems commonly use data or model parallelism, but unfortunately, these strategies often result in suboptimal parallelization performance. In this paper, we define a more comprehensive search space of parallelization strategies for DNNs called SOAP, which includes strategies to parallelize a DNN in the Sample, Operation, Attribute, and Parameter dimensions. We also propose FlexFlow, a deep learning framework that uses guided randomized search of the SOAP space to find a fast parallelization strategy for a specific parallel machine. To accelerate this search, FlexFlow introduces a novel execution simulator that can accurately predict a parallelization strategy's performance and is three orders of magnitude faster than prior approaches that have to execute each strategy. We evaluate FlexFlow with six real-world DNN benchmarks on two GPU clusters and show that FlexFlow can increase training throughput by up to 3.8x over state-of-the-art approaches, even when including its search time, and also improves scalability.},
urldate = {2025-12-08},
publisher = {arXiv},
author = {Jia, Zhihao and Zaharia, Matei and Aiken, Alex},
month = jul,
year = {2018},
note = {arXiv:1807.05358},
keywords = {Computer Science - Distributed, Parallel, and Cluster Computing},
}