docs: add section on paradigm shifts in HPC with references
This commit is contained in:
parent
1dd2cd94a4
commit
fdd02841c2
2 changed files with 61 additions and 0 deletions
39
main.typ
39
main.typ
|
|
@ -335,6 +335,45 @@ NVIDIA приняла решение создать закрытую экоси
|
||||||
|
|
||||||
#pagebreak()
|
#pagebreak()
|
||||||
|
|
||||||
|
= Смена парадигм: историко-философский анализ
|
||||||
|
|
||||||
|
== Подход Куна: парадигмы и научные революции
|
||||||
|
|
||||||
|
Концепция научных революций Томаса Куна, изложенная в его фундаментальной работе "Структура научных революций"@kuhn_structure_2009. Согласно Куну, научное знание развивается не линейно и кумулятивно, а через периоды "нормальной науки", прерываемые радикальными сменами парадигм. В контексте HPC подобная динамика проявляется с особенной отчетливостью:
|
||||||
|
|
||||||
|
#list(
|
||||||
|
[ переход на векторизацию в контексте высокопроизводительных вычислений; ],
|
||||||
|
[ затем переход к массовому параллелизму; ],
|
||||||
|
[ потом пришло поколение вычислений на GPGPU; ],
|
||||||
|
[ приход DSL и автогенерации кода мы видим в настоящее время. ],
|
||||||
|
marker: "-",
|
||||||
|
indent: text-indentation,
|
||||||
|
)
|
||||||
|
|
||||||
|
== Проблема "аппаратно-зависимого программирования"
|
||||||
|
|
||||||
|
Фундаментальная проблема в истории HPC заключается в некоторой перпендикулярности взглядов, между стремлением к универсальности программных абстракций и неизбежной зависимостью от специфики аппаратного обеспечения. Этот конфликт имеет глубокие философские корни, восходящие к дихотомии между идеальным и материальным, между формой и содержанием.
|
||||||
|
|
||||||
|
История демонстрирует циклический паттерн: каждая новая эпоха начинается с повышения уровня абстракции, но постепенно программисты вынуждены спускаться к более низким уровням для достижения приемлемой производительности. Переход от Fortran к MPI казался шагом назад в плане удобства программирования, но был необходим для эффективного использования распределенных систем. Аналогично, CUDA представляет собой относительно низкоуровневый интерфейс по сравнению с традиционными последовательными языками, но обеспечивает контроль, необходимый для эффективного использования GPU.
|
||||||
|
|
||||||
|
Современные попытки создания универсальных моделей, такие как OpenCL и SYCL, стремятся найти баланс между портируемостью и производительностью. Однако практика показывает, что достижение производительности, сопоставимой с платформо-специфичными решениями, часто требует использования расширений и оптимизаций, специфичных для конкретного оборудования. Это подтверждает тезис о том, что физические ограничения аппаратного обеспечения фундаментально влияют на структуру эффективных вычислений.
|
||||||
|
|
||||||
|
== Текущие дискуссии в научном сообществе
|
||||||
|
|
||||||
|
Современный ландшафт высокопроизводительных вычислений характеризуется напряженными дебатами относительно будущего программных моделей и философии развития технологий. Центральная линия этих дискуссий проходит между проприетарными и открытыми стандартами, что отражает более широкий конфликт между коммерческими интересами и научными идеалами открытости и воспроизводимости.
|
||||||
|
|
||||||
|
CUDA быстро стала де-факто стандартом для программирования GPU в научных вычислениях и машинном обучении. Однако проприетарная природа CUDA создает существенные проблемы для научного сообщества. Исследования, основанные на CUDA, привязаны к оборудованию NVIDIA, что ограничивает воспроизводимость и создает зависимость от единственного производителя. Кроме того, закрытость CUDA противоречит принципам открытой науки, где воспроизводимость и независимая верификация являются фундаментальными ценностями.
|
||||||
|
|
||||||
|
OpenCL был задуман как универсальная альтернатива проприетарным решениям. Философия OpenCL воплощает идеалы открытости и портируемости: единый код может исполняться на процессорах различных производителей, включая CPU, GPU и FPGA. Однако на практике OpenCL столкнулся с серьезными трудностями -- различия в реализациях между производителями, отсутствие единой экосистемы инструментов и библиотек, а также часто более низкая производительность по сравнению с платформо-специфичными решениями ограничили его принятие.
|
||||||
|
|
||||||
|
SYCL, разработанный Khronos Group и впервые выпущенный в 2014 году, представляет собой попытку модернизировать подход OpenCL через использование современных возможностей C++@reinders_data_2021. SYCL стремится соединить удобство высокоуровневого программирования с производительностью и портируемостью. Проекты, основанные на SYCL, -- например, oneAPI от Intel, -- представляют видение будущего, в котором единая кодовая база может эффективно исполняться на разнородных архитектурах. Однако остается открытым вопрос, сможет ли SYCL преодолеть фундаментальное противоречие между универсальностью и оптимальной производительностью.
|
||||||
|
|
||||||
|
Дискуссия о будущем низкоуровневых языков программирования отражает более глубокий философский вопрос о природе вычислительной абстракции. С одной стороны, существует тенденция к повышению уровня абстракции, воплощенная в развитии DSL и автоматической генерации кода. Halide, TVM и подобные системы демонстрируют, что для многих классов приложений возможно автоматически генерировать высокоэффективный код из высокоуровневых спецификаций. С другой стороны, существуют веские аргументы в пользу сохранения значимости низкоуровневого программирования. Появление новых архитектур, таких как квантовые компьютеры, нейроморфные системы и специализированные ускорители для машинного обучения, требует глубокого понимания аппаратного уровня для эффективного использования этих систем.
|
||||||
|
|
||||||
|
Современное состояние можно охарактеризовать как период плюрализма и экспериментирования. Научное сообщество признает, что различные подходы имеют свои области применимости, и вместо поиска единственного универсального решения наблюдается развитие экосистемы взаимодополняющих технологий. Этот плюрализм отражает зрелость области, признающей сложность и многообразие вычислительных задач, но также создает вызовы для обучения специалистов и поддержания кодовых баз.
|
||||||
|
|
||||||
|
#pagebreak()
|
||||||
|
|
||||||
#align(
|
#align(
|
||||||
center,
|
center,
|
||||||
pad(
|
pad(
|
||||||
|
|
|
||||||
|
|
@ -389,3 +389,25 @@
|
||||||
year = {2019},
|
year = {2019},
|
||||||
pages = {193--205},
|
pages = {193--205},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@book{kuhn_structure_2009,
|
||||||
|
address = {Chicago},
|
||||||
|
edition = {3. ed., [Nachdr.]},
|
||||||
|
title = {The structure of scientific revolutions},
|
||||||
|
isbn = {9780226458083 9780226458076},
|
||||||
|
language = {eng},
|
||||||
|
publisher = {Univ. of Chicago Press},
|
||||||
|
author = {Kuhn, Thomas S.},
|
||||||
|
year = {2009},
|
||||||
|
}
|
||||||
|
|
||||||
|
@book{reinders_data_2021,
|
||||||
|
address = {New York},
|
||||||
|
title = {Data parallel {C}++: mastering {DPC}++ for programming of heterogeneous systems using {C}++ and {SYCL}},
|
||||||
|
isbn = {9781484255735},
|
||||||
|
shorttitle = {Data parallel {C}++},
|
||||||
|
language = {eng},
|
||||||
|
publisher = {Apress open},
|
||||||
|
author = {Reinders, James and Ashbaugh, Ben and Brodman, James and Kinsner, Michael and Pennycook, John and Tian, Xinmin},
|
||||||
|
year = {2021},
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue