Проекты:

  1. Оптимизация кодогенерации для платформы ARM.
  2. Разработка инструментов для анализа производительности, эффективности использования памяти и кэша (для платформы ARM).
  3. Автоматическая настройка компиляторных оптимизаций для улучшения производительности и размера кода.
  4. Оптимизации в JIT-компиляторах, виртуальных машинах.
  5. Разработка динамического компилятора для языков высокого уровня на основе LLVM JIT.
  6. Оптимизация кодогенерации для компилятора нейросетей в код CPU и GPU.
  7. Использование информации о трассах выполнения для уточнения оптимизаций, основанных на профиле (PGO) в LLVM.

В ходе работы над проектами студенты приобретают следующие знания и навыки:

  • Внутреннее устройство компилятора.
  • Написание оптимизационного прохода в одном из компиляторов LLVM, GCC или оптимизации для виртуальной машины среды выполнения языка Java/JavaScript.
  • Анализ сгенерированного компилятором кода, сопоставление с промежуточным кодом, и улучшение оптимизаций/кодогенерации в компиляторе на основе анализа.
  • Углубленные знания о процессорных архитектурах, языке ассемблера, соглашениях о вызовах.

Open source проекты, разработанные группой:

LLV8 – an experimental top-tier compiler for V8 JavaScript Engine – https://github.com/ispras/llv8
Tool for Automatic Compiler Tuning (TACT) – https://github.com/ispras/tact
PostgreSQL with JIT compiler for expressions – https://github.com/ispras/postgres
V8 JavaScript Engine with AOTC – https://github.com/ispras/v8-aotc
Webkit with JavaScriptCore AOTB support – https://github.com/ispras/webkit-aotc
GCC with extended modulo scheduling support – https://github.com/ispras/gcc-sms