Logo icon

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

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

Назначение: быстрое умножение блочно-разряженных матриц

Проект состоял в разработке векторизованных реализаций матричного умножения для регистров  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
Дополнительная информация:

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

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

анализ энергопотребления открытых вычислительных пакетов при запуске их на кластере

научно-исследовательская разработка, предназначенная для построения имитационной модели одновременного функционирования нескольких десятков транспортных предприятий, включая терминальные центры