Skip to content

Repository for matrix multiplication practice for RISC-V THEAD Matrix Extention

Notifications You must be signed in to change notification settings

SokolovAndrey1/MatMul-RVM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RISC-V THEAD Matrix Multiplication practice

Репозиторий для практической работы по оптимизации умножения матриц для архитектуры RISC-V с помощью RISC-V THEAD Matrix Extention

Задача

Разработать реализацию блочного умножения матриц с float элементами используюя инструкции матричного расширения THEAD.
Размер блока должен быть 4х4. Референсная реализация для квадратных матриц gemm_block4x4_ref.

Алгоритм работы

  1. Создать fork репозитория.
  2. Настроить окружение с помощью скрипта env.sh.
  3. Собрать проект с помощью скрипта build.sh.
  4. Запустить тесты на RISC-V Qemu для квадратных и прямоугольных матриц.
  5. Реализовать gemm_block4x4_rvm, используя инструкции из матричного расширения:
    • Для квадратных матриц с размерами, кратные 4. Должны проходить тесты _build/test/test_rvm_square.
    • Опционально: Для произвольных размеров матриц должны проходить тесты _build/test/test_rvm_nonsquare.
  6. Открыть Pull Request c оптимизациями.
    • Соотвествующий произведенным оптимизациям CI должен быть зеленым.

Структура репозитория

  • lib - библиотека с реализацией умножения матриц
  • test - функциональные тесты для проверки корректности алгоритмов

Настройка окружения

После запуска скрипта настройки окружения env.sh в корневой папке репозитория должна быть папка tools с gcc (тулчейн для кросс-компиляции) и qemu (RISC-V симулятор).

Сборка проекта

Для сборки проекта можно использовать скрипт build.sh. В нем выставлены пути для кросс-компиляторов относительно путей в шаге настройке окружения. Можно изменить параметры сборки (например, BUILD_TYPE для отладки)

Опции конфигурации проекта:

  • ENABLE_TEST - Сборка тестов (ON\OFF)
  • BUILD_TYPE - Режим сборки (Release\Debug)
  • BUILD_FOLDER - Папка для артефактов сборки
  • BUILD_STATIC - Включить статическую линковку (ON\OFF)

Пример запуска с помощью QEMU

./tools/qemu/bin/qemu-riscv64 -cpu c907fdvm-rv64 ./_build/test/test_rvm_square
./tools/qemu/bin/qemu-riscv64 -cpu c907fdvm-rv64 ./_build/test/test_rvm_nonsquare
где c907fdvm-rv64 нужен для поддержки RISC-V Matrix Extention

В случае ошибки:
qemu-riscv64: Could not open '/lib/ld-linux-riscv64-lp64d.so.1': No such file or directory
необходимо сконфигурировать проект с -DBUILD_STATIC=ON или добавить ключ запуска -L ./tools/gcc/sysroot/

Отладка кода на RISC-V

Краткая инструкция

About

Repository for matrix multiplication practice for RISC-V THEAD Matrix Extention

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published