ОТЗЫВ руководителя на выпускную квалификационную работу бакалавра кафедры системного программирования СПбГУ направления 231000 «Программная инженерия» Лобанова Артёма Алексеевича «Применение профильной информации в оптимизациях циклов LLVM» Использование информации о фактическом выполнения программы позволяет не только автоматически применять выборочные оптимизации к самым важным участкам кода, но и выполнять специфические преобразования, для которых при статическом анализе кода недостаточно данных. Например, переупорядочивание линейных участков, полученных после трансляции условного оператора и оператора ветвления; или размещение совместно используемых линейных участков в одной странице памяти для оптимизации доступа процессора к ним. Все основные современные трансляторы языка С для популярных аппаратных платформ и JIT-компиляторы так или иначе умеют использовать статистическую модель программы, основанную на данных, собранных во время исполнения кода. Однако в открытых источниках не удалось найти информации о применении промышленными компиляторами информации о профилях исполнения для раскрутки и векторизации циклов. Перед А.А.Лобановым была поставлена задача прототипирования такого решения на основе библиотеки LLVM. Для этого надо было самостоятельно разобраться с библиотекой LLVM, познакомиться с механизмом профильных оптимизаций и реализовать некоторые. В ходе работы А.А. Лобанов предложил и реализовал работающий на модельном примере метод выбора параметров векторизации циклов для специальных случаев, а также процедуру предсказания профилей на основе подхода, использующего машинное обучение. Основные результаты данной работы представлялись на следующих конференциях. Современные технологии в теории и практике программирования, СПбПУ, 26.04.2017, опубликованы тезисы доклада. СПИСОК-2017 “Всероссийская научная конференция по проблемам информатики”, СПбГУ, 25-27 апреля 2017 г. Текст дипломной работы читается легко, хорошо структурирован, но, к сожалению, недостаточно подробно описывает разработанное решение, у читателя могут возникнуть трудности с воспроизведением полученных результатов. Однако код реализованной функциональности и воспроизводимых экспериментов доступен в сети Интернет https://goo.gl/q8Is41 Отмечу, что если бы А.А.Лобанов проявил чуть меньше самостоятельности и больше контактировал с научным руководителем, возможно, результат был бы представлен полнее, эксперименты были бы поставлены аккуратнее. Несмотря на некоторые замечания к процессу сотрудничества, считаю, что Артём Алексеевич достойно справился с поставленной задачей, продемонстрировал практические навыки разработки системного программного обеспечения и подтвердил свою квалификацию бакалавра программной инженерии. Надеюсь, что Артём Алексеевич станет достойным выпускником кафедры системного программирования, оцениваю работу на “отлично”. Старший преподаватель кафедры системного программирования Я.А.Кириленко 2.06.2017