Оптимизация библиотек под RISC-V

RISC-V — это семейство процессоров с архитектурой, сильно отличающейся от “традиционной” для настольных компьютеров интеловской архитектуры, поэтому даже при наличии компиляторов, собирающих под разные профили RISC-V, известные библиотеки “как они есть” будут работать, скорее всего, плохо, тем более что широко используемые библиотеки оптимизированы под интеловскую архитектуру. Однако без библиотек серьёзный софт на RISC-V не написать, поэтому для сообщества критична задача портирования и оптимизации известных библиотек. Задача, впрочем, осложняется тем, что разные профили RISC-V обладают разными аппаратными возможностями (например, кто-то поддерживает плавающую точку, кто-то нет), так что, строго говоря, оптимизировать библиотеки надо не под RISC-V вообще, а под конкретные ядра. Которых не очень много в открытом доступе, поэтому начать стоит с SCR1 (https://github.com/syntacore/scr1), но иметь в виду, что RISC-V — очень гибкая архитектура. Даже SCR1 в зависимости от параметров сборки может обладать разными возможностями, которые будут влиять на скорость работы кода.

Поскольку библиотек может быть много, проект предполагается групповым. Начать предлагается с GMP (https://gmplib.org/).

Планируемые результаты

  • Форк одной из известных библиотек (какой именно — согласовать с научным руководителем или консультантом), оптимизированный под выбранное ядро RISC-V (какое именно — согласовать с научным руководителем или консультантом).
  • Воспроизводимые эксперименты по замеру производительности до и после оптимизаций.

Этапы разработки

  1. Знакомство с микроэлектроникой вообще и RISC-V в частности (удобнее всего по книге Харриса-Харриса).
  2. Выбор библиотеки, ядра RISC-V и симулятора для экспериментов. Изучение архитектуры ядра. Возможно, научиться пользоваться физической платой.
  3. Исследование профилятором нескольких типичных примеров использования библиотеки. Оптимизация кода.
  4. Выполнение экспериментов.
  5. Оформление итогового отчёта, подготовка к защите.

План коммуникаций

Научный руководитель — Смирнов Кирилл константинович, Кириленко Яков Александрович или Литвинов Юрий Викторович. Требуется минимум раз в неделю отчитываться научному руководителю о ходе работы.

Консультант со стороны Syntacore — Сергей Якушкин или кто-то, кого он назначит, порядок коммуникации с ним определится по мере работы над проектом.

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

Умение не теряться в командной строке Linux и собирать разный open-source-код.

Уровень

2 курс, 3 курс


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

Смирнов Кирилл Константинович


Консультант

Литвинов Юрий Викторович


Источник

YADRO