diff --git a/main.typ b/main.typ index dbc3028..9774e9f 100644 --- a/main.typ +++ b/main.typ @@ -335,6 +335,45 @@ NVIDIA приняла решение создать закрытую экоси #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( center, pad( diff --git a/references.bib b/references.bib index 9f8c1da..6c4581e 100644 --- a/references.bib +++ b/references.bib @@ -389,3 +389,25 @@ year = {2019}, 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}, +}