Важным задачами в области машинного обучения являются задача поиска ближайших соседей и кластеризация объектов. FAISS — библиотека с открытым исходным кодом, предназначенная для решения этих задач. Обычно эти задачи решаются на GPU, но и реализация на CPU с использованием векторных возможностей процессора так же достойна внимания. В зависимости от архитектуры процессора, FAISS эксплуатирует SSE расширение (x86) или NEON (ARM).
В последнее время набирает популярность архитектура RISC-V, которая также располагает векторным расширением RISC-V Vector (RVV). Целью данной задачи является расширение спектра поддерживаемых архитектур расширением RVV v0.7
В целом, можно считать, что RVV 0.7 очень похоже на подобные векторные расширения для x86_64 (Intel) и aarch64 (ARM), поэтому тут радикальное переделывание алгоритма не потребуется, а готовые примеры оптимизации для процессоров других семейств уже есть.
Необходимо будет изучить уже имеющиеся оптимизации в выбранной библиотеке и добавить поддержку расширений RVV-0.7 для архитектуры RISC-V. Всё это будет сопровождаться тестами производительности и должно завершиться ускорением работы одной из самых популярных в своей области библиотек. «Живая» платка у нас есть.
Ссылки: 1. Проект FAISS: https://faiss.ai/ 2. Пример AVX2: https://github.com/facebookresearch/faiss/blob/main/faiss/utils/simdlib_avx2.h 3. Пример neon: https://github.com/facebookresearch/faiss/blob/main/faiss/utils/simdlib_neon.h
2 курс, 3 курс, Бакалаврская ВКР, Магистерская ВКР
Смирнов Кирилл Константинович
YADRO