Векторизация матричного умножения

Разработано для инжиниринговой компании «Тесис»

Проект состоял в разработке векторизованных реализаций матричного умножения для регистров  SSE, AVX и XEON PHI SIMD. Роль нашей компании заключалась в консультировании проекта и выборе стратегий оптимизации. В итоге была разработана библиотека для оптимизированного умножения мелких квадратных блоков различной размерности (2×2 – 16×16) на длинную последовательность векторов.

Оптимизации подлежали 2 операции:

  • Блочная операция AXPY: Y += X×A, где A вместо скаляра в точечной версии представляет собой квадратную матрицу размера N×N, а прямоугольные матрицы X и Y имеют размерность M×N.
  • Блочная операция DOT: C += XT×Y, где C вместо скаляра в точечной версии представляет собой квадратную матрицу размера N×N, а прямоугольные матрицы X и Y имеют размерность M×N.

В результате было получено ускорение по сравнению с версией с развёрнутыми циклами до 7 раз при типе данных float и до 3,5 на типе double.

Спецификация

Заказчик
Волгоградский государственный технический университет, г. Волгоград (проект выполнялся для инжиниринговой компании «Тесис»)
Сфера применения
быстрое (оптимизированное по коду) умножение матриц
Назначение
быстрое умножение блочно-разряженных матриц
Тип (платформа)
Библиотека под Linux
Технологии и алгоритмы
C++, Assembler, Intrinsics, Intel Xeon Phi
Дополнительная информация

литература по теме:

Похожие проекты

оптимизация алгоритма миграции (обработка сейсмоданных)
0