Архив описаний прошлых летних школ

Летняя проектная онлайн-школа программирования для обучающихся СПбГУ (2024, онлайн).

Школа проводилась с 8 июля по 3 августа. 8 июля в 12:00 прошло открытие школы и презентация проектов. 2 августа были проведены презентации результатов проектов, подведение итогов и закрытие школы.

Проекты летней школы

Дедупликация: оптимизация алгоритмов и расширение возможностей в файловой системе ChunkFS

Rust, Cargo

Описание
Многие современные системы хранения данных используют дедупликацию для оптимизации хранения данных. Новые алгоритмы дедупликации и их эвристические оптимизации появляются каждый год. Распространенной проблемой таких исследований является недостаток интеграционного сравнения методов: алгоритмы сравниваются в чистой форме, без учета взаимодействия с файловой системой. Для систематического стандартизированного сравнения реализаций алгоритмов дедупликации на языке Rust была разработана модельная универсальная файловая система ChunkFS. Эта файловая система допускает простую интеграцию новых алгоритмов, эвристик и оптимизаций, сохраняя высокий уровень абстракции. Таким образом ChunkFS предоставляет возможность разрабатывать и анализовать комбинированные подходы к дедупликации.
Репозиторий

Требования к кандидату

Желание погрузиться в низкоуровневую разработку с помощью Rust и Cargo. Понимание базовой теории алгоритмов. Выполнение небольшого тестового задания.

Руководители

Гориховский Вячеслав Игоревич, Пилецкий Олег Антонович

Рекомпиляция с помощью Ghidra

Си, ассемблер, Linux, gcc

Описание
Ghidra — популярный инструмент с открытым исходным кодом для задач реверс-инжиниринга. Одной из возможностей данного инструмента является декомпиляция двоичного кода для x86, ARM, RISC-V и других целевых архитектур в исходный текст на языке C. Однако не предполагается, что полученный исходный текст можно скомпилировать. Например, ghidra не распознает функции рантайма языка C и еще некоторые служебные конструкции. Тем не менее, в некоторых случаях (более сложных, чем HelloWorld) удается после некоторых ручных изменений добиться рекомпилируемости и работоспособности кода. В данной дорожке нужно будет проводить эти рутинные изменения в автоматическом режиме. Для это нужно будет допилить ghidra в этом направлении, либо реализовать дополнительную пост-обработку декомпилированных файлов.
Репозиторий

Требования к кандидату

Полезно знакомство с языком Си. Некотрое знакомство с ассемблером, линуксом, gcc необязательно.

Руководители

Кутуев Владимир Александрович, Смирнов Кирилл Константинович

Современные технологии систем хранения данных

Си, Linux

Описание
Системы хранения данных (СХД) играют важную роль в современном мире, обеспечивая эффективное управление информацией, безопасность данных и доступность информации. В последнее десятилетие наибольшее распространение получают программные решения для СХД (software-defined storage). Наиболее распространенными типами СХД по способам обращения к данным являются объектные, файловые и блочные. Физические устройства хранения зачастую предоставляют именно блочный доступ. Примерами таких устройств являются HDD, SSD, NVMe диски, СD-диски, дискеты. Помимо этого существуют и виртуальные блочные устройства: логические тома, партиции, RAID-массивы. Умение работать с блочными устройствами и понимание принципов их работы является необходимым и при разработке других типов СХД. В рамках летней школы планируется реализовать лог-структурированность на базе простого блочного устройства различными способами. В дальнейшем планируется сравнить их производительность и написать статью. Реализация на основе хеш-таблицы с открытой адресацией Реализация на основе хеш-таблицы с закрытой адресацией Реализация на основе двоичного дерева поиска Реализация на основе списка с пропусками (skip list) Реализация на основе лог-структурированного дерева (LSM tree) Концепция лог-структурированности используется для реализации кеширования, журналирования, снепшотов и другой функциональности СХД. Любую из этих тем в дальнейшем можно будет взять в качестве курсовой или дипломной работы.
Репозиторий

Требования к кандидату

Знание английского языка для чтения документации. Знание языка Си. Умение работать в терминале ОС Linux (vim, ssh, sshfs, cd, ls, cp, …). Умение работать с виртуальными машинами (Oracle VirtualBox, QEMU, др.). Умение дебажить и отлаживать свой код. Знание базовых структур данных, их преимуществ и недостатков (стек, список, дерево, хеш-таблицы). Базовое понимание концепций многопоточного и асинхронного программирования. Спокойное или положительное отношение к программированию “на листочке”

Руководители

Васенина Анна Игоревна

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

Си, Linux, ассемблер

Описание
Планируется создать простой компилятор из следующих шагов: Синтаксический анализ (i.e. парсер) вручную рекурсивным спуском. Никаких грамматик в форме БНФ или генераторов парсеров для простого компилятора не нужно. Простое промежуточное представление. Скорее всего настолько простое, что вырожденное. Самым содержательным должно оказаться преобразование сложные арифметический выражений в простые, например, x:=a*b+c в t1:=a*b; x:=t1*c, но можно даже без этого. Простые оптимизации, или совсем без них. Например, упростить x+y-x в y для беззнаковых чисел. Максимально простое порождение инструкций (для базового RISC-V 64). Да, придется потратить немного времени на привыкание к ассемблеру, чтобы не путать вход и выход у команд. Но в общем и целом для простого компилятора многого знать не надо: инструкции языка можно транслировать примерно одинаково независимо от контекста. Функции проблем не вызовут, во-первых, потому что их нет, но даже если есть, то можно даже не знать соглашения о вызовах, которые вам рассказывали на первом курсе. Если RISC V выглядит страшно, то можно брать тот ассемблер, что у вас в ноутбуке: для простых компиляторов существенной разницы нет.
Репозиторий

Требования к кандидату

Любить сидеть в терминале GNU/Linux. Основы представления данных: байт, бит, машинное слово, представление целых чисел, в перспективе представление чисел с плавающей точкой. Представлять как компилируются программы Си (понятия рантайма, объектного файла, линковки, умение из исполняемого файла получить его листинг ассемблера).

Руководители

Косарев Дмитрий Сергеевич

Развитие проекта алгоритмической статистики PySATL

Python

Описание
Современная математическая статистика изобилует широким спектром подходов и методов, которые на практике в лучшем случае паршиво реализованы на R. Такие реализации практически невозможно встраивать в свои инструменты и решения. Основной целью проекта является создание единой платформы, объединяющей под общим интерфейсом реализации таких алгоритмов. В рамках летней школы планируется начать объединять имеющиеся наработки в единый фреймворк. Задачи:
  • Расширение пакета для проверки статистических гипотез
  • Интеграция и развитие пакета для оценки параметров смеси распределений mpest
  • Разработка пакета алгоритмов обнаружения разладки
  • Разработка пакета для работы с нормальными смесями дисперсии-среднего
Репозиторий

Требования к кандидату

Умение пользоваться Git и GitHub. Базовое умение программировать на Python. Желание применять математические знания в программировании

Руководители

Гориховский Вячеслав Игоревич, Михайлов Михаил Дмитриевич, Кутуев Владимир Александрович

Сбалансированное разбиение планарных графов

Java

Описание
Многие слышали, что крупные компании проводят серьёзные прикладные исследования, однако сложно разобраться, как это происходит снаружи. В рамках проекта предполагается всесторонне рассмотреть одну задачу, посмотреть на подходы к решению, прототипизировать и сравнить существующие алгоритмы, выявить недостатки и предложить рекомендации для разработчиков. При работе с большими графами ключевой техникой, позволяющей понизить сложность задачи, является разбиение графа на небольшие части. Эти части должны быть, насколько это возможно мало связаны друг с другом. В некоторых ситуациях, кроме размера на полученные компоненты могут накладываться и другие условия приводя к задачам многокритериальной оптимизации. Мы предлагаем реализовать алгоритмы, протестировать их на реальных данных и, если позволит время, добавить поддержку дополнительных ограничений на форму региона, например, ограничений на диаметр. Задачи:
  • Знакомство с постановкой задачи и бэкграундом для алгоритма Inertial flow. В частности, с различными алгоритмами для потоков.
  • Чтение оригинальных статей с алгоритмами, например: Inertial flow, Bubble algorithm
  • Реализация алгоритмов на Java.
  • Тестирование алгоритма на данных из OSM
  • Реализация дополнительных ограничений на форму региона
  • Реализация эвристик для улучшения балансировки
Репозиторий

Требования к кандидату

Умение пользоваться Git и GitHub. Базовое умение программировать на Java. Желание попробовать провести RnD исследование и реализовать современные графовые алгоритмы на практике.

Руководители

Гориховский Вячеслав Игоревич, Чепуркин Константин Михайлович

Сервис для спасения бездомных животных

Go, Gorilla, PostgreSQL,TypeScript, Material UI

Описание
Проект при поддержке сотрудников Yadro из разных департаментов, зоозащитников и волонтеров СПб, создателей группы в вк "Я Потерялся". Цель проекта: сделать удобный и понятный веб-сервис для тех, кто хочет помочь бездомным животным. Проблема, которую мы решаем — систематизация хаоса, который сейчас творится в сфере зоозащиты. За последние годы в нашей стране было сделано очень много для того, чтобы отстоять и утвердить права наших четвероногих друзей. Пришло время запустить своего рода сайт госуслуг для котов и собак.

Основные разделы веб-сервиса:

  1. Поиск потерявшихся животных (новостная лента с возможностью написать сообщение под постом, отсортировать объявления по нужным критериям. По этому вопросу взаимодействуем с группой вк "Я потерялся")
  2. Поиск отловщиков (база компаний и частных лиц, возможность связаться с ними через наш сервис)
  3. Поиск передержки для найденных животных (база фондов, приютов, частных лиц и возможность написать им через наш сервис )
  4. Противодействие жестокому обращению с животными (полезная информация, форма для взаимодействия с МВД РФ по вопросам нарушения статьи 245 УК РФ, 498 ФЗ РФ)
  5. Информация о льготных медицинских услугах для животных (взаимодействие с ветклиниками).

За этот месяц мы надеемся успеть разработать минимально работающую версию. Для это будет нужно:

  1. придумать архитектуру сервиса;
  2. реализовать его основные разделы;
  3. создать современный интерфейс;
  4. собрать фидбэк от пользователей.

Репозиторий

Требования к кандидату

Бэкенд — Go, Gorilla, PostgreSQL Фронтенд — TypeScript, Material UI

Руководители

Чижова Ангелина Сергеевна, Луцив Дмитрий Вадимович, Литвинов Юрий Викторович, Латохин Святослав Алексеевич, Шеремет Ирина Дмитриевна

Логистический портал Cargotime.ru: cервис оценки стоимости пути

TypeScript, Node.js, Nest.js, MySQL/PostgreSQL, Rabbitmq, Docker Swarm

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

Требования к кандидату

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

Руководители

Есин Максим Сергеевич, Корепанова Анастасия Андреевна

Детекция и распознавание блюд шведской линии

Python, Django, MySQL

Описание
Основная цель проекта — создание автоматизированной системы видеоконтроля шведской линии в отелях для минимизации возможных финансовых издержек. Часть проекта, реализуемого в рамках летней школы, является MVP одной из функции — разработки системы на основе машинного обучения для детекции и определения вида блюда, и соответствия их эталонному образцу (из базы данных). Технологический стек проекта составляет Python 3, Django, MySQL и др. В результате практики удастся базово освоить указанные технологии и разработать собственные модели машинного обучения для решения поставленной задачи в соответствии с техническим заданием. После успешного завершения летней школы будет возможно продолжить работу над проектом в рамках платной стажировки и/или трудоустройства для полной реализации и сопровождения всего проекта.
Репозиторий

Требования к кандидату

Python, Django, MySQL

Руководители

Олисеенко Валерий Дмитриевич

Анализ программ и автоматическая генерация тестов

V#, USVM, KLEEF

Описание
Анализ программ уже является частью жизни программистов: автоматический поиск багов в PR на CI с помощью статического анализа или фаззинга, автоматическая генерация тестов с помощью символьного исполнения и SMT-решателей или LLM, большое количество конференций, нацеленных на анализ и синтез программ. В рамках проекта студенты познакомятся поближе с современными технологиями для анализа программ, и, в зависимости от темы, поучаствуют в разработке одного из трех проектов:
  • V# -- анализ программ на платформе .NET
  • USVM -- анализ программ на Java, Python, Go
  • KLEEF -- анализ программ на LLVM (C, C++)
Репозиторий

Требования к кандидату

V#, USVM, KLEEF

Руководители

Костицын Михаил Павлович

Исследование производительности операций линейной алгебры на RISC-V GPGPU Vortex

C/C++: LLVM/Clang, GCC, CMake

Описание
В современном мире графические ускорители общего назначения (GPGPU, “видеокарты”) используются не только для обработки графики, но и для вычислений общего назначения. Одна из классических задач, для решения которой хорошо подходят GPGPU (в силу своей архитектуры и особенностей задачи) — умножение плотных матриц. Хотя принципиально умножение плотных матриц выглядит как идеальная задача для GPGPU, достижение максимальной производительности на реальных устройствах требует глубокого знания их архитектуры и написания достаточно специфичного кода. Архитектура RISC-V набирает популярность. В частности, разрабатывается полностью открытый графический ускоритель Vortex, основанный на этой архитектуре. В рамках школы предлагается изучить особенности архитектуры Vortex и то, как они влияют на производительность произведения матриц.
Репозиторий

Требования к кандидату

Знание стека разработки на C/C++: LLVM/Clang, GCC, CMake, линтеры, отладчики, профилировщики. Понимание основ кросс-компиляции. Понимание основ устройства процессора и памяти: оперативная память, кэши, скорость доступа, промахи кэша. Понимание основ параллельного программирования будет плюсом: параллелизм по данным, синхронизация, потоки, атомарные операции. Знание основ OpenCL или Cuda, опыт разработки под GPGPU будет плюсом.

Руководители

Григорьев Семён Вячеславович, Кутуев Владимир Александрович

Инструмент для анализа BPU

Си, Python

Описание
Почти все современные и не очень современные процессоры используют конвейерную обработку команд: пока одна инструкция выполняется, вторая уже подготавливается к исполнению, а третья вытаскивается из памяти. Эта замечательная идея в реальности сталкивается с серьезными трудностями, которые носят название «конфликты конвейера». Branch Prediction Unit (BPU) — блок процессора, помогающий справляться с некоторыми из них. В прошлом году на летней школе студенты начали разрабатывать инструмент для сравнения эффективности разных BPU. Сейчас инструмент позволяет генерировать тестовые сценарии, запускать эти тесты в симуляторе или на реальном компьютере. В этом году предлагаем развить этот инструмент, добавив в него больше конструкций, нагружающих BPU, добавить демонстрационный Notebook для подробного анализа результатов, а также собрать с помощью инструмента статистику по различным процессорам на существующих бенчмарках.
Репозиторий

Требования к кандидату

Умение пользоваться Git и GitHub. Умение программировать на Python, знание C будет большим плюсом. Понимание процесса компиляции, понимание основ кросс-компиляции будет большим плюсом. Знание ассемблера и знакомство с Gem5 может оказаться полезным

Руководители

Кутуев Владимир Александрович, Смирнов Кирилл Константинович

Улучшение lwIP: обработка ARP пакетов

Си, Linux, gcc/clang

Описание
В стек TCP/IP входит широкий спектр различных протоколов, с различной сложностью алгоритмов и реализацией. Например, размер реализации в Linux стандарта VLAN IEEE 802.1q занимает ~75Kb, а TCP ~200Kb. Для встраиваемых же систем с ограниченными ресурсами такие полноценные реализации не подходят, поэтому возникает необходимость в «легковесных» реализациях. Например, lwIP — одной из таких реализаций — достаточно всего 40Kb. В данной дорожке нужно будет изучить, как устроен стек протоколов TCP/IP в «реальной жизни», почему это иногда не совсем стек, где живут сетевые пакеты в недрах операционной системы, и многое другое. Затем сравнить размеры собранного стека и его производительность на различных аппаратных платформах. Как вариант — можно провести профилирование lwIP на различных нагрузках.
Репозиторий

Требования к кандидату

Необходимо знакомство с языком Си, линуксом, gcc/clang. Полезно знакомство с принципами организации сетей и стеком TCP/IP. Полезно понимание принципов кросс-сборки, профилирования и бенчмаркинга приложений.

Руководители

Кутуев Владимир Александрович, Смирнов Кирилл Константинович

Эксплуатация бинарных уязвимостей программ

C/C++, Assembler

Описание
Стоимость уязвимости типа RCE в Windows стартует от $1 млн. Курс для тех кто хочет разобраться в том, как это работает. В рамках курса предстоит разобраться в уязвимостях типа переполнение буфера, форматная строка, уязвимости кучи, методы эксплуатации и защиты от них. В рамках 8 лекций и практик предстоит на примерах попробовать, на практике методы атаки на тестовые программы, решить задачи с соревнований CTF. Используемые программы: gdb, linux, gcc, IDA Pro, afl-fuzz.
Требования к кандидату

Assembler Intel x32, C/C++

Руководители

Ханов Артур Рафаэльевич

Реализация алгоритмов, используемых в операционных системах

Rust, C/С++

Описание
В компании «СофтКом» прорабатывается создание собственной операционной системы для платформ и задач заказчика. Как правило, это вычислительные задачи реального времени. В связи с этим для летней школы предлагаются следующие задачи:
  • Реализация моделей управления памятью для архитектуры процессора mips64. Предполагается реализация различных алгоритмов выделения и освобождения памяти для использования в ОС реального времени и выполнение анализа производительности этих алгоритмов.
  • Реализация различных алгоритмов диспетчеризации задач для использования в ОС реального времени и сравнительный анализ эффективности этих алгоритмов.
  • Реализация интерфейса для работы с аппаратными таймерами в архитектуре процессора mips64.
Требования к кандидату

Предпочтительный язык реализации задач – Rust. Возможна также реализация на языках C или C++.

Руководители

Архипов Иван, Низамов Ринат

Введение в методы обфускации («запутывания») машинного кода

C++, Cmake, llvm

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

C++, Cmake

Руководители

Бабанов Петр, Низамов Ринат

Веб-эмулятор компьютерной сети Miminet

Python, Linux

Описание
В рамках курсов по компьютерным сетям необходима практика, так как просто лекционного материала недостаточно. Создавать лабораторные классы на основе физического оборудования довольно затратно, поэтому оптимальнее всего использовать виртуальное оборудование. К виртуальному оборудованию относят симуляторы и эмуляторы. Есть наиболее популярные, например, Cisco Packet Tracer, EVE-NG, NetSim, которые применяются иногда и для обучения. Но чтобы начать ими пользоваться, нужно изучить документацию по эксплуатации и произвести дополнительные настройки. В противовес этому подходу, мы создаём свой веб-эмулятор компьютерной сети https://miminet.ru/. Он реализован на базе эмулятора https://mininet.org/ с некоторыми дополнительными возможностями и веб-интерфейсом.

В рамках летней школы предлагаются следующие темы:

  • RSTP

    Для обнаружения и разрыва колец в топологии Ethernet используется семейство протоколов STP. В Miminet на данный момент реализован самый первый протокол STP. Требуется добавить поддержку протокола RSTP.

  • Заметки в Miminet

    Сейчас можно рисовать только сетевые устройства. Необходимо добавить возможность добавлять текстовые заметки прямо на карте с компьютерной сетью.

  • Стабильность сервера

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

Требования к кандидату

Python, Flask, Linux, Bootstrap

Руководители

Зеленчук Илья Валерьевич, Романова Зинаида Андреевна

Средства высокоуровневой разработки для ПЛИС

OCaml, F#, Haskell, Scala

Описание
При использовании соответствующих языков и инструментов современным разработчикам доступно не только программирование готовых процессоров, но и создание своих собственных. Как правило, это необходимо в двух случаях: для создания специализированного процессора под узкую задачу, или для разработки, отладки, тестирования будущего серийного процессора. Подобную возможность предоставляют ПЛИС (программируемая логическая интегральная схема), они же FPGA (field-programmable gate array), и соответствующие языки и инструменты разработки. Традиционно для программирования FPGA используют низкоуровневые языки типа Verilog и VHDL. Не смотря на то, что последние версии VHDL и потомка Verilog — SystemVerilog — формально предоставляют достаточно высокоуровневые конструкции, эти конструкции обычно недоступны программисту: они либо не поддерживаются, либо поддерживаются лишь частично. К сожалению, это характерно не только в open-source инструментах, но и в дорогостоящих проприетарных решениях. Для решения данной проблемы в современном мире код на Verilog и VHDL синтезируют из высокоуровневых языков типа Clash или Chisel. Последние, кроме ускорения процесса разработки и использования языков программирования общего назначения вместо специализированных, предоставляют дополнительные возможности по обеспечению качества и надёжности итогового результата благодаря развитой системе типов, возможности использовать современные инструменты автоматизации доказательства корректности типа Coq и так далее.

Ожидаемые результаты школы:

  • Базовый уровень SystemVerilog. Участники познакомятся с языком, напишут на нем первые несложные программы.
  • Навыки работы с инструментарием. Синтез, размещение и разводка, симуляция, тестбенчи, работа с реальной платой.
  • Базовые знания высокоуровневых средств типа Clash или Chisel
Требования к кандидату

Хороший английский, навыки работы с ОС семейства Linux, знание архитектуры компьютера, знание основ математической логики, базовые знания функциональных языков программирования

Руководители

Григорьев Семён Вячеславович, Пономарев Николай Алексеевич

Портирование и оптимизация библиотеки разреженной линейной алгебры SuiteSparse на RISC-V

C/C++, LLVM/Clang, GCC, CMake

Описание
Библиотека SuiteSparse является одной из лучших библиотек, предоставляющих различные операции разреженной линейной алгебры. Она используется в робототехнике, для обработки изображений, анализа графов, для численных экспериментов в физике и химии и так далее. Так как архитектура RISC-V набирает популярность, возникает задача переноса этой библиотеки на неё. Кроме непосредственно сборки, запуска, проверки корректности работы, возникают вопросы об использовании специфичных возможностей RISC-V для ускорения работы функций, предоставляемых библиотекой.

Задачи:

  • Организовать кросс-компиляцию SuiteSparse под RISC-V и другие архитектуры в CI проекта.
  • Изучить вопросы корректности при запуске на реальных платах с RISC-V. Все ли тесты проходят? Если что-то не работает, то почему?
  • Провести замеры производительности некоторых функций на реальных платах с RISC-V, выявить узкие места, предложить варианты их устранения и при возможности реализовать наиболее перспективные из них.
Требования к кандидату

Знание стека разработки на C/C++, понимание основ кросс-компиляции, понимание основ анализа производительности

Руководители

Григорьев Семён Вячеславович, Кутуев Владимир Александрович

Экспериментальное исследование библиотеки разреженной линейной алгебры Spla на графических ускорителях различных вендоров

C/C++, LLVM/Clang, GCC, CMake

Описание
Разреженная линейная алгебра позволяет строить высокопроизводительные алгоритмы анализа графов, особенно если использовать графические ускорители (GPGPU) для вычислений. Проблема заключается в том, что существует несколько различных разработчиков графических ускорителей с различными архитектурами, и создать переносимое решение, эффективно работающее на ускорителях хотя бы основных разработчиков — нетривиальная задача. Библиотека Spla достаточно успешно решает эту задачу. Однако на рынке появляются новые игроки, существующие разработчики вносят изменения в архитектуру ускорителей и стек инструментов для разработчика. Потому библиотека нуждается в постоянной заботе. В частности, необходимо актуализировать результаты замеров производительности, переносить её на новые архитектуры.

Задачи:

  • Проверить работоспособность тестов на современном программно-аппаратном стеке (свежие версии драйверов, компилятора, рантайма)
  • Наладить CI с self-hosted runner’ом для проекта. Исходный код выложен на GitHub, но он не предоставляет машин с графическими ускорителями для запуска тестов в CI.
  • Актуализировать результаты замеров производительности. В частности, для встроенной графики для AMD Ryzen 9 7900X 12-Core Processor, для которого не так давно появились свежие драйвера.
  • Запустить библиотеку на платах LicheePi 4A и/или StarFive VisionFive 2: платы с процессором RISC-V с GPU от Imagination Technologies.
Требования к кандидату

Знание стека разработки на C/C++, навыки настройки окружения в GitHub, понимание основ анализа производительности, знание основ OpenCL C

Руководители

Григорьев Семён Вячеславович, Кутуев Владимир Александрович