CNN TürkBitcoin ETF'lerinde 5 günlük bilanço! 510 milyon dolarlık çıkışUN NewsFormer UN rights chief awarded Nobel Peace PrizeDaily MaverickANTI-FOREIGNER UNREST: Home Affairs scraps asylum seeker directive after violence in Durban and SowetoThe Jerusalem PostParashat Bereishit: The world of waterRTP DesportoVillas-Boas diz que a venda de Rodrigo Mora evitaria prejuízo da FC Porto SADEl ComercioEcuador y los sofisticados drones Reaper: el objetivo es consolidar el control del mar, el aire y el territorioInquirerPiston protests World Bank-led transport conference in BaguioInquirer EntertainmentMiss Universe factions clash over 2027 host country claims한겨레프로농구 삼성 달라졌네~ 10년 만에 개막 2연승…이규태 18득점 활약ZDF heuteAktuelle Pressemitteilungen des ZDFColliderApple TV’s Biggest Series Officially Ends With One of Its Highest-Rated EpisodesGIGAZINEjevやGPT-6 Luna Decisionsなどの素早い判断に特化した確率モデルがパックマンをプレイするベンチマーク「jevman」
The Daily Newsstand · Free, Always
Friday, October 9, 2026

От RISC‑V до pull request в open source: что сделали участники летней школы СПбГУ за месяц

Translate

В начале августа завершилась Летняя проектная школа программирования СПбГУ. 30 студентов, в том числе обучающиеся на образовательных программах ТОП ИТ СПбГУ, якорным партнером которых выступает YADRO, работали над задачами в области системного программирования, архитектуры RISC-V, разработки компиляторов, использования ПЛИС и оптимизации ПО с открытым исходным кодом. На итоговой защите выступили 29 участников. Помимо подготовки учебных отчетов, участники находили ошибки в проектах с открытым исходным кодом, готовили сообщения об ошибках (bug reports) и запросы на включение изменений (pull requests), профилировали приложения и оптимизировали библиотеки.

Школа проходила с 6 июля по 1 августа. В ее основе лежало проектное обучение: студенты осваивали новые технологии и инженерные подходы, работая над практическими задачами вместе с наставниками. Отдельное направление было посвящено RISC-V. О проектной работе и ее результатах рассказываем в этом материале.

Статистика в цифрах

Непосредственно над проектами работали 30 студентов, а на итоговой защите выступили 29 участников. Интерес к школе был заметно шире проектного трека: около 200 человек подписались на анонсы, 50 приняли участие в очном открытии. Но стоит отметить, что эти показатели описывают разные форматы участия и не являются последовательными этапами отбора: подписка на анонсы, посещение открытия и участие в проектной работе учитывались отдельно.

Студенты работали над задачами в рамках 7 проектов. Несколько проектов в ходе работы разделились на самостоятельные направления, поэтому на итоговой защите были представлены результаты по 15 темам.

Как была устроена проектная работа

Основой школы была работа над практическими задачами с наставниками. Такой формат отличается от подхода, при котором участники сначала проходят учебный курс, а затем выполняют одинаковую итоговую работу. Здесь исходные задачи различались как по предметной области, так и по типу результата.

В одном случае требовалось исследовать производительность существующего приложения, в другом - разобраться с компилятором или ПЛИС, в третьем - найти причину ошибки в проекте с открытым исходным кодом, в четвертом - реализовать оптимизацию алгоритма и измерить ее эффект.

Результатами проектов могли быть:

  • прототип;

  • набор результатов профилирования;

  • оптимизированная реализация;

  • описание обнаруженной ошибки и сценарий ее воспроизведения;

  • сообщение об ошибке;

  • запрос на включение изменений;

  • отчет с результатами экспериментов и измерений.

Итоговая защита в таком формате становится важной частью проектной работы: участники представляют исходную задачу, проведенное исследование, полученные метрики, ограничения решения и финальное состояние проекта.

RISC-V-проекты: от системного ПО до ПЛИС

Школа стала примером взаимодействия участников Альянса RISC-V в образовательном проекте. СПбГУ входит в состав Альянса, а в подготовке программы и работе со студентами участвовали специалисты компаний - членов Альянса.

Большая часть проектной программы была связана с задачами Лаборатории YADRO СПбГУ. С направлениями работы лаборатории были связаны 14 из 15 предложенных проектных тем; над ними работали 22 студента.

Образовательная программа включала 13 лекций, с которыми выступили 11 экспертов. Три лекции провели представители YADRO, еще три - специалисты Сбера. YADRO - один из учредителей Российского Альянса RISC-V; Сбер вошел в состав Альянса в 2024 году.

Лекционная программа охватывала широкий диапазон тем - от разработки с ИИ-агентами и современных ML-подходов до дедупликации данных и работы с одноплатными компьютерами. По статистике организаторов, наибольший интерес участников вызвали лекции "Введение в разработку с ИИ-агентами", "Статистические VS ML-подходы в современных алгоритмах", "Введение в дедупликацию: как забэкапить бэкап" и "Never Mind The Containers Here's SBC".

Семен Вячеславович Григорьев, доцент кафедры системного программирования СПбГУ, член научного коллектива лаборатории, так оценивает роль такого взаимодействия:

"За несколько лет сотрудничества с YADRO коллектив Лаборатории накопил хороший опыт вокруг RISC-V для получения практически полезных результатов силами студентов в сжатые сроки Летней школы. Задачи открытой платформы — отличная база для обучения студентов. 

Хочется выразить благодарность Альянсу за огромную работу по популяризации этих технологий. Такое взаимодействие позволяет, что особенно важно, студентам видеть актуальность того, над чем они работают, того, что они изучают. Если же говорить о результатах Школы, то хочется верить, что для большинства участников это был лишь старт большой работы и они продолжат заниматься проектами в рамках курсовых и дипломных проектов. В целом, это одна из традиций Школы: ребята приходят для того, чтобы погрузиться в область и в дальнейшем, уже в учебном году, получить более весомые, качественно оформленные и проработанные результаты."

Блок задач с использованием архитектуры RISC-V

Отдельный крупный блок проектной программы был связан с RISC-V. Выбор RISC-V для учебных проектов был осознанным. Открытая и общедоступная спецификация архитектуры команд (ISA) позволяет студентам изучать ее непосредственно по стандарту и связывать с работой компилятора, системного ПО и аппаратных реализаций. При использовании открытых ядер и инструментов этот путь можно продолжить вплоть до экспериментов с RTL и реализацией процессорной системы на ПЛИС.

Для обучения это дает возможность рассматривать систему сразу на нескольких уровнях - от ISA и аппаратной реализации до инструментария разработки (toolchain), профилирования и оптимизации прикладного кода. В таких проектах студенты могут получить работающий результат и разобраться в устройстве аппаратной и программной частей системы.

Четыре из семи проектов, представленных на итоговой защите, были связаны с RISC-V. В них работали 10 участников школы.

В RISC-V-часть проектной программы вошли четыре направления:

  • "Миграция на RISC-V: профилирование приложений" - 5 самостоятельных задач, 5 студентов;

  • "Работа с ПЛИС" - 2 задачи, 2 студента;

  • "Оптимизация произведения Кронекера для библиотеки SuiteSparse:GraphBLAS" - 1 студентка;

  • "Учебный компилятор" - 2 задачи, 2 студента.

RISC-V-задачи не ограничивались проверкой переносимости приложений и работой с компилятором. Отдельные проекты были посвящены ПЛИС и оптимизации алгоритмов разреженной линейной алгебры - к ним вернемся ниже.

OpenSSL, GCC, Boost и ускорение кода

Студенты исследовали производительность и корректность работы широко используемых проектов с открытым исходным кодом на одноплатных компьютерах с RISC-V, а также особенности оптимизации программного кода под эту архитектуру. Работа включала поиск проблем в компиляторах и приложениях, подготовку исправлений и сообщений об ошибках, использование векторных расширений RISC-V и экспериментальную оценку различных вариантов оптимизации.

В отдельных прикладных сценариях оптимизация обеспечила прирост производительности на 20%, а для некоторых алгоритмов, использующих векторизацию, - ускорение до двух раз.

Одним из направлений стала работа с OpenSSL. На одной из отладочных плат с ранней версией RISC-V процесс получал сигнал SIGBUS, связанный с обработкой невыровненных данных. Причина проблемы оказалась в GCC: компилятор некорректно преобразовывал операции с невыровненными векторами и при этом игнорировал соответствующий флаг -mvector-string-align. Были подготовлены патч и сообщение об ошибке для GCC.

Похожая проблема была выявлена при работе с Box2D, где нарушение требований к детерминированной математике проявлялось только при генерации векторизованного кода. GCC игнорировал настройку -ffp-contract=off и при векторизации преобразовывал выражения вида a + b * c в инструкции FMA (vfmadd.vv). Для скалярного кода такое поведение не наблюдалось. Студент подготовил патч для GCC и соответствующее сообщение об ошибке, а в основном репозитории Box2D была открыта отдельная задача: Box2D issue #1086.

Для zstd была проведена серия экспериментов по оптимизации кода под RISC-V. Наибольший эффект дала настройка -mtune=spacemit=x60: в отдельных сценариях она обеспечила прирост производительности более чем на 20%.

В проекте LZ4 исследовалась возможность ускорения операций обработки данных за счет использования векторных инструкций RISC-V. Была предложена реализация векторного копирования. Результаты работы оформлены в виде отчета и запроса на включение изменений в основной проект: LZ4 pull request #1778.

Дополнительно исследовались различные варианты оптимизации сборки и выполнения jq. На плате с RISC-V (Banana Pi F3) удалось повысить производительность примерно на 17%, а на Ryzen 7 - на 20%.

Еще два проекта были посвящены оптимизации библиотек Boost. В Boost.UUID была реализована векторизация методов, отвечающих за преобразование строкового представления UUID: производительность отдельных алгоритмов удалось увеличить примерно в два раза. В библиотеке регулярных выражений Boost.Regex удалось ускорить диспетчеризацию методов примерно в 1,5 раза на Core i3. Однако на RISC-V (Banana Pi F3) практически никакого выигрыша не наблюдалось. Это стало отдельным результатом: он указывает на существенное влияние возможностей и характеристик блока предсказания переходов (BPU) микроархитектуры на эффективность оптимизаций.

Яков Александрович Кириленко, директор образовательного центра системного программирования СПбГУ (ТОП ИТ):

"Важным результатом для нас стало то, что избранные проекты студентов программы ТОП ИТ за время Летней школы развились в настоящие исследования и вышли далеко за рамки учебных задач: для обнаруженных проблем были подготовлены патчи и багрепорты в GCC и другие open-source проекты, а оптимизации для Boost, LZ4 и jq оформлены в виде pull request и отчетов.

Полученные результаты показывают, что наши студенты могут предлагать реальные улучшения программного стека RISC-V, потенциально полезные широкому кругу пользователей."

Работа с ПЛИС

Проект по работе с ПЛИС прежде всего решал образовательную задачу. Участники начинали практически без опыта работы с SystemVerilog и разработки для ПЛИС, поэтому постепенно переходили от базовых упражнений к полноценной реализации на плате.

В основу части заданий легли материалы разрабатываемого учебного курса. Студенты разрабатывали и тестировали цифровую логику, осваивали взаимодействие с кнопками, переключателями, светодиодами и семисегментными индикаторами, готовили и загружали прошивки, выполняли отладку.

К итоговой защите участники представили работающие устройства. Для них этот проект стал первым этапом подготовки к более сложной работе с RTL и процессорными системами RISC-V.

Оптимизация произведения Кронекера для библиотеки SuiteSparse:GraphBLAS

Открытый проект SuiteSparse:GraphBLAS предоставляет набор высокопроизводительных примитивов разреженной линейной алгебры, предназначенных прежде всего для создания алгоритмов анализа графов. В проекте реализована одна из классических операций - произведение Кронекера (или тензорное произведение). Для летней школы были предложены задачи по снижению потребления памяти, улучшению поддержки механизмов JIT-сборки и проверке их работоспособности на RISC-V. Текущие результаты были представлены на Школе молодых ученых при форуме "Микроэлектроника".

Учебный компилятор

Также проводился более учебный проект, где несколько студентов разработали простой учебный компилятор с нуля: синтаксический анализ, промежуточное представление и кодогенерация в листинг ассемблера архитектуры RISC-V. Данный проект повторяется уже не первый год, и его основной целью является рассеять страх студентов перед инструментами разработки, и показать, что разработка простого компилятора программ-факториалов - не такая уж и сложная задача.

Отзывы и мнение участников

Показательна и оценка школы ее участниками. В отзывах повторяются общие темы: освоение Linux и инструментов системной разработки, знакомство с архитектурой RISC-V и работа с реальными проектами с открытым исходным кодом. Для части студентов школа стала также первым опытом взаимодействия с разработчиками основных проектов (upstream). Ниже - впечатления четырех первокурсников образовательных программ ТОП ИТ СПбГУ.

Дан Эдуардович Кахян, студент 1-го курса программы "Программная инженерия" ТОП ИТ:

"За месяц в школе я наконец-то освоился в Linux и разобрался в системных вещах, с которыми раньше почти не работал. Свой проект по миграции библиотек на RISC-V я довел до конца - отправил pull requests в Boost. Их пока не приняли, но то, что мой код смотрят в upstream, уже приятно. Главное, я впервые делал что-то реальное и видел результат своей работы."

Павел Дмитриевич Куляка, студент 1-го курса программы "Технология программирования" ТОП ИТ:

"За месяц, проведенный в Летней школе, я освоился в терминале GNU/Linux, стал лучше понимать связь между операционной системой, языком C и стандартной библиотекой, впервые попробовал собрать компилятор, а также узнал много нового об архитектурах и микроархитектурах процессоров. Кроме того, в рамках моего проекта был написан патч для jq, исправляющий ошибку в тестах. Опыт, приобретенный в рамках Летней школы, оказался для меня действительно ценным. Я очень рад, что смог поучаствовать."

Данил Максимович Грезин, студент 1-го курса программы "Технология программирования" ТОП ИТ:

"За месяц в летней школе я лучше разобрался в Linux и архитектуре процессоров, а также попробовал много новых инструментов, которыми раньше не пользовался. В процессе я нашел проблему в Box2D, которая оказалась связана с ошибкой в GCC, и отправил issue и багрепорт. Больше всего понравилось, что в итоге получилось применить полученные знания на практике, найти реальную проблему и донести ее до разработчиков."

София Сергеевна Широбокова, студентка 1-го курса программы "Программная инженерия" ТОП ИТ:

"Во время летней школы я научилась работать с платой, а также попробовала новые инструменты, например crosstool-ng, minicom и т.д. Самым интересным для меня оказался момент, когда при запуске тестов на плате после кросс-компиляции я столкнулась с проблемой, которая в итоге привела к ошибке в GCC: компилятор некорректно учитывал флаг, связанный с выравниванием векторных обращений к памяти. Мне удалось локализовать проблему и частично решить ее. Я очень рада, что осталась на летнюю школу и получила такой опыт."

Что получилось в итоге

Помимо образовательного результата, проектный формат дал конкретные технические результаты: данные профилирования, найденные ошибки, сообщения об ошибках, оптимизации, запросы на включение изменений и измерения производительности.

Для RISC-V такой формат особенно полезен. Развитие экосистемы требует как аппаратных платформ и поддержки архитектуры в компиляторах, так и прикладной работы с системным и пользовательским ПО: проверки переносимости, поиска архитектурно зависимых участков, профилирования, устранения регрессий и оптимизации производительности.

Для части проектов итоговая защита не стала последним этапом: подготовленные изменения и сообщения об ошибках были переданы в соответствующие проекты с открытым исходным кодом, а некоторые находились на рассмотрении их сопровождающих разработчиков (upstream maintainers).

Подготовка изменений для внешнего проекта приближает учебную задачу к реальной разработке. Она требует воспроизвести проблему, разобраться в существующей кодовой базе, объяснить изменение, проверить отсутствие регрессий и оформить результат так, чтобы его могли рассмотреть разработчики проекта.

Для проектного обучения это конкретный результат: работа оценивается внутри школы и включается в обычный процесс разработки внешних проектов.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.